histogram_numeric
(función de agregado)
Se aplica a: Databricks SQL 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éricaTIMESTAMP
,DATE
oINTERVAL
en la que la función usa y calcula el histograma.numBins
: un literalINTEGER
que debe ser mayor que 1, especificando el número de rangos para el cálculo del histograma.cond
: una expresiónBOOLEAN
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 expr
values.
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}]