uniqHLL12

uniqHLL12

HyperLogLog 알고리즘을 사용해 서로 다른 인자 값의 개수를 근사 계산하는 집계 함수예요. 대부분의 경우에는 uniq이나 uniqCombined을 사용하는 게 좋아요.

출처: 문서

본문

uniqHLL12HyperLogLog 알고리즘을 사용해 서로 다른 인자 값의 개수를 근사 계산해요.

이 함수 사용은 권장하지 않아요. 대부분의 경우 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 │
└───────────────────────┘

더 알아보기 (Learn more)