카테고리:

집계 함수 (빈도 추정) , 윈도우 함수

APPROX_TOP_K

공간 절약을 사용하여 입력에서 가장 빈번한 값의 근삿값과 해당 값의 대략적인 빈도를 반환합니다.

출력은 배열의 JSON 배열입니다. 내부 배열에서 첫 번째 항목은 입력의 값이고 두 번째 항목은 입력의 추정 빈도에 해당합니다. 외부 배열에는 빈도 내림차순으로 정렬된 k 항목이 포함됩니다.

APPROX_TOP_K에 대한 자세한 내용은 자주 나타나는 값 추정하기 를 참조하십시오.

참고 항목:

APPROX_TOP_K_ACCUMULATE , APPROX_TOP_K_COMBINE, APPROX_TOP_K_ESTIMATE

구문

집계 함수

APPROX_TOP_K( <expr> [ , <k> [ , <counters> ] ] )
Copy

윈도우 함수

APPROX_TOP_K( <expr> [ , <k> [ , <counters> ] ] ) OVER ( [ PARTITION BY <expr4> ] )
Copy

인자

  • expr: 가장 일반적인 값을 찾으려는 식(예: 열 이름)입니다.

  • k: 카운트를 근사화하려는 값의 수입니다. 예를 들어, 가장 일반적인 상위 10개 값을 보려면 k 를 10으로 설정합니다.

    k 를 생략하는 경우, 기본값은 1 입니다.

    최댓값은 100000 (100,000)이며 항목이 출력에 맞지 않으면 자동으로 줄어듭니다.

  • counters: 이는 추정 프로세스 동안 한 번에 추적할 수 있는 고유 값의 최대 수입니다. 예를 들어, counters 가 100000으로 설정된 경우, 알고리즘은 100,000개의 고유 값을 추적하여 100,000개의 가장 빈번한 값을 유지하려고 시도합니다.

    최대 counters 수는 100000 (100,000)입니다.

expr4

행을 파티션으로 그룹화하는 데 사용되는 선택적 식입니다.

사용법 노트

  • counters 수가 많을수록 근삿값이 더 정확하므로 대부분의 경우 countersk.보다 상당히 커야 합니다. (각 카운터는 적은 양의 메모리만 사용하므로 카운터 수를 늘리는 것은 메모리 측면에서 비용이 많이 들지 않습니다.)

  • 윈도우 함수로 사용되는 경우:

    • 이 함수는 다음을 지원하지 않습니다.

      • OVER() 절의 ORDER BY 하위 절.

      • 윈도우 프레임.

SELECT APPROX_TOP_K(C4) FROM lineitem;

--------------------+
 APPROX_TOP_K(C4,3) |
--------------------|
 [                  |
   [                |
     1,             |
     124923         |
   ],               |
   [                |
     2,             |
     107093         |
   ],               |
   [                |
     3,             |
     89315          |
   ]                |
 ]                  |
--------------------+
Copy
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 |
-------+-----------+
Copy