histogram_numeric
-Aggregatfunktion
Gilt für: Databricks SQL Databricks Runtime 10.2 und höher
Hiermit wird ein Histogramm für expr
mithilfe von numBins
-Klassen berechnet.
Syntax
histogram_numeric ( [ALL | DISTINCT ] expr, numBins ) [ FILTER ( WHERE cond ) ]
Argumente
expr
: NumerischerTIMESTAMP
-,DATE
- oderINTERVAL
-Ausdruck, den die Funktion für die Berechnung des Histogramms verwendetnumBins
:INTEGER
-Literal, das größer als 1 sein muss und die Anzahl der Klassen für die Histogrammberechnung angibtcond
: OptionalerBOOLEAN
-Ausdruck, der die Zeilen für die Aggregation filtert
Gibt zurück
Der Rückgabewert ist ein ARRAY
von STRUCTS
mit den Feldern x
und y
, die jeweils die Mitte der Histogrammklassen darstellen. Der Typ von x
ist identisch mit dem Typ von expr
, und der Typ von y
entspricht DOUBLE
.
Durch das Erhöhen des Werts von numBins
wird die Histogrammapproximation verfeinert, was zu einer feineren Abstufung führt. Dies kann jedoch zu Ausreißern bei Artefakten führen.
Normalerweise sind 20 bis 40 Klassen für Histogramme effektiv, allerdings können verzerrte oder kleinere Datasets möglicherweise weitere Klassen erfordern. Beachten Sie, dass diese Funktion ein Histogramm mit nicht uniformen Containerbreiten erstellt.
Dies bietet keine Garantien im Hinblick auf die mittlere quadratische Abweichung des Histogramms, ist in der Praxis aber mit den Histogrammen vergleichbar, die von anderen Computingpaketen erzeugt werden.
Wenn Sie DISTINCT
angeben, wird die Funktion nur in einem eindeutigen Satz von expr
-Werten ausgeführt.
Beispiele
> 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}]