Typy typesql#
typesql odzwierciedla fizyczne typy jeziora i dodaje typy złożone używane tylko w wyrażeniach. Typ opisuje wartość; nigdy jej nie zmienia.
Typy skalarne#
| Typ | Znaczenie |
|---|---|
boolean | true lub false |
integer | 64-bitowa liczba całkowita ze znakiem |
decimal(p, s) | Dokładna liczba dziesiętna o precyzji do 38 |
float | 64-bitowa wartość zmiennoprzecinkowa |
date | Data kalendarzowa |
datetime | Znacznik czasu bez przesunięcia, przechowywany z dokładnością do mikrosekundy |
datetimetz | Chwila, przechowywana z dokładnością do mikrosekundy |
string | Tekst UTF-8 |
json | JSON bez zadeklarowanej struktury |
binary | Wartość binarna przenoszona jako kanoniczny tekst base64 |
unknown oznacza, że moduł sprawdzający nie ma wystarczających dowodów. never reprezentuje ścieżkę, która nie może utworzyć wartości.
Możliwość wartości null#
Wartości jeziora mogą być null, chyba że katalog dostarczy aktualny dowód przeciwny. Końcowy znak ! wymaga wartości innej niż null:
select id satisfies string!
from titan.stripe.customers
where id is not nullPredykaty takie jak is not null zawężają wartości w prawidłowym zakresie przepływu. Rzutowanie nie dowodzi, że jego wynik jest różny od null.
Typy złożone#
Kolekcje używane w wyrażeniach mają postać list<T>, struct{field: T} i map<K, V>. Struktury tabel wskazują uporządkowane kolumny:
with customer_totals(customer_id: string!, revenue: decimal(18, 2)) as (
select customer, sum(amount) / 100.0
from titan.stripe.charges
group by customer
)
select * from customer_totalsJSON ze strukturą#
json<{...}> opisuje pola dostępne wewnątrz nośnika JSON, zachowując jego reprezentację w środowisku uruchomieniowym:
select metadata satisfies json<{campaign: string, cohort: string}>
from titan.stripe.customersPakiety struktur konektorów mogą dostarczać te struktury pod nazwami, aby nie trzeba było powtarzać ich w każdym zapytaniu.
Typy maskowane#
masked<T> zapisuje proweniencję polityki kolumn. Nie można jej usunąć rzutowaniem, porównać jak zwykłej wartości ani scalić z niemaskowaną gałęzią. Niepowodzenia używają TS0410 dla rzutowań, TS0411 dla porównań i TS0412 dla niebezpiecznego przepływu. Zgodne projekcje i union all zachowują otoczkę.