typesql#
typesql은 SQL에 어노테이션, 패키지, 타입 지정 함수, 정확한 진단을 추가합니다. 핵심 보장은 소거입니다. 타입 전용 구문을 제거해도 나머지 SQL은 같은 런타임 의미를 유지합니다.
typesql
with paid(customer_id: string!, revenue: decimal(18, 2)!) as (
select
customer satisfies string!,
sum(amount) / 100.0 satisfies decimal(18, 2)!
from titan.stripe.charges
where status = 'succeeded' and customer is not null
group by customer
)
select * from paid구조적으로 점진적인 타입 지정#
어노테이션이 하나도 없어도 유효합니다. 검사기는 레이크 카탈로그에서 가능한 내용을 추론하고, 알 수 없는 이름, 호환되지 않는 타입, 잘못된 함수 인수, 안전하지 않은 null 허용성, 패키지 실패를 안정적인 TS#### 코드로 보고합니다.
계약이 중요한 위치에 어노테이션을 추가하세요. satisfies는 형 변환 없이 표현식을 검사합니다. !는 null이 아니어야 한다는 조건을 기록합니다. 타입이 지정된 CTE 헤더는 SQL 문의 나머지 부분에 테이블 구조를 제공합니다.
런타임 분리#
어노테이션은 형 변환이나 필터가 되지 않습니다. import type은 완전히 소거됩니다. 진단이 발생한 문서를 통과시키기 위해 다른 쿼리로 바꾸지 않습니다.
변환하려면 런타임 cast를 사용하고, 검증하려면 typesql 구문을 사용하세요.
타입의 출처#
스키마 제공자는 레이크 열, 기본 키 근거, 시스템 열, JSON 구조, 정책 마스크의 출처 정보를 제공합니다. 콘텐츠가 고정된 패키지는 타입 검사 중 실제 소스가 없어도 이름 있는 구조와 함수 시그니처를 추가합니다.