APPROX_TOP_K¶
공간 절약을 사용하여 입력에서 가장 빈번한 값의 근삿값과 해당 값의 대략적인 빈도를 반환합니다.
출력은 배열의 JSON 배열입니다. 내부 배열에서 첫 번째 항목은 입력의 값이고 두 번째 항목은 입력의 추정 빈도에 해당합니다. 외부 배열에는 빈도 내림차순으로 정렬된 k
항목이 포함됩니다.
APPROX_TOP_K에 대한 자세한 내용은 자주 나타나는 값 추정하기 를 참조하십시오.
구문¶
집계 함수
APPROX_TOP_K( <expr> [ , <k> [ , <counters> ] ] )
윈도우 함수
APPROX_TOP_K( <expr> [ , <k> [ , <counters> ] ] ) OVER ( [ PARTITION BY <expr4> ] )
인자¶
expr
: 가장 일반적인 값을 찾으려는 식(예: 열 이름)입니다.k
: 카운트를 근사화하려는 값의 수입니다. 예를 들어, 가장 일반적인 상위 10개 값을 보려면k
를 10으로 설정합니다.k
를 생략하는 경우, 기본값은1
입니다.최댓값은
100000
(100,000)이며 항목이 출력에 맞지 않으면 자동으로 줄어듭니다.counters
: 이는 추정 프로세스 동안 한 번에 추적할 수 있는 고유 값의 최대 수입니다. 예를 들어,counters
가 100000으로 설정된 경우, 알고리즘은 100,000개의 고유 값을 추적하여 100,000개의 가장 빈번한 값을 유지하려고 시도합니다.최대
counters
수는100000
(100,000)입니다.
expr4
행을 파티션으로 그룹화하는 데 사용되는 선택적 식입니다.
사용법 노트¶
counters
수가 많을수록 근삿값이 더 정확하므로 대부분의 경우counters
는k
.보다 상당히 커야 합니다. (각 카운터는 적은 양의 메모리만 사용하므로 카운터 수를 늘리는 것은 메모리 측면에서 비용이 많이 들지 않습니다.)
윈도우 함수로 사용되는 경우:
이 함수는 다음을 지원하지 않습니다.
OVER() 절의 ORDER BY 하위 절.
윈도우 프레임.
예¶
SELECT APPROX_TOP_K(C4) FROM lineitem;
--------------------+
APPROX_TOP_K(C4,3) |
--------------------|
[ |
[ |
1, |
124923 |
], |
[ |
2, |
107093 |
], |
[ |
3, |
89315 |
] |
] |
--------------------+
WITH states AS (
SELECT approx_top_k(C4, 3, 5) AS state
FROM lineitem
)
SELECT value[0]::INT AS value, value[1]::INT AS frequency
FROM states, LATERAL FLATTEN(state);
-------+-----------+
VALUE | FREQUENCY |
-------+-----------|
1 | 124923 |
2 | 107093 |
3 | 89438 |
-------+-----------+