[Snowflake] 추정 함수

차지예·2026년 6월 11일

Snowflake

목록 보기
39/49
post-thumbnail
추정 함수알고리즘대표 함수
Cardinality (고유값 개수)HyperLogLogAPPROX_COUNT_DISTINCT
Similarity (유사도)MinHashAPPROXIMATE_SIMILARITY
Frequency (빈도)Space-SavingAPPROX_TOP_K
Percentile (백분위)t-DigestAPPROX_PERCENTILE

암기법: "CHSFP" → CHe SoFt P

  • Cardinality–HyperLogLog
  • Similarity–MinHash
  • Frequency–Space-Saving
  • Percentile–t-Digest

⭐ 문제 체크포인트

✅ [1] "어떤 알고리즘?" 매칭 문제

Q. distinct 개수를 추정하는 알고리즘은? → HyperLogLog
Q. 유사도 추정 알고리즘은? → MinHash
Q. 빈번한 값 추정 알고리즘은? → Space-Saving
Q. 백분위 추정 알고리즘은? → t-Digest

✅ [2] HyperLogLog 오차 숫자

평균 상대 오차 = 1.62338% (이 숫자 그대로 출제됨)

✅ [3] 왜 추정 함수를 쓰나?

COUNT(DISTINCT)메모리가 카디널리티에 비례 → 대용량에서 느리고 비쌈
→ 근사 함수가 훨씬 빠름 (예: 44초 vs 4분 20초)

✅ [4] 유사도 2단계 프로세스

1단계 MINHASH() → 2단계 APPROXIMATE_SIMILARITY()
교집합/합집합 계산 없이 유사도를 구하는 게 핵심
출력값은 0~1 사이 (0=다름, 1=같음)

✅ [5] Jaccard 공식

J(A,B) = |A ∩ B| / |A ∪ B| (교집합 / 합집합)


📋 함수 패밀리

대부분 4종 세트: 기본 / _ACCUMULATE / _COMBINE / _ESTIMATE

추정함수들
CardinalityHLL + _ACCUMULATE/_COMBINE/_ESTIMATE + _EXPORT/_IMPORT (★6종)
FrequencyAPPROX_TOP_K 4종 세트
PercentileAPPROX_PERCENTILE 4종 세트
Similarity예외! MINHASH, MINHASH_COMBINE, APPROXIMATE_SIMILARITY

암기 포인트

  • HLL만 _EXPORT / _IMPORT 2개 더 있음 (BINARY ↔ OBJECT 변환)
  • Similarity만 패턴이 다름 (ACCUMULATE/ESTIMATE 없음)

💻 SQL 예시

-- Cardinality
SELECT APPROX_COUNT_DISTINCT(L_ORDERKEY) FROM LINEITEM;

-- Similarity (2단계)
SELECT APPROXIMATE_SIMILARITY(MH) FROM
  ((SELECT MINHASH(5, C_CUSTKEY) MH FROM CUSTOMER)
   UNION
   (SELECT MINHASH(5, O_CUSTKEY) MH FROM ORDERS));   -- 결과: 0.8

-- Frequency  → 출력: [값, 빈도]
SELECT APPROX_TOP_K(P_SIZE, 3, 100000) FROM PART;

-- Percentile → 0.8 = 80번째 백분위
SELECT APPROX_PERCENTILE(score, 0.8) FROM TEST_SCORES;

🎯 핵심 요약

  1. C–H, S–M, F–S, P–t (기능↔알고리즘) ← 제일 중요
  2. HyperLogLog 오차 = 1.62338%
  3. 유사도 = MINHASH → APPROXIMATE_SIMILARITY (2단계), 값 0~1
  4. 함수는 대부분 4종 세트, HLL만 6종
  5. 근사 함수 쓰는 이유 = 속도/메모리 절약

0개의 댓글