Fonction d’agrégation histogram_numeric

S’applique à : coche marquée oui Databricks SQL case marquée oui 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 ou INTERVAL sur laquelle la fonction consomme et calcule l’histogramme.
  • numBins : littéral INTEGER qui doit être supérieur à 1 et qui spécifie le nombre de compartiments pour le calcul de l’histogramme.
  • cond : expression facultative BOOLEAN 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}]