Skip to main content
이 문서는 데이터 웨어하우징 섹션의 일부입니다.

Databricks SQL의 고급 기능

Databricks SQL은 표준 SQL(ANSI SQL)을 지원하며, 추가로 분석에 유용한 고급 기능들을 제공합니다. 이 문서에서는 Databricks SQL만의 차별화된 기능과 고급 SQL 패턴을 살펴보겠습니다.
💡 Databricks SQL은 Apache Spark SQL을 기반 으로 하며, 여기에 파이프 구문, QUALIFY, SQL 스크립팅 등 생산성을 높이는 확장 기능을 더했습니다.

파이프 구문 (Pipe Syntax)

🆕 파이프 구문(|>) 은 SQL 쿼리를 위에서 아래로 순서대로 읽을 수 있게 해 주는 Databricks의 SQL 구문입니다. 전통 SQL에서는 실행 순서(FROM → WHERE → GROUP BY → SELECT)와 작성 순서(SELECT → FROM → WHERE)가 다르지만, 파이프 구문은 작성 순서 = 실행 순서 입니다.

전통 SQL vs 파이프 구문 비교

파이프 구문의 핵심 규칙

💡 파이프 구문의 장점: 쿼리가 길어질수록 전통 SQL은 읽기 어려워지지만, 파이프 구문은 데이터가 흐르는 순서대로 읽을 수 있어 가독성이 유지됩니다. 특히 여러 단계의 집계와 필터가 필요한 분석에서 효과적입니다.

CTE (Common Table Expression)

CTE는 WITH 절을 사용하여 쿼리 내에서 이름 붙은 임시 결과 집합 을 정의하는 기능입니다. 복잡한 쿼리를 논리적 단계로 나누어 가독성과 재사용성 을 높입니다.
⚠️ 재귀 CTE 주의사항: 무한 루프를 방지하기 위해 Databricks는 기본적으로 최대 재귀 깊이를 제한합니다. spark.sql.cte.maxRecursionDepth 설정으로 조정할 수 있습니다.

QUALIFY 절

💡 QUALIFY 는 윈도우 함수의 결과를 기준으로 행을 필터링하는 절입니다. 서브쿼리 없이 윈도우 함수 결과를 바로 필터링할 수 있어 쿼리가 훨씬 간결해집니다.

LATERAL VIEW / EXPLODE (반구조화 데이터)

배열(Array)이나 맵(Map) 같은 반구조화 데이터를 행으로 펼칠 때 사용합니다.

고급 집계: GROUPING SETS, CUBE, ROLLUP


JSON / 반구조화 데이터 처리

Databricks SQL은 JSON 데이터를 네이티브로 지원 합니다. 콜론(:) 구문으로 JSON 필드에 직접 접근할 수 있습니다.
💡 콜론(:) 구문의 장점: JSON 파싱 함수를 호출할 필요 없이, SQL 컬럼처럼 자연스럽게 JSON 필드에 접근할 수 있습니다. 중첩 필드는 점(.)으로, 배열 요소는 대괄호([])로 접근합니다.

상세 문서

각 기능별 심화 내용은 아래 문서를 참고하시기 바랍니다.

정리


참고 링크