histogram_numeric
mängdfunktion
Gäller för: Databricks SQL
Databricks Runtime 10,2 och senare
Beräknar ett histogram för expr
användning av numBins
lagerplatser.
Syntax
histogram_numeric ( [ALL | DISTINCT ] expr, numBins ) [ FILTER ( WHERE cond ) ]
Argument
-
expr
: Ett numeriskt,TIMESTAMP
,DATE
ellerINTERVAL
uttryck som funktionen använder och beräknar histogrammet på. -
numBins
: EnINTEGER
literal som måste vara större än 1 och som anger antalet lagerplatser för histogramberäkningen. -
cond
: Ett valfrittBOOLEAN
uttryck som filtrerar raderna för aggregering.
Returer
Returvärdet är ett ARRAY
av STRUCTS
med fält x
och y
representerar centrumen för histogrammets lagerplatser. Typen av x
är samma som typen av expr
, och typen av y
är DOUBLE
.
Att öka värdet för numBins
förfinar histogrammets uppskattning, vilket gör det finare kornigt. Det kan dock introducera artefakter kring extremvärden.
Vanligtvis är 20–40 lagerplatser effektiva för histogram, men skeva eller mindre datamängder kan kräva fler lagerplatser. Observera att den här funktionen skapar ett histogram med icke-enhetliga intervallbredder.
Det ger inga garantier när det gäller histogrammets medelvärde-kvadratfel, men är i praktiken jämförbart med de histogram som produceras av andra databehandlingspaket.
Om du anger DISTINCT
fungerar funktionen endast på en unik uppsättning expr
värden.
Exempel
> 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}]