Partilhar via


approx_top_k função agregar

Aplica-se a: Marque Sim Databricks SQL Marque Sim Databricks Runtime 10.4 LTS e superior

Devolve os principais k valores de item que ocorrem com mais frequência em um expr juntamente com suas contagens aproximadas.

Sintaxe

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

Esta função também pode ser invocada como uma função de janela usando a OVER cláusula.

Argumentos

  • expr: Uma expressão de STRING, BOOLEANO, DATA, CARIMBO DE DATA/HORA ou tipo numérico.
  • k: Um literal inteiro opcional maior que 0. Se k não for especificado, o padrão será 5.
  • maxItemsTracked: Um literal inteiro opcional maior ou igual a k. Se maxItemsTracked não for especificado, o padrão será 10000.
  • cond: Uma expressão booleana opcional filtrando as linhas usadas para agregação.

Devoluções

Os resultados são retornados como uma ARRAY do tipo STRUCT, onde cada STRUCT contém um item campo para o valor (com seu tipo de entrada original) e um count campo (do tipo LONG) com o número aproximado de ocorrências. A matriz é classificada por count decrescente.

A função de agregação retorna os principais valores de k item que ocorrem com mais freqüência em uma expressão expr , juntamente com suas contagens aproximadas. O erro em cada contagem pode ser até 2.0 * numRows / maxItemsTracked onde numRows está o número total de linhas. Valores mais altos de maxItemsTracked fornecer melhor precisão ao custo de maior uso de memória. As expressões que têm menos itens distintos produzirão contagens exatas de maxItemsTracked itens. Os resultados incluem NULL valores como item próprio nos resultados.

Exemplos

> 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}]