uniqHLL12
도입 버전: v1.1.0
HyperLogLog 알고리즘을 사용하여 서로 다른 인수 값의 대략적인 개수를 계산합니다.
구현 세부 정보
이 함수는 집계의 모든 매개변수에 대해 해시를 계산한 다음, 이를 계산에 사용합니다. HyperLogLog 알고리즘을 사용해 서로 다른 인수 값의 개수를 근사합니다.
2^12개의 5비트 셀을 사용합니다. 상태 크기는 2.5 KB를 약간 초과합니다. 작은 데이터 세트(<10K 요소)에서는 결과가 그다지 정확하지 않습니다(오류는 최대 약 10%). 하지만 카디널리티가 높은 데이터 세트(10K-100M)에서는 결과가 상당히 정확하며, 최대 오류는 약 1.6%입니다. 100M부터는 추정 오류가 증가하며, 카디널리티가 매우 높은 데이터 세트(1B+ 요소)에서는 함수가 매우 부정확한 결과를 반환합니다.
결정적인 결과를 제공합니다(쿼리 처리 순서에 영향을 받지 않음).
구문
uniqHLL12(x[, ...])인수
x— 이 함수는 가변 개수의 인수를 받습니다.Tuple(T)또는Array(T)또는Date또는DateTime또는String또는(U)Int*또는Float*또는Decimal
반환 값
서로 다른 인수 값의 대략적인 개수를 나타내는 UInt64 타입의 숫자를 반환합니다. UInt64
예시
기본 사용법
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 │
└───────────────────────┘관련 항목