Compartir a través de


approx_top_k (función de agregado)

Se aplica a casilla marcada como sí Databricks SQL casilla marcada como Sí 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 especifica k, el valor predeterminado es 5.
  • maxItemsTracked: Literal INTEGER opcional mayor o igual que k. Si no se especifica maxItemsTracked, el valor predeterminado es 10000.
  • 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}]