Sketch 함수
Sketch 함수 (Sketch Functions)
Apache Pinot의 근사 고유 개수(distinct count) 및 sketch 기반 집계 함수에 대한 레퍼런스 문서예요.
Pinot은 근사 고유 개수와 요약을 위한 여러 sketch 기반 알고리즘을 지원해요. 이 함수들은 소량의 정확도를 희생하는 대신, 대규모에서 상당한 메모리와 성능 절감을 얻습니다.
정확한 고유 개수가 필요하다면 DISTINCTCOUNT를 참고하세요.
고급 null 처리를 활성화하면, sketch 기반 고유 개수 함수는 일반 집계 및 group-by 쿼리에서 null 행을 건너뜁니다(단일 값, 다중 값, 딕셔너리 인코딩, 직렬화된 sketch 입력 모두 포함). 고급 null 처리가 없으면 컬럼에 설정된 기본 null 값이 sketch에 포함됩니다. 개수를 반환하는 변형은 기여하는 null이 아닌 행이 없을 때 0을 반환하고, raw 변형은 함수별로 정의된 빈 sketch 결과를 보존합니다.
출처: 문서
본문
CPC Sketch
압축 확률 계수(CPC) Sketch는 매우 공간 효율적인 카디널리티 추정을 가능하게 해요. 비슷한 정확도의 HLL sketch보다 약 40% 적은 공간을 사용합니다.
| 함수 | 설명 |
|---|---|
| DISTINCTCOUNTCPCSKETCH | CPC sketch를 사용한 근사 고유 개수 반환 |
| DISTINCTCOUNTRAWCPCSKETCH | raw CPC sketch를 hex 문자열로 반환 |
HyperLogLog Plus
HyperLogLogPlus(HLL++)는 구성 가능한 정밀도(p, sp 파라미터)로 근사 고유 개수를 제공해요.
| 함수 | 설명 |
|---|---|
| DISTINCTCOUNTHLLPLUS | HLL++를 사용한 근사 고유 개수 |
| DISTINCTCOUNTSMARTHLLPLUS | 정확한 개수로 시작하다 임계값 이후 HLL++로 전환 |
| DISTINCTCOUNTHLLPLUSMV | 다중 값 컬럼용 HLL++ |
| DISTINCTCOUNTRAWHLLPLUS | 직렬화된 HLL++ sketch 반환 |
| DISTINCTCOUNTRAWHLLPLUSMV | 다중 값 컬럼용 직렬화된 HLL++ sketch |
UltraLogLog
Dynatrace의 UltraLogLog Sketch는 HyperLogLog보다 공간을 덜 사용하고 더 단순하고 빠른 추정기를 제공해요. Hash4j로 구현되었습니다.
| 함수 | 설명 |
|---|---|
| DISTINCTCOUNTULL | ULL을 사용한 근사 고유 개수(기본 p=12) |
| DISTINCTCOUNTRAWULL | 직렬화된 ULL sketch 반환 |
Tuple Sketch
Tuple Sketch는 Theta Sketch를 확장해 항목별 추가 요약 값을 저장하므로, 노출수나 클릭수 같은 속성을 요약하기에 이상적이에요.
| 함수 | 설명 |
|---|---|
| DISTINCTCOUNTTUPLESKETCH | tuple sketch에서 고유 개수 |
| DISTINCTCOUNTRAWINTEGERSUMTUPLESKETCH | raw tuple sketch를 hex로 반환 |
| AVGVALUEINTEGERSUMTUPLESKETCH | 요약 값의 평균 |
| SUMVALUESINTEGERSUMTUPLESKETCH | 요약 값의 합 |
고급 null 처리를 활성화하면 정수 tuple sketch 집계는 sketch 컬럼이 null인 행을 건너뜁니다. 기여하는 sketch가 없으면 DISTINCTCOUNTTUPLESKETCH와 SUMVALUESINTEGERSUMTUPLESKETCH는 NULL을, DISTINCTCOUNTRAWINTEGERSUMTUPLESKETCH는 NULL을, AVGVALUEINTEGERSUMTUPLESKETCH는 NULL을 반환해요. 고급 null 처리가 없으면 Pinot은 컬럼의 기본 null 값을 집계하고 기존의 빈 sketch 정체성을 보존합니다.
Frequency Sketches
| 함수 | 설명 |
|---|---|
| FREQUENTLONGSSKETCH | long 값용 빈도 항목 sketch |
| FREQUENTSTRINGSSKETCH | string 값용 빈도 항목 sketch |
고급 null 처리를 활성화하면 frequency sketch 함수는 null 행을 건너뛰고 기여하는 값이 없으면 NULL을 반환해요. 고급 null 처리가 없으면 컬럼의 기본 null 값이 빈도 추정에 포함됩니다.