approx_top_k
(función de agregado)
Se aplica a Databricks SQL Databricks Runtime 10.4 LTS y versiones posteriores
Devuelve los principales k
valores de elementos que se producen con más frecuencia en una expresión expr
con sus recuentos aproximados.
Sintaxis
approx_top_k(expr[, k[, maxItemsTracked]]) [FILTER ( WHERE cond ) ]
Esta función también se puede invocar como una función de ventana mediante la cláusula OVER
.
Argumentos
expr
: expresión de tipo STRING, BOOLEAN, DATE, TIMESTAMP o numérico.k
: Un valor INTEGER opcional literal mayor que 0. Si no se especificak
, el valor predeterminado es5
.maxItemsTracked
: Literal INTEGER opcional mayor o igual quek
. Si no se especificamaxItemsTracked
, el valor predeterminado es10000
.cond
: una expresión booleana opcional que filtra las filas usadas para la agregación.
Devoluciones
Los resultados se devuelven como ARRAY de tipo STRUCT, donde cada STRUCT contiene un campo item
para el valor (con su tipo de entrada original) y un campo count
(de tipo LONG) con el número aproximado de repeticiones. La matriz se ordena por valor count
descendente.
La función de agregado devuelve los principales k
valores de elementos que se producen con más frecuencia en una expresión expr
, junto con sus recuentos aproximados. El error en cada recuento puede ser de hasta 2.0 * numRows / maxItemsTracked
, donde numRows
es el número total de filas. Los valores superiores de maxItemsTracked
ofrecen una mejor precisión a costa de un mayor uso de memoria.
Las expresiones que tienen menos de maxItemsTracked
elementos distintos dan como resultado recuentos exactos de elementos. Los resultados incluyen valores NULL
como su propio elemento en los resultados.
Ejemplos
> 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}]