histogram_numeric
statistische functie
Van toepassing op: Databricks SQL Databricks Runtime 10,2 en hoger
Berekent een histogram voor expr
het gebruik van numBins
bins.
Syntaxis
histogram_numeric ( [ALL | DISTINCT ] expr, numBins ) [ FILTER ( WHERE cond ) ]
Argumenten
-
expr
: Een numerieke,TIMESTAMP
, ofDATE
INTERVAL
expressie waarmee de functie het histogram verbruikt en berekent. -
numBins
: EenINTEGER
letterlijke waarde die groter moet zijn dan 1, waarbij het aantal bins voor de histogramberekening wordt opgegeven. -
cond
: Een optioneleBOOLEAN
expressie waarmee de rijen voor aggregatie worden gefilterd.
Retouren
De retourwaarde is een ARRAY
van STRUCTS
de velden x
en y
vertegenwoordigt de middelpunten van de opslaglocaties van het histogram. Het type x
is hetzelfde als het type expr
, en het type y
is DOUBLE
.
Het verhogen van de waarde van numBins
verfijnt de benadering van het histogram, waardoor het nauwkeuriger wordt. Het kan echter artefacten introduceren rond uitbijters.
Normaal gesproken zijn 20-40 bins effectief voor histogrammen, hoewel scheefgetrokken of kleinere gegevenssets mogelijk meer bins vereisen. Houd er rekening mee dat met deze functie een histogram met niet-uniforme bin-breedtes wordt gemaakt.
Het biedt geen garanties in termen van de gemiddelde kwadratische fout van het histogram, maar in de praktijk is het vergelijkbaar met de histogrammen die worden geproduceerd door andere computingpakketten.
Als u DISTINCT
opgeeft, werkt de functie alleen op een unieke set van expr
values.
Voorbeelden
> 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}]