Freigeben über


histogram_numeric-Aggregatfunktion

Gilt für: Häkchen ja Databricks SQL Häkchen gesetzt ja 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: Numerischer TIMESTAMP-, DATE- oder INTERVAL-Ausdruck, den die Funktion für die Berechnung des Histogramms verwendet
  • numBins: INTEGER-Literal, das größer als 1 sein muss und die Anzahl der Klassen für die Histogrammberechnung angibt
  • cond: Optionaler BOOLEAN-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}]