uniqCombined64
uniqCombined64
도입 버전: v20.1
서로 다른 인수 값의 개수를 근사치로 계산합니다.
uniqCombined와 동일하지만, String 데이터 타입에만 64비트 해시를 사용하는 대신 모든 데이터 타입에 대해 64비트 해시를 사용합니다.
이 함수는 결과가 결정적입니다(쿼리 처리 순서에 의존하지 않습니다).
참고
모든 타입에 64비트 해시를 사용하므로, String이 아닌 타입에 32비트 해시를 사용하는 uniqCombined와 달리, UINT_MAX보다 훨씬 큰 카디널리티에서 매우 큰 오차가 발생하지 않습니다.
uniq 함수와 비교하면, uniqCombined64 함수는 다음과 같은 특징이 있습니다:
- 메모리를 몇 배 더 적게 사용합니다
- 몇 배 더 높은 정확도로 계산합니다
Details
구현 세부 사항
이 함수는 집계의 모든 인자에 대해 64비트 해시를 계산한 뒤, 이를 사용하여 계산을 수행합니다. 배열, 해시 테이블, HyperLogLog 세 가지 알고리즘을 조합하며, 오류 보정 테이블을 함께 사용합니다:- 서로 다른 원소의 수가 적을 때는 배열을 사용합니다
- 집합 크기가 더 커지면 해시 테이블을 사용합니다
- 더 많은 원소에 대해서는 HyperLogLog를 사용하며, 이는 고정된 양의 메모리를 점유합니다
문법
매개변수
HLL_precision— 선택 매개변수입니다. HyperLogLog에서 셀 개수의 2를 밑으로 하는 로그 값입니다. 기본값은 17이며, 이는 실질적으로 96 KiB 공간입니다(2^17개 셀, 각 6비트). 범위: [12, 20].UInt8
인수
x— 가변 개수의 매개변수입니다.Tuple(T)또는Array(T)또는Date또는DateTime또는String또는(U)Int*또는Float*또는Decimal
반환 값
서로 다른 인수 값의 대략적인 개수를 나타내는 UInt64 타입 숫자를 반환합니다. UInt64
예시
대규모 데이터셋 예시
uniqCombined와 비교
함께 보기