Fonction d’agrégation histogram_numeric
S’applique à : Databricks SQL Databricks Runtime 10.2 et versions ultérieures
Calcule un histogramme sur expr
en utilisant numBins
compartiments.
Syntaxe
histogram_numeric ( [ALL | DISTINCT ] expr, numBins ) [ FILTER ( WHERE cond ) ]
Arguments
expr
: expression numérique,TIMESTAMP
,DATE
ouINTERVAL
sur laquelle la fonction consomme et calcule l’histogramme.numBins
: littéralINTEGER
qui doit être supérieur à 1 et qui spécifie le nombre de compartiments pour le calcul de l’histogramme.cond
: expression facultativeBOOLEAN
qui filtre les lignes pour l’agrégation.
Retours
La valeur de retour est un ARRAY
de STRUCTS
, les champs x
et y
représentant les centres des compartiments de l’histogramme. Le type de x
est identique au type de expr
, et le type de y
est DOUBLE
.
L’augmentation de la valeur de numBins
affine l’approximation de l’histogramme, ce qui la rend plus précise. Toutefois, cela peut introduire des artefacts autour des valeurs hors norme.
En général, 20 à 40 compartiments s’avèrent efficaces pour les histogrammes, mais des jeux de données asymétriques ou plus petits peuvent nécessiter davantage de compartiments. Notez que cette fonction crée un histogramme avec des largeurs de compartiment non uniformes.
Elle n’offre aucune garantie en termes d’erreur quadratique moyenne de l’histogramme, mais est en pratique comparable aux histogrammes produits par d’autres packages informatiques.
Si vous spécifiez DISTINCT
, la fonction ne s’applique qu’à un ensemble unique de valeurs expr
.
Exemples
> 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}]