Compartir a través de


histogram_numeric (función de agregado)

Se aplica a:casilla marcada como sí Databricks SQL casilla marcada como Sí Databricks Runtime 10.2 y versiones posteriores

Calcula un histograma en expr mediante rangos numBins.

Sintaxis

histogram_numeric ( [ALL | DISTINCT ] expr, numBins ) [ FILTER ( WHERE cond ) ]

Argumentos

  • expr: una expresión numérica TIMESTAMP, DATE o INTERVAL en la que la función usa y calcula el histograma.
  • numBins: un literal INTEGER que debe ser mayor que 1, especificando el número de rangos para el cálculo del histograma.
  • cond: una expresión BOOLEAN opcional que filtra las filas de la agregación.

Devoluciones

El valor devuelto es una ARRAY de STRUCTS con los campos x y y que representan los centros de los rangos del histograma. El tipo de x es el mismo que el tipo de expr, y el tipo de y es DOUBLE. Aumentar el valor de numBins refina la aproximación del histograma, lo que hace que sea más preciso. Sin embargo, puede introducir artefactos en torno a valores atípicos. Normalmente, los rangos de 20 a 40 son efectivos para los histogramas, aunque los conjuntos de datos sesgados o más pequeños pueden requerir más rangos. Tenga en cuenta que esta función crea un histograma con anchos de rango no uniformes. No ofrece garantías en términos del error cuadrático medio del histograma, pero en la práctica es comparable a los histogramas producidos por otros paquetes informáticos.

Especificar DISTINCT hace que la función funcione solo en una set única de exprvalues.

Ejemplos

> SELECT histogram_numeric(col, 5)
    FROM VALUES (0), (1), (2), (10) AS tab(col);
 [{"x":0.0,"y":1.0},{"x":1.0,"y":1.0},{"x":2.0,"y":1.0},{"x":10.0,"y":1.0}]

> SELECT histogram_numeric(col, 5)
    FROM VALUES (0L), (1L), (2L), (10L) AS tab(col);
 [{"x":0,"y":1.0},{"x":1,"y":1.0},{"x":2,"y":1.0},{"x":10,"y":1.0}]

> SELECT histogram_numeric(col, 5)
    FROM VALUES (0F), (1F), (2F), (10F) AS tab(col);
 [{"x":0.0,"y":1.0},{"x":1.0,"y":1.0},{"x":2.0,"y":1.0},{"x":10.0,"y":1.0}]

> SELECT histogram_numeric(col, 5)
    FROM VALUES (0D), (1D), (2D), (10D) AS tab(col);
 [{"x":0.0,"y":1.0},{"x":1.0,"y":1.0},{"x":2.0,"y":1.0},{"x":10.0,"y":1.0}]

> SELECT histogram_numeric(col, 5)
    FROM VALUES (INTERVAL 0 YEAR), (INTERVAL 1 YEAR), (INTERVAL 2 YEAR),
    (INTERVAL 3 YEAR) AS tab(col);
 [{"x":0-0,"y":1.0},{"x":1-0,"y":1.0},{"x":2-0,"y":1.0},{"x":3-0,"y":1.0}]

> SELECT histogram_numeric(col, 5)
    FROM VALUES (INTERVAL 0 DAY), (INTERVAL 1 DAY), (INTERVAL 2 DAY),
    (INTERVAL 3 DAY) AS tab(col);
  [{"x":0 00:00:00.000000000,"y":1.0},{"x":1 00:00:00.000000000,"y":1.0},{"x":2 00:00:00.000000000,"y":1.0},{"x":3 00:00:00.000000000,"y":1.0}]

> SELECT histogram_numeric(col, 5)
    FROM VALUES (TIMESTAMP '2020-01-01'), (TIMESTAMP'2020-02-01'),
    (TIMESTAMP'2020-03-01'), (TIMESTAMP'2020-10-01') AS tab(col)
  [{"x":2020-01-01 00:00:00,"y":1.0},{"x":2020-02-01 00:00:00,"y":1.0},{"x":2020-03-01 00:00:00,"y":1.0},{"x":2020-10-01 00:00:00,"y":1.0}]