다음을 통해 공유


approx_top_k 집계 함수

적용 대상: 예로 표시된 확인 Databricks SQL 예로 표시된 확인 Databricks Runtime 10.4 LTS 이상

대략적인 개수와 함께 expr에서 가장 자주 발생하는 상위 k 항목 값을 반환합니다.

구문

approx_top_k(expr[, k[, maxItemsTracked]]) [FILTER ( WHERE cond ) ]

이 함수는 OVER 절을 사용하여 창 함수로 호출할 수도 있습니다.

인수

  • expr: STRING, BOOLEAN, DATE, TIMESTAMP 또는 숫자 형식의 식입니다.
  • k: 0보다 큰 선택적 INTEGER 리터럴입니다. k를 지정하지 않으면 기본값은 5입니다.
  • maxItemsTracked: k보다 크거나 같은 선택적 INTEGER 리터럴입니다. maxItemsTracked를 지정하지 않으면 기본값은 10000입니다.
  • cond: 집계에 사용되는 행을 필터링하는 선택적 부울 식입니다.

반품

결과는 STRUCT 형식의 ARRAY로 반환되며, 여기서 각 STRUCT에는 값에 대한 item 필드(원래 입력 형식 포함) 및 대략적인 발생 횟수가 있는 count 필드(LONG 형식)가 포함됩니다. 배열은 count 내림차순으로 정렬됩니다.

집계 함수는 대략적인 개수와 함께 식 expr에서 가장 자주 발생하는 상위 k 항목 값을 반환합니다. 각 카운트의 오류는 최대 2.0 * numRows / maxItemsTracked일 수 있으며 여기서 numRows는 총 행 수입니다. maxItemsTracked 값이 높을수록 메모리 사용량이 증가하지만 더 나은 정확도를 제공합니다. 고유 항목이 maxItemsTracked개 미만인 식은 정확한 항목 수를 산출합니다. 결과에는 결과에 자체 항목으로 NULL 값이 포함됩니다.

예제

> SELECT approx_top_k(expr) FROM VALUES (0), (0), (1), (1), (2), (3), (4), (4) AS tab(expr);
 [{'item':4,'count':2},{'item':1,'count':2},{'item':0,'count':2},{'item':3,'count':1},{'item':2,'count':1}]

> SELECT approx_top_k(expr, 2) FROM VALUES 'a', 'b', 'c', 'c', 'c', 'c', 'd', 'd' AS tab(expr);
 [{'item':'c','count',4},{'item':'d','count':2}]

> SELECT approx_top_k(expr, 10, 100) FROM VALUES (0), (1), (1), (2), (2), (2) AS tab(expr);
 [{'item':2,'count':3},{'item':1,'count':2},{'item':0,'count':1}]