Skip to main content

uniq

도입 버전: v1.1.0 인수의 서로 다른 값의 대략적인 개수를 계산합니다. 이 함수는 적응형 샘플링 알고리즘을 사용합니다. 계산 상태에는 최대 65536개의 요소 해시 값 샘플을 사용합니다. 이 알고리즘은 정확도가 매우 높고 CPU 효율도 매우 뛰어납니다. 쿼리에 이러한 함수가 여러 개 포함된 경우 uniq를 사용하는 속도는 다른 집계 함수를 사용하는 것과 거의 비슷합니다.
이 함수는 집계의 모든 매개변수에 대해 해시를 계산한 다음, 이를 계산에 사용합니다. 적응형 샘플링 알고리즘을 사용합니다. 계산 상태에는 최대 65536개의 요소 해시 값 샘플을 사용합니다. 이 알고리즘은 정확도가 매우 높고 CPU 효율도 매우 뛰어납니다. 쿼리에 이러한 함수가 여러 개 포함된 경우 uniq를 사용하는 속도는 다른 집계 함수를 사용하는 것과 거의 비슷합니다.샘플은 32비트 해시를 저장하므로 수십억 개를 넘는 값은 구분할 수 없습니다. 이를 보완하기 위해 전체 64비트 해시로 구성된, 대폭 솎아낸 작은 샘플을 추가로 유지하며(값 약 262144개당 해시 1개, 최대 16384개 해시), 약 20억 개 부근에서 추정값 계산이 이 샘플로 전환됩니다. 이를 통해 수천억 개 이상의 카디널리티에서도 추정값의 정확도가 약 1% 이내로 유지됩니다. 26.8보다 오래된 버전의 서버는 이러한 경우 쓸모없는 값을 반환했습니다(issue #6078). 해당 서버에서 기록된 상태에는 64비트 샘플이 없으므로, 이러한 상태와 머지하면 머지되어 들어온 값에 대해서는 32비트 정밀도만 유지됩니다.
거의 모든 경우에 다른 variant보다 이 함수를 사용하는 것을 권장합니다.
구문
인수 반환 값 서로 다른 값의 대략적인 개수를 나타내는 UInt64 타입의 숫자를 반환합니다. UInt64 예시 사용 예시
Query
Response
여러 개의 인수
Query
Response
관련 항목