histogram_numeric
função agregar
Aplica-se a: Databricks SQL Databricks Runtime 10,2 e posterior
Calcula um histograma usando expr
numBins
compartimentos.
Sintaxe
histogram_numeric ( [ALL | DISTINCT ] expr, numBins ) [ FILTER ( WHERE cond ) ]
Argumentos
-
expr
: Um numérico,TIMESTAMP
,DATE
, ouINTERVAL
expressão que a função consome e calcula o histograma. -
numBins
: UmINTEGER
literal que deve ser maior que 1, especificando o número de compartimentos para o cálculo do histograma. -
cond
: Uma expressão opcionalBOOLEAN
que filtra as linhas para agregação.
Devoluções
O valor de retorno é um ARRAY
de STRUCTS
com campos x
e y
representando os centros dos compartimentos do histograma. O tipo de x
é o mesmo que o tipo de expr
, e o tipo de y
é DOUBLE
.
Aumentar o valor de refina a aproximação do numBins
histograma, tornando-o mais fino. No entanto, ele pode introduzir artefatos em torno de outliers.
Normalmente, 20-40 compartimentos são eficazes para histogramas, embora conjuntos de dados distorcidos ou menores possam exigir mais compartimentos. Observe que essa função cria um histograma com larguras de compartimento não uniformes.
Não oferece garantias em termos do erro quadrático médio do histograma, mas na prática é comparável aos histogramas produzidos por outros pacotes de computação.
Especificar DISTINCT
faz com que a função opere apenas em um conjunto exclusivo de valores de expr
.
Exemplos
> 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}]