HISTOGRAM (Lakehouse v1)
“등높이” 버킷 전략을 사용하여 데이터 분포 히스토그램을 생성합니다.
Analyze 구문
섹션 제목: “Analyze 구문”func.histogram(<expr>)Analyze 예제
섹션 제목: “Analyze 예제”자세한 내용은 SQL 예제를 참조하십시오.
SQL 구문
섹션 제목: “SQL 구문”HISTOGRAM(<expr>)
-- The following two forms are equivalent:HISTOGRAM(<max_num_buckets>)(<expr>)HISTOGRAM(<expr> [, <max_num_buckets>])| 매개변수 | 설명 |
|---|---|
expr |
expr의 데이터 형식은 정렬할 수 있어야 합니다. |
max_num_buckets |
최대 버킷 수를 지정하는 선택적 양의 정수입니다. 기본값은 128입니다. |
반환 형식
섹션 제목: “반환 형식”빈 문자열 또는 다음 구조의 JSON 객체를 반환합니다.
- buckets: 상세 정보가 포함된 버킷 목록입니다.
- lower: 버킷의 하한입니다.
- upper: 버킷의 상한입니다.
- count: 버킷에 있는 요소의 개수입니다.
- pre_sum: 현재 버킷까지의 요소 누적 개수입니다.
- ndv: 버킷에 있는 고유 값의 개수입니다.
SQL 예제
섹션 제목: “SQL 예제”이 예제는 HISTOGRAM 함수가 histagg 테이블에 있는 c_int 값의 분포를 분석하여 버킷 경계, 고유 값 개수, 요소 개수, 누적 개수를 반환하는 방식을 보여 줍니다.
CREATE TABLE histagg ( c_id INT, c_tinyint TINYINT, c_smallint SMALLINT, c_int INT);
INSERT INTO histagg VALUES (1, 10, 20, 30), (1, 11, 21, 33), (1, 11, 12, 13), (2, 21, 22, 23), (2, 31, 32, 33), (2, 10, 20, 30);
SELECT HISTOGRAM(c_int) FROM histagg;
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐│ histogram(c_int) │├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤│ [{"lower":"13","upper":"13","ndv":1,"count":1,"pre_sum":0},{"lower":"23","upper":"23","ndv":1,"count":1,"pre_sum":1},{"lower":"30","upper":"30","ndv":1,"count":2,"pre_sum":2},{"lower":"33","upper":"33","ndv":1,"count":2,"pre_sum":4}] │└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘결과는 JSON 배열로 반환됩니다.
[ { "lower": "13", "upper": "13", "ndv": 1, "count": 1, "pre_sum": 0 }, { "lower": "23", "upper": "23", "ndv": 1, "count": 1, "pre_sum": 1 }, { "lower": "30", "upper": "30", "ndv": 1, "count": 2, "pre_sum": 2 }, { "lower": "33", "upper": "33", "ndv": 1, "count": 2, "pre_sum": 4 }]이 예제는 HISTOGRAM(2)가 c_int 값을 두 개의 버킷으로 그룹화하는 방식을 보여 줍니다.
SELECT HISTOGRAM(2)(c_int) FROM histagg;-- OrSELECT HISTOGRAM(c_int, 2) FROM histagg;
┌───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐│ histogram(2)(c_int) │├───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┤│ [{"lower":"13","upper":"30","ndv":3,"count":4,"pre_sum":0},{"lower":"33","upper":"33","ndv":1,"count":2,"pre_sum":4}] │└───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘결과는 JSON 배열로 반환됩니다.
[ { "lower": "13", "upper": "30", "ndv": 3, "count": 4, "pre_sum": 0 }, { "lower": "33", "upper": "33", "ndv": 1, "count": 2, "pre_sum": 4 }]