최종 수정: 에
TOPN_ARRAY
설명
TOPN_ARRAY는 지정된 열에서 가장 자주 나타나는 값 N개를 배열로 반환합니다. 근사 계산 함수이며, 빈도수를 기준으로 내림차순으로 정렬된 결과를 반환합니다.
구문
TOPN_ARRAY(<expr>, <top_num> [, <space_expand_rate>])
매개변수
| 매개변수 | 설명 |
|---|---|
<expr> | 빈도수를 집계할 열 또는 표현식입니다. 지원하는 타입: Boolean (Doris 4.1 계열에서는 4.1.5부터 지원), TinyInt, SmallInt, Integer, BigInt, LargeInt, Float, Double, Decimal, Date, Datetime, TimestampNs, Timestamptz, IPV4, IPV6, UUID, String. |
<top_num> | 반환할 최빈값의 개수입니다. 양의 INT 상수여야 합니다. |
<space_expand_rate> | 선택적 INT 상수이며, 기본값은 50입니다. 양수이면 중간 상태를 직렬화할 때 최대 top_num * space_expand_rate개의 후보를 유지하며, 값이 클수록 일반적으로 정확도가 높아집니다. 이 값은 로컬 집계 메모리의 엄격한 상한을 의미하지 않습니다. Doris 4.1 계열에서는 4.1.5부터 값이 0 이하이면 중간 후보를 모두 유지하지만, 최종 결과에는 여전히 최대 top_num개의 값만 포함됩니다. 이 모드는 메모리를 더 많이 사용할 수 있으며, 여전히 쿼리 메모리 제한이 적용됩니다. |
반환값
가장 자주 나타나는 값 N개를 포함하는 배열을 반환합니다. 그룹에 유효한 데이터가 없으면 NULL을 반환합니다.
예제
-- setup
CREATE TABLE page_visits (
page_id INT,
user_id INT,
visit_date DATE
) DISTRIBUTED BY HASH(page_id)
PROPERTIES (
"replication_num" = "1"
);
INSERT INTO page_visits VALUES
(1, 101, '2024-01-01'),
(2, 102, '2024-01-01'),
(1, 103, '2024-01-01'),
(3, 101, '2024-01-01'),
(1, 104, '2024-01-01'),
(2, 105, '2024-01-01'),
(1, 106, '2024-01-01'),
(4, 107, '2024-01-01');
SELECT TOPN_ARRAY(page_id, 3) as top_pages
FROM page_visits;
방문 횟수가 가장 많은 상위 3개 페이지를 찾습니다.
+-----------+
| top_pages |
+-----------+
| [1, 2, 4] |
+-----------+
SELECT TOPN_ARRAY(page_id, 3) as top_pages FROM page_visits where page_id is null;
+-----------+
| top_pages |
+-----------+
| NULL |
+-----------+
BOOLEAN 입력(Doris 4.1 계열에서는 4.1.5부터 지원):
SELECT TOPN_ARRAY(TRUE, 2), TOPN_ARRAY(CAST(NULL AS BOOLEAN), 2);
[1] NULL