Compartilhar via


Função de agregação approx_top_k

Aplica-se a:verificação marcada como sim SQL do Databricks caixa de seleção marcada sim Databricks Runtime 10.4 LTS e versões posteriores

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

Sintaxe

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

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

Argumentos

  • expr: uma expressão de STRING, BOOLEAN, DATE, TIMESTAMP ou tipo numérico.
  • k: um literal INTEGER opcional maior que 0. Se k não for especificado, ele assume 5 como padrão.
  • maxItemsTracked: um literal INTEGER opcional maior que ou igual a k. Se maxItemsTracked não for especificado, ele assume 10000 como padrão.
  • cond: uma expressão booliana opcional que filtra as linhas usadas para agregação.

Retornos

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

A função de agregação retorna os principais k de valores de item que ocorrem com mais frequência em uma expressão expr junto com suas contagens aproximadas. O erro em cada contagem pode ser até 2.0 * numRows / maxItemsTracked, em que numRows é o número total de linhas. Valores mais altos de maxItemsTracked fornecem uma melhor precisão à expensa do aumento do uso de memória. Expressões com menos itens que maxItemsTracked distintos produzirão contagens exatas de itens. Os resultados incluem valores NULL como seu próprio item 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}]