DISTINCTCOUNTULL 함수

DISTINCTCOUNTULL 함수

Apache Pinot의 DISTINCTCOUNTULL 집계 함수는 Dynatrace의 UltraLogLog Sketch를 이용해 근사 고유 개수를 계산해요. UltraLogLog 스케치는 HyperLogLog의 변형으로, 일반적인 HyperLogLog 스케치의 많은 특성을 공유하면서도 더 적은 공간을 사용하고 더 단순하고 빠른 추정기를 제공해요.

출처: 문서

본문

Dynatrace의 UltraLogLog Sketch는 HyperLogLog의 변형으로 근사 고유 개수에 사용돼요. UltraLogLog 스케치는 일반적인 HyperLogLog 스케치와 많은 속성을 공유하지만 더 적은 공간을 요구하고 더 단순하고 빠른 추정기를 제공해요.

Pinot은 Apache 라이선스로 제공되는 Hash4j의 프로덕션 준비 Java 구현을 사용해요.

정확한 고유 개수를 원하면 DISTINCTCOUNT를 참고하세요.

시그니처

distinctCountULL(<ullSketchColumn>, <ullSketchPrecision>) -> Long

  • ullSketchColumn (필수): 집계할 컬럼 이름.
  • ullSketchPrecision (선택): 스케치의 크기와 정확도를 모두 제어하는 정밀도 파라미터 p. 제공하지 않으면 Helix 기본값이 사용돼요.

입력 컬럼은 단일값(single-value) 또는 멀티밸류(multi-value)일 수 있어요. 멀티밸류 컬럼의 경우 Pinot은 각 행의 모든 값을 스케치에 추가해요.

고급 null 처리를 켜면 Pinot은 null 행을 건너뛰어요. 고급 null 처리가 없으면 컬럼의 설정된 기본 null 값이 스케치에 포함돼요. 함수는 null이 아닌 행이 하나도 기여하지 않으면 0을 반환해요.

사용 예시

아래 예시는 Batch Quick Start를 기반으로 해요.

select distinctCountULL(teamID) AS value
from baseballStats 
value
150
select distinctCountULL(teamID, 14) AS value
from baseballStats 
value
149

더 알아보기 (Learn more)