histogram_numeric
funzione di aggregazione
Si applica a: Databricks SQL
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
, oINTERVAL
su cui la funzione utilizza e calcola l'istogramma. -
numBins
: valoreINTEGER
letterale che deve essere maggiore di 1, specificando il numero di contenitori per il calcolo dell'istogramma. -
cond
: espressione facoltativaBOOLEAN
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}]
Funzioni correlate
- funzione di aggregazione approx_percentile
funzione di aggregazione approx_count_distinct - Funzione di aggregazione percentile