histogram_numeric
funkcja agregacji
Dotyczy: Databricks SQL Databricks Runtime 10,2 i nowsze
Oblicza histogram przy expr
użyciu numBins
pojemników.
Składnia
histogram_numeric ( [ALL | DISTINCT ] expr, numBins ) [ FILTER ( WHERE cond ) ]
Argumenty
expr
: numeryczne,TIMESTAMP
,DATE
lubINTERVAL
wyrażenie używane przez funkcję i oblicza histogram na.numBins
INTEGER
: literał, który musi być większy niż 1, określając liczbę pojemników na potrzeby obliczeń histogramu.cond
: opcjonalneBOOLEAN
wyrażenie, które filtruje wiersze pod kątem agregacji.
Zwraca
Wartość zwracana ARRAY
jest wartością STRUCTS
z polami x
i y
reprezentującą centra pojemników histogramu. Typ x
jest taki sam jak typ expr
, a typ y
to DOUBLE
.
Zwiększenie wartości numBins
uściślić przybliżenie histogramu, dzięki czemu jest bardziej szczegółowe. Może jednak wprowadzać artefakty wokół wartości odstających.
Zazwyczaj 20–40 pojemników jest skuteczne w przypadku histogramów, chociaż niesymetryczne lub mniejsze zestawy danych mogą wymagać większej liczby pojemników. Należy pamiętać, że ta funkcja tworzy histogram o niestandardowych szerokościach pojemników.
Nie oferuje żadnych gwarancji w zakresie błędu średniokwadratowego histogramu, ale w praktyce jest porównywalny z histogramami wyprodukowanymi przez inne pakiety obliczeniowe.
Określenie DISTINCT
sprawia, że funkcja działa tylko na unikatowym expr
zestawie wartości.
Przykłady
> 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}]