DISTINCTCOUNTULL
DISTINCTCOUNTULL
DISTINCTCOUNTULL 함수는 hash4j 라이브러리를 사용해 공간 효율적인 카디널리티 추정을 가능하게 하는 UltraLogLog sketch를 기반으로 근사 고유 개수를 반환해요. UltraLogLog는 HyperLogLog과 비슷한 정확도를 제공하면서도 메모리 사용을 줄이고 병합 연산을 더 빠르게 합니다.
정확한 고유 개수가 필요하다면 DISTINCTCOUNT를 참고하세요.
출처: 문서
본문
distinctCountULL(**<column>, <p>**) -> Long
column(필수): 집계할 컬럼 이름.p(선택): sketch가 사용하는 레지스터 수를 제어하는 정밀도 파라미터. 값이 높을수록 결과가 더 정확하지만 메모리를 더 사용해요. 기본은12.
입력 컬럼은 단일 값 또는 다중 값일 수 있어요. 다중 값 컬럼의 경우 Pinot은 각 행의 모든 값을 sketch에 추가합니다.
사용 예시
SELECT distinctCountULL(teamID) AS value
FROM baseballStats
| value |
|---|
| 150 |
SELECT distinctCountULL(teamID, 14) AS value
FROM baseballStats
| value |
|---|
| 150 |
관련 함수
| 함수 | 설명 |
|---|---|
| DISTINCTCOUNTULL | 추정 고유 개수를 Long으로 반환 |
| DISTINCTCOUNTRAWULL | 직렬화된 UltraLogLog sketch를 Base64 인코딩 문자열로 반환 |
| DISTINCTCOUNTSMARTULL | 저카디널리티에는 Set을 사용하고 임계값 초과 시 ULL로 전환하는 하이브리드 방식 |
DISTINCTCOUNTRAWULL
직렬화된 UltraLogLog sketch를 Base64 인코딩 문자열로 반환해요. 직렬화된 sketch는 역직렬화하여 다른 sketch와 병합해 테이블 간 다중 스테이지 집계를 수행할 수 있습니다.
시그니처
distinctCountRawULL(**<column>, <p>**) -> String
column(필수): 집계할 컬럼 이름.p(선택): 정밀도 파라미터. 기본은12.
사용 예시
SELECT distinctCountRawULL(teamID) AS sketchValue
FROM baseballStats
DISTINCTCOUNTSMARTULL
저카디널리티 데이터에 대해 HashSet을 사용한 정확한 집계로 시작하다가, 고유 값 수가 구성 가능한 임계값을 초과하면 자동으로 UltraLogLog 추정으로 전환하는 하이브리드 고유 개수 함수예요.
시그니처
distinctCountSmartULL(**<column>, <params>**) -> Integer
column(필수): 집계할 컬럼 이름.params(선택): 세미콜론으로 구분된 파라미터 문자열. 지원 키:threshold: 정확한 Set에서 ULL로 전환하기 전의 고유 값 수. 기본은100000. 0 이하 값을 지정하면 전환하지 않습니다.p: 전환 시 사용할 ULL 정밀도 파라미터. 기본은12.
사용 예시
SELECT distinctCountSmartULL(teamID) AS value
FROM baseballStats
SELECT distinctCountSmartULL(teamID, 'threshold=10000;p=14') AS value
FROM baseballStats
이 함수는 저카디널리티 컬럼과 고카디널리티 컬럼이 섞여 있을 때, 전자에는 정확한 개수를, 후자에는 효율적인 근사 개수를 얻고 싶은 경우 유용해요.