Função de agregação approx_top_k
Aplica-se a: SQL do Databricks
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. Sek
não for especificado, ele assume5
como padrão.maxItemsTracked
: um literal INTEGER opcional maior que ou igual ak
. SemaxItemsTracked
não for especificado, ele assume10000
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}]