문서 메뉴

typesql 타입#

typesql은 레이크의 물리적 타입을 반영하고 표현식 전용 복합 타입을 추가합니다. 타입은 값을 설명하며 그 값을 바꾸지 않습니다.

스칼라 타입#

타입의미
booleantrue 또는 false
integer부호 있는 64비트 정수
decimal(p, s)최대 정밀도 38의 정확한 십진수
float64비트 부동소수점 값
date달력 날짜
datetime오프셋 없는 타임스탬프. 마이크로초 정밀도로 저장
datetimetz특정 시점. 마이크로초 정밀도로 저장
stringUTF-8 텍스트
json구조가 선언되지 않은 JSON
binary표준 base64 텍스트로 전달되는 이진 값

unknown은 검사기에 근거가 충분하지 않음을 뜻합니다. never는 값을 생성할 수 없는 경로를 나타냅니다.

null 허용성#

카탈로그가 현재 유효한 반대 근거를 제공하지 않으면 레이크 값은 null을 허용합니다. 뒤에 붙는 !는 null이 아닌 값을 요구합니다.

typesql
select id satisfies string!
from titan.stripe.customers
where id is not null

is not null 같은 조건은 유효한 흐름 범위 안에서 값의 타입을 좁힙니다. 형 변환만으로는 결과가 null이 아님을 입증하지 못합니다.

복합 타입#

표현식에서 사용하는 컬렉션은 list<T>, struct{field: T}, map<K, V>를 사용합니다. 테이블 구조는 순서가 있는 열에 이름을 붙입니다.

typesql
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_totals

구조가 지정된 JSON#

json<{...}>은 런타임 표현을 유지하면서 JSON 값 안에서 사용할 수 있는 필드를 설명합니다.

typesql
select metadata satisfies json<{campaign: string, cohort: string}>
from titan.stripe.customers

커넥터 구조 패키지는 이러한 구조를 이름으로 제공할 수 있으므로 쿼리마다 반복할 필요가 없습니다.

마스킹 타입#

masked<T>는 열 정책의 출처 정보를 기록합니다. 형 변환으로 제거하거나 일반 값처럼 비교하거나 마스킹되지 않은 분기와 합칠 수 없습니다. 실패 시 형 변환은 TS0410, 비교는 TS0411, 안전하지 않은 흐름은 TS0412를 사용합니다. 호환되는 투영과 union all은 래퍼를 유지합니다.