clickhouse: ClickHouse의 기본 SQL 방언prql: 파이프라인 기반 관계형 쿼리 언어 (PRQL)kusto: Kusto 쿼리 언어 (KQL)trino: Trino SQL
dialect 설정으로 제어됩니다.
표준 SQL
표준 SQL은 ClickHouse에서 기본으로 사용하는 쿼리 언어입니다.파이프라인 기반 관계형 쿼리 언어(PRQL)
PRQL을 활성화하려면:Kusto 쿼리 언어(KQL)
KQL을 활성화하려면:Query
Response
Trino SQL
Trino 방언을 활성화하려면 다음과 같이 하십시오:Query
Response
ARRAY[...] 리터럴, TRY_CAST, UNNEST(ARRAY JOIN으로 변환), ROW 생성자 및 타입, VALUES 테이블, LIMIT 앞에 오는 OFFSET, BETWEEN SYMMETRIC, 그리고 수백 개의 함수가 포함됩니다. 여기에는 두 시스템에 이름은 같지만 의미가 다른 함수도 포함됩니다(예를 들어 Trino의 length는 유니코드 코드 포인트를 세므로 lengthUTF8로 변환됩니다). Trino 함수 이름과 충돌하지 않는 ClickHouse 함수는 그대로 사용할 수 있으므로, 하나의 쿼리에서 두 함수 계열을 섞어 쓸 수 있습니다.
Trino의 JSON 값은 ClickHouse JSON 타입으로 매핑됩니다. JSON '...' 리터럴과 json_parse는 JSON으로의 형변환으로, json_format은 toJSONString으로 변환되며, 경로 함수(json_extract, json_extract_scalar, json_value, json_query, json_exists, json_size)는 이에 대응하는 ClickHouse 함수로 변환됩니다. ClickHouse JSON 타입은 객체를 저장하므로, 객체가 아닌 문서(최상위 배열 및 스칼라)는 JSON 값으로 구체화될 때 거부됩니다. 단, 경로 함수는 모든 JSON 텍스트를 허용합니다.
일부 Trino 의미는 변환된 쿼리 텍스트로 표현할 수 없어 대신 쿼리 Context에 적용됩니다. 즉, OUTER JOIN은 NULL을 생성하고(join_use_nulls), set operation은 Variant 대신 숫자 supertype을 사용하며(use_variant_as_common_type), 쿼리 분석기가 필요합니다(enable_analyzer). 쿼리에 명시적인 SETTINGS 절이 있으면 이 설정들보다 우선합니다.
쿼리 수준의 변환으로 해결할 수 없는 의미는 ClickHouse의 방식을 그대로 따릅니다. 대표적으로 나눗셈 연산자 /는 Trino에서는 정수 나눗셈을 수행하지만 ClickHouse에서는 부동소수점 나눗셈을 수행하며, round는 ClickHouse에서 Float 인수에 대해 은행가 rounding을 사용합니다.
쿼리가 어떻게 변환되는지 확인하려면 EXPLAIN SYNTAX를 사용하십시오.