uniqHLL12
uniqHLL12
HyperLogLog 알고리즘을 사용해 서로 다른 인자 값의 개수를 근사 계산하는 집계 함수예요. 대부분의 경우에는 uniq이나 uniqCombined을 사용하는 게 좋아요.
출처: 문서
본문
uniqHLL12은 HyperLogLog 알고리즘을 사용해 서로 다른 인자 값의 개수를 근사 계산해요.
이 함수 사용은 권장하지 않아요. 대부분의 경우 uniq 또는 uniqCombined 함수를 사용하는 게 좋아요.
구현 세부 사항
이 함수는 집계의 모든 인자에 대한 해시를 계산한 다음 이를 계산에 사용해요. HyperLogLog 알고리즘을 사용해 서로 다른 인자 값의 개수를 근사해요. 2^12개의 5비트 셀을 사용해요. 상태 크기는 2.5KB보다 약간 더 커요. 작은 데이터 집합(<1만 요소)에서는 결과가 그리 정확하지 않아요(최대 10% 오차). 그러나 고카디널리티 데이터 집합(1만1억)에서는 최대 ~1.6% 오차로 상당히 정확해요. 1억부터 추정 오차가 증가하며, 극도로 높은 카디널리티(10억+ 요소) 데이터 집합에서는 매우 부정확한 결과를 반환해요. 결정적인 결과를 제공해요(쿼리 처리 순서에 의존하지 않아요).
구문 (Syntax)
uniqHLL12(x[, ...])
인자 (Arguments)
반환 값 (Returned value)
서로 다른 인자 값의 근사 개수를 나타내는 UInt64 타입 숫자. UInt64
예제 (Examples)
기본 사용
쿼리:
CREATE TABLE example_hll
(
id UInt32,
category String
)
ENGINE = Memory;
INSERT INTO example_hll VALUES
(1, 'A'), (2, 'B'), (3, 'A'), (4, 'C'), (5, 'B'), (6, 'A');
SELECT uniqHLL12(category) AS hll_unique_categories
FROM example_hll;
응답:
┌─hll_unique_categories─┐
│ 3 │
└───────────────────────┘