SQL#
Supernova przyjmuje dialekt SQL tylko do odczytu oparty na DuckDB 1.4-LTS. Odwołuj się do tabel jeziora jako titan.<schema>.<table> lub <schema>.<table>; obie formy są rozwiązywane w jeziorze organizacji.
with ranked as (
select
customer,
amount,
row_number() over (partition by customer order by created_at desc) as recency
from titan.stripe.charges
where status = 'succeeded' and not _deleted
)
select * exclude (recency)
from ranked
qualify recency = 1Nazwy i zakres#
titan jest aliasem katalogu, a nie fizycznym identyfikatorem jeziora. Identyfikatorów fizycznych nie można wpisywać w tekście zapytania. Jednoczęściowe nazwy relacji są rozwiązywane wyłącznie do CTE i aliasów w zakresie.
Używaj podwójnych cudzysłowów dla identyfikatorów zawierających spacje lub kolidujących ze słowami kluczowymi. Literały tekstowe używają apostrofów.
Obsługiwana postać zapytania#
Podstawowy zestaw obejmuje CTE, złączenia wewnętrzne i zewnętrzne, using, funkcje okna, qualify, union all, union all by name, distinct, order by, limit i offset. Modyfikatory gwiazdki ułatwiają pracę z szerokimi tabelami źródłowymi:
select * exclude (metadata, _synced_at)
replace (lower(email) as email)
from titan.hubspot.contacts
where not _deletedListy używają indeksów od 1. JSON obsługuje -> i ->> z kluczami, indeksami i ścieżkami JSON. Funkcje list wyższego rzędu przyjmują formy x -> expression i lambda x: expression.
Przydatne funkcje wbudowane to między innymi date_trunc, strftime, strptime, date_diff, epoch_ms, split_part, regexp_extract, regexp_replace, string_agg, json_extract, unnest, generate_series i list_aggregate.
Rzutowania i wartości null#
cast(value as type) kończy się błędem, gdy konwersja jest niemożliwa. try_cast(value as type) zwraca dla tego wiersza wartość null. is not distinct from zapewnia równość bezpieczną dla null.
select try_cast(property_annual_revenue as decimal(18, 2)) as annual_revenue
from titan.hubspot.companiesOdrzucane instrukcje#
Zapytania nie mogą zmieniać stanu jeziora. insert, update, delete, merge, drop, alter, truncate, attach, copy, install, load, instrukcje transakcji i instrukcje create inne niż makra zwracają błąd możliwości, który wskazuje odrzuconą konstrukcję.
Dialekt odrzuca też procedury składowane, typy przestrzenne, katalogi zewnętrzne i automatyczne wykrywanie plików. Do pozyskiwania danych użyj źródła, do trwałej tabeli pochodnej — modelu, a do zapisu w miejscu docelowym — wysyłki.