Condividi tramite


histogram_numeric funzione di aggregazione

Si applica a:segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime 10,2 e versioni successive

Calcola un istogramma su expr utilizzando numBins suddivisioni.

Sintassi

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

Argomenti

  • expr: espressione numerica, TIMESTAMP, DATE, o INTERVAL su cui la funzione utilizza e calcola l'istogramma.
  • numBins: valore INTEGER letterale che deve essere maggiore di 1, specificando il numero di contenitori per il calcolo dell'istogramma.
  • cond: espressione facoltativa BOOLEAN che filtra le righe per l'aggregazione.

Valori restituiti

Il valore restituito è un oggetto ARRAY di STRUCTS con campi x e y che rappresentano i centri dei bin dell'istogramma. Il tipo di x è uguale al tipo di expr e il tipo di y è DOUBLE. Aumentando il valore di numBins affina l'approssimazione dell'istogramma, rendendolo più granulare. Tuttavia, può introdurre artefatti intorno agli outlier. In genere, 20-40 bin sono efficaci per gli istogrammi, anche se set di dati asimmetrici o più piccoli potrebbero richiedere più bin. Si noti che questa funzione crea un istogramma con larghezze bin non uniformi. Non offre garanzie in termini di errore medio quadrato dell'istogramma, ma in pratica è paragonabile agli istogrammi prodotti da altri pacchetti di calcolo.

DISTINCT Se si specifica, la funzione viene eseguita solo su un set univoco di expr valori.

Esempi

> 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}]