카테고리:

집계 함수 (Frequency Estimation) , 윈도우 함수

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;
Copy
+--------------------+
| 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);
Copy
+-------+-----------+
| VALUE | FREQUENCY |
+-------+-----------+
|     1 |    124923 |
|     2 |    107093 |
|     3 |     89438 |
+-------+-----------+