Menu dokumentacji

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.

sql
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 = 1

Nazwy 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:

sql
select * exclude (metadata, _synced_at)
replace (lower(email) as email)
from titan.hubspot.contacts
where not _deleted

Listy 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.

sql
select try_cast(property_annual_revenue as decimal(18, 2)) as annual_revenue
from titan.hubspot.companies

Odrzucane 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.