cube
입력 레코드를 by 절에 지정한 그룹 필드의 모든 가능한 조합에 대해 집계합니다. SQL의 GROUP BY CUBE와 동일한 다차원 소계를 생성합니다.
명령어 속성
| 항목 | 설명 |
|---|---|
| 명령어 유형 | 가공 쿼리 |
| 필요 권한 | 없음 |
| 라이선스 사용량 | 해당 없음 |
| 병렬 실행 | 지원 |
| 분산 실행 | 분석 노드에서 실행 (reducer) |
문법
옵션
parallel=BOOL- 병렬 집계 사용 여부.
t또는f로 지정합니다. label=STR- 소계 및 총계 행에서 그룹 필드에 표시할 레이블 값. 지정하지 않으면
null로 표시됩니다.
대상
AGG_FUNC [as ALIAS], ...- 집계 함수와 선택적 별칭. 쉼표(
,)로 구분하여 여러 집계 함수를 지정할 수 있습니다.as키워드로 출력 필드 이름을 지정합니다. 단,percentile,median등 순서 기반 집계 함수와dc(고유 값 수) 함수는 지원하지 않습니다. by FIELD, ...- 그룹 기준 필드. 쉼표(
,)로 구분하여 여러 필드를 지정할 수 있습니다.cube명령어에서by절은 필수입니다.
출력 필드
그룹 필드와 집계 함수 결과 필드를 출력합니다. by 절에 지정한 필드가 먼저 출력되고, 집계 함수 결과가 이어서 출력됩니다. 출력은 그룹 필드 기준으로 정렬됩니다. 소계 및 총계 행에서는 집계 대상이 아닌 그룹 필드 값이 label 옵션에 지정한 값 또는 null로 표시됩니다.
오류 코드
파싱 오류
| 오류 코드 | 메시지 | 설명 |
|---|---|---|
| 21700 | 집계 함수를 입력하세요. | 집계 함수가 지정되지 않은 경우 |
| 21701 | 잘못된 쿼리 입니다. | by 절의 문법이 잘못된 경우 |
| 21702 | {function}은 지원하지 않는 함수입니다. | 존재하지 않는 집계 함수를 사용한 경우 |
| 21703 | {function} 함수를 생성할 수 없습니다. {msg} | 집계 함수 생성에 실패한 경우 |
| 21704 | grouping set command에는 BY절이 필요합니다. | by 절이 지정되지 않은 경우 |
| 21705 | rollup/cube에서는 {function} 함수를 지원하지 않습니다. | 순서 기반 집계 함수 또는 dc 함수를 사용한 경우 |
런타임 오류
해당 사항 없음
설명
cube 명령어는 입력 레코드를 by 절에 지정한 필드 기준으로 그룹화하고, 모든 가능한 필드 조합에 대해 집계 함수를 적용합니다. rollup 명령어가 계층적 소계만 생성하는 것과 달리, cube는 모든 차원의 조합에 대한 소계를 생성합니다.
예를 들어 by a, b 절이 지정된 경우, 다음 4가지 수준의 집계를 출력합니다:
a,b조합별 집계 (상세)a별 집계 (소계)b별 집계 (소계)- 전체 집계 (총계)
rollup은 a별 소계와 총계만 출력하지만, cube는 b별 소계도 추가로 출력합니다. 그룹 필드가 N개일 때 cube는 2^N가지 조합의 집계를 생성합니다.
소계 및 총계 행에서 집계 대상이 아닌 그룹 필드 값은 label 옵션으로 지정한 문자열 또는 null로 채워집니다. 출력은 그룹 필드 값을 기준으로 정렬됩니다.
분산 환경에서는 분석 노드에서 최종 집계를 수행합니다.
cube 명령어는 입력 레코드를 처리하는 동안 메모리 내 버퍼에 집계 결과를 누적합니다. 버퍼 크기 기본값은 100,000건이며, 이 임계값을 초과하면 중간 집계 결과를 디스크에 플러시합니다. 이 값은 시스템 프로퍼티 araqne.logdb.aggregate_flush_size로 변경할 수 있습니다. 또한 그룹 필드가 N개일 때 2^N가지 집계 조합을 생성하므로, 그룹 필드 수가 많아질수록 처리량과 메모리 사용량이 급격히 증가합니다.
사용 예
이 사용 예에서 조회하는 WEB_APACHE_SAMPLE 테이블을 준비하려면 쿼리 실습용 데이터를 참고하세요.
-
두 필드의 모든 조합별 집계
table WEB_APACHE_SAMPLE | cube count, sum(bytes) as total_bytes by method, statusmethod와status의 모든 조합별 집계,method별 소계,status별 소계, 전체 총계를 출력합니다. -
레이블을 지정한 다차원 집계
table WEB_APACHE_SAMPLE | eval day = string(_time, "yyyy-MM-dd") | cube label="TOTAL" count by day, method날짜와 HTTP 메서드의 모든 조합별 건수를 집계합니다. 소계 및 총계 행에서 집계 대상이 아닌 그룹 필드에
TOTAL이 표시됩니다. -
여러 집계 함수와 함께 사용
table WEB_APACHE_SAMPLE | cube label="ALL" count, sum(bytes) as total_bytes, avg(bytes) as avg_bytes by method, statusmethod와status의 모든 조합에 대해 건수, 전송 바이트 합계, 평균을 집계합니다. 소계 및 총계 행의 그룹 필드에ALL이 표시됩니다.
호환성
cube 명령어는 소나 4.0 이전 버전부터 제공되었습니다.