Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.sifi.life/llms.txt

Use this file to discover all available pages before exploring further.

작성자: Databricks SQL Engine 팀 | 2026년 4월 29일 원문: https://www.databricks.com/blog/approximate-answers-exact-decisions-new-sketch-functions-analytics
참고 요약
  • Apache DataSketches 기반의 4가지 새 함수 패밀리: KLL Quantile, Theta, Approximate Top-K, Tuple Sketches가 Databricks SQL에 도입되어 대규모 데이터셋에서 빠른 근사 계산을 가능하게 합니다.
  • 밀리초 단위 분위수와 마이크로초 단위 집합 연산: 글로벌 정렬과 클러스터 셔플 없이 P50/P90/P99, distinct 카운트, 실시간 트렌딩을 계산합니다.
  • Sketch 머지로 점진적 갱신: 미리 계산된 sketch를 저장·병합할 수 있어 배치 잡을 라이브 리더보드와 점진적 대시보드로 변환할 수 있습니다.

분석 쿼리의 상당 부분은 정확한 답이 아닌 신뢰할 수 있는 근사 답으로 충분합니다. 대시보드, 트렌드 분석, 마케팅 어트리뷰션 같은 의사결정 지원(decision-support) 쿼리는 1~2% 오차가 결과에 영향을 주지 않습니다. 그런데도 정확 계산을 강제하면 클러스터 자원을 수십 배 소모합니다. Databricks는 이 영역을 정조준하여 Apache DataSketches 기반의 sketch 함수 4종을 SQL에 도입했습니다.

1. KLL Quantile Sketches — 분위수를 밀리초에

대규모 데이터셋에서 P50, P90, P99 같은 백분위를 계산하려면 전통적으로 글로벌 정렬이 필요합니다. 수십억 건에 대한 정렬은 클러스터를 점령하고 분 단위 시간을 소비합니다. KLL sketch는 다른 접근을 취합니다:
  • 밀리초 단위로 분위수 계산 (분 단위 글로벌 정렬 없이)
  • bounded memory — 데이터가 100배 늘어도 메모리 사용은 거의 일정
  • 점진적 갱신 — sketch를 저장하고 새 데이터의 sketch와 머지해 원본 데이터를 다시 스캔하지 않음
  • 상대 오차 1~2% 수준

예시 사용

-- KLL sketch 생성
SELECT approx_percentile_kll(latency_ms, 0.99) AS p99
FROM api_logs
WHERE event_date >= current_date() - 7;

-- 점진적 머지 패턴
INSERT INTO daily_latency_sketches
SELECT date_trunc('day', event_time) AS day,
       sketch_kll(latency_ms) AS sketch
FROM api_logs
GROUP BY 1;

2. Theta Sketches — Distinct 값에 대한 집합 연산

distinct 사용자, distinct 이벤트 같은 카디널리티 계산에 더해, sketch끼리의 집합 연산(union, intersection, difference)을 지원합니다. 마케팅 캠페인의 오디언스 오버랩 분석에 이상적입니다. 핵심 차이:
“기존에는 클러스터 셔플이 필요했던 집합 연산이 마이크로초 단위로 로컬에서 일어납니다.”

예시 사용

-- 캠페인 A와 B의 오디언스 오버랩
SELECT 
  theta_intersection(sketch_a, sketch_b) AS overlap_count,
  theta_union(sketch_a, sketch_b) AS total_reach,
  theta_difference(sketch_a, sketch_b) AS only_in_a
FROM campaigns;

3. Approximate Top-K — 실시간 트렌딩

가장 빈번한 항목 K개를 bounded memory로 식별합니다. 이전에는 전체 카운트 후 정렬이 필요했지만, Top-K sketch는 일정한 메모리로 같은 작업을 수행합니다. 핵심 가치:
“원본 이벤트 데이터를 다시 처리하지 않고 실시간 트렌딩이 가능합니다.”
미리 계산된 sketch들을 머지하면 배치 잡을 라이브 리더보드로 변환할 수 있습니다.

예시 사용

-- 시간대별 인기 검색어 Top-100
SELECT approx_top_k(search_query, 100) AS top_searches
FROM search_logs
WHERE event_time >= current_timestamp() - INTERVAL 1 HOUR;

4. Tuple Sketches — Distinct + 집계 메트릭

distinct 카운트와 집계 메트릭(sum, min, max)을 하나의 패스로 결합합니다. 카디널리티와 매출 어트리뷰션을 한 번에 계산하는 시나리오에 적합합니다.
-- 채널별 distinct 사용자 수와 총 매출을 하나의 패스로
SELECT 
  channel,
  tuple_sketch_distinct(user_id) AS distinct_users,
  tuple_sketch_sum(revenue) AS total_revenue
FROM transactions
GROUP BY channel;

왜 중요한가

이 함수들의 공통점은 의사결정에 필요한 정확도와, 그 정확도를 얻기 위한 비용 사이의 균형을 다시 잡는다는 것입니다. 대시보드는 P99가 50.0ms인지 50.2ms인지 알 필요가 없습니다. 마케터는 오디언스 오버랩이 정확히 1,234,567명인지가 아니라 “약 백만 명 정도”임을 알면 결정을 내릴 수 있습니다. Sketch 함수는 이런 종류의 결정에 대해 수십 배에서 수백 배의 컴퓨트 절감을 가져옵니다.

시작하기

새 sketch 함수는 Databricks SQL과 Photon-enabled 클러스터에서 사용 가능합니다. 자세한 함수 시그니처와 정확도 보장은 Databricks SQL 함수 레퍼런스를 참고하세요.