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

이 함수는 저카디널리티 컬럼과 고카디널리티 컬럼이 섞여 있을 때, 전자에는 정확한 개수를, 후자에는 효율적인 근사 개수를 얻고 싶은 경우 유용해요.

더 알아보기 (Learn more)