집계 함수
집계 함수 (Aggregation Functions)
집계 함수는 행 그룹에 대해 단일 결과를 반환해요. 아래 페이지는 각 함수에 대한 상세 시그니처, 사용 예시, 참고 사항을 제공해요.
출처: 문서
본문
기본 집계
| Function | Description |
|---|---|
| COUNT | 행 수 |
| SUM / SUMMV | 값의 합 |
| MIN / MINMV | 최소값 |
| MAX / MAXMV | 최대값 |
| AVG / AVGMV | 값의 평균 |
| MODE | 가장 빈번한 값 |
| HISTOGRAM | 값의 히스토그램 |
| SUMPRECISION | BigDecimal을 사용한 고정밀 합 |
| ANYVALUE | 그룹의 임의의 비-null 값 |
| BOOLAND / BOOLOR | 불리언 값에 대한 논리 AND/OR |
배열 및 문자열 집계
| Function | Description |
|---|---|
| ARRAYAGG | 값을 배열로 수집 |
| LISTAGG | 값을 구분된 문자열로 연결 |
| SUMARRAYLONG | long 배열의 요소별 합 |
| SUMARRAYDOUBLE | double 배열의 요소별 합 |
통계 함수
| Function | Description |
|---|---|
| SKEWNESS | 분포의 비대칭도 |
| KURTOSIS | 분포의 첨도 |
| DISTINCTSUM / DISTINCTAVG | 고유 값의 합/평균 |
| EXPRMIN / EXPRMAX | min/max 측정을 가진 행의 컬럼 프로젝션 |
| ARG_MIN / ARG_MAX | min/max 측정을 가진 행의 컬럼 프로젝트 |
집합 및 스케치 함수
| Function | Description |
|---|---|
| IDSET | 효율적 필터링을 위한 IdSet 구축 |
스케치 기반 함수(FrequentItems, CPC, HLL+, ULL, Tuple)는 Sketch Functions를 참조하고, 퍼널 분석 함수는 Funnel Functions를 참조하세요.
고유 카운트 (Distinct Counting)
| Function | Description |
|---|---|
| DISTINCT | 정확한 고유 값 |
| DISTINCTCOUNT | 정확한 고유 카운트 |
| DISTINCTCOUNTBITMAP | bitmap을 사용한 고유 카운트 |
| DISTINCTCOUNTHLL | HLL을 사용한 근사 고유 카운트 |
| DISTINCTCOUNTTHETASKETCH | Theta sketch를 사용한 고유 카운트 |
| DISTINCTCOUNTSMARTHLL | 하이브리드 정확/HLL 고유 카운트 |
스케치 기반 고유 카운트 함수(CPC, HLL+, ULL, Tuple)는 Sketch Functions를 참조하세요.
백분위 함수
| Function | Description |
|---|---|
| PERCENTILE | 정확한 백분위 |
| PERCENTILEEST | 추정 백분위 |
| PERCENTILEKLL | KLL sketch를 사용한 백분위 |
| PERCENTILETDIGEST | T-Digest를 사용한 백분위 |
Window 관련 함수
| Function | Description |
|---|---|
| FIRST_VALUE / LAST_VALUE | 창의 첫/마지막 값 |
| LEAD / LAG | 후속/선행 행 접근 |
| FIRSTWITHTIME / LASTWITHTIME | 시간 기준 첫/마지막 값 |
Multi-Value 컬럼 함수
다음 집계 함수는 multi-value 컬럼에 사용할 수 있어요.
| Function | Description |
|---|---|
| COUNTMV | multi-value 컬럼의 개수를 반환 |
| MINMV | 숫자 multi-value 컬럼의 최소값 반환 |
| MAXMV | 숫자 multi-value 컬럼의 최대값 반환 |
| SUMMV | 숫자 multi-value 컬럼 값의 합 반환 |
| AVGMV | 숫자 multi-value 컬럼 값의 평균 반환 |
| MINMAXRANGEMV | 숫자 multi-value 컬럼의 max - min 값 반환 |
| PERCENTILEMV | 숫자 multi-value 컬럼의 N번째 백분위 반환 |
| PERCENTILEESTMV | multi-value 컬럼에 대해 Quantile Digest를 사용해 N번째 백분위 반환 |
| PERCENTILETDIGESTMV | multi-value 컬럼에 대해 T-Digest를 사용해 N번째 백분위 반환 |
| DISTINCTCOUNTMV | multi-value 컬럼의 고유 값 개수 반환 |
| DISTINCTCOUNTBITMAPMV | multi-value 컬럼에 대해 bitmap을 사용해 고유 값 개수 반환 |
| DISTINCTCOUNTHLLMV | multi-value 컬럼에 대해 HLL을 사용해 근사 고유 개수 반환 |
| DISTINCTCOUNTRAWHLLMV | multi-value 컬럼에 대해 HyperLogLog 응답을 문자열로 직렬화해 반환 |
| DISTINCTSUMMV | 숫자 multi-value 컬럼 고유 값의 합 반환 |
| DISTINCTAVGMV | 숫자 multi-value 컬럼 고유 값의 평균 반환 |
스케치 기반 multi-value 함수(HLL+)는 Sketch Functions를 참조하세요.
집계의 FILTER 절
Pinot는 집계 쿼리에서 FILTER 절을 지원해요.
SELECT SUM(COL1) FILTER (WHERE COL2 > 300),
AVG(COL2) FILTER (WHERE COL2 < 50)
FROM MyTable WHERE COL3 > 50
위 쿼리에서 COL1은 COL2 > 300 and COL3 > 50인 행에 대해서만 집계돼요. 마찬가지로 COL2는 COL2 < 50 and COL3 > 50인 곳에서 집계돼요.
NULL Value Support가 활성화되면 집계를 수행하는 동안 null 값을 필터링할 수 있어요.
SELECT SUM(COL1) FILTER (WHERE COL1 IS NOT NULL)
FROM MyTable WHERE COL3 > 50
더 이상 사용되지 않는 함수
| Function | Description |
|---|---|
| FASTHLL | 직렬화된 HyperLogLog를 String 형식으로 저장. BYTES 형식의 직렬화된 HyperLogLog를 지원하는 DISTINCTCOUNTHLL보다 성능이 낮음. |
| FASTHLLMV | FASTHLL의 multi-value 버전. 역시 DISTINCTCOUNTHLL을 위해 deprecated. |
다음 단계
- 스케치 기반 함수는 Sketch Functions를 참조하세요.
- 퍼널 분석 함수는 Funnel Functions을 참조하세요.