Compartir a través de


approx_top_k_accumulate (función de agregación)

Se aplica a:check marcado yes Databricks Runtime 18.1 y versiones posteriores

Acumula elementos en una estimación aproximada de elementos frecuentes (top-K) de Apache DataSketches ItemsSketch. El croquis se puede combinar posteriormente con otros bocetos mediante approx_top_k_combine o estimación directamente mediante approx_top_k_estimate.

Sintaxis

approx_top_k_accumulate ( expr [, maxItemsTracked ] )

Argumentos

  • expr: expresión que se va a acumular. Los tipos aceptados son BOOLEAN, BYTE, SHORT, INTEGER, FLOATDATEDOUBLELONG, TIMESTAMP, , TIMESTAMP_NTZ, STRINGy .DECIMAL
  • maxItemsTracked: literal positivo INTEGER opcional que especifica el número máximo de elementos distintos para realizar el seguimiento en el boceto. Debe estar comprendido entre 1 y 1.000.000, ambos incluidos. El valor predeterminado es 10 000. Los valores más altos proporcionan una mejor precisión para buscar elementos frecuentes, pero usan más memoria.

Devoluciones

Valor STRUCT que contiene el estado de croquis serializado con los siguientes campos:

  • sketch: BINARY — el itemsSketch serializado
  • maxItemsTracked: INTEGER : el valor máximo de los elementos de los que se ha seguido el seguimiento
  • itemDataType: el tipo de datos de los elementos (para la seguridad de tipos)
  • itemDataTypeDDL: STRING : representación DDL del tipo de datos del elemento

Notas

  • NULL Se realiza un seguimiento de los valores por separado e se incluyen en los resultados cuando se encuentran entre los más frecuentes.
  • El maxItemsTracked parámetro debe ser un valor constante.
  • El boceto usa el algoritmo ItemsSketch de la biblioteca Apache DataSketches.
  • Use approx_top_k_estimate para obtener los elementos más frecuentes de la K superior del croquis resultante.
  • Use approx_top_k_combine para combinar varios bocetos antes de la estimación.

Mensajes de error

Examples

-- Create sketch with default maxItemsTracked=10000 and get top-5 items
> SELECT approx_top_k_estimate(approx_top_k_accumulate(expr)) FROM VALUES (0), (0), (1), (1), (2), (3), (4), (4) AS tab(expr);
[{"item":0,"count":2},{"item":4,"count":2},{"item":1,"count":2},{"item":2,"count":1},{"item":3,"count":1}]

-- Create sketch with custom maxItemsTracked=100 and get top-2 items
> SELECT approx_top_k_estimate(approx_top_k_accumulate(expr, 100), 2) FROM VALUES ('a'), ('b'), ('c'), ('c'), ('c'), ('c'), ('d'), ('d') AS tab(expr);
[{"item":"c","count":4},{"item":"d","count":2}]