histogram_numeric
agregační funkce
Platí pro: Databricks SQL
Databricks Runtime 10,2 a novější
Vypočítá histogram pomocí expr
numBins
intervalů.
Syntaxe
histogram_numeric ( [ALL | DISTINCT ] expr, numBins ) [ FILTER ( WHERE cond ) ]
Argumenty
-
expr
: Číselný, ,TIMESTAMP
neboDATE
výraz,INTERVAL
který funkce využívá a vypočítá histogram. -
numBins
INTEGER
: Literál, který musí být větší než 1, určuje počet intervalů pro výpočet histogramu. -
cond
: VolitelnýBOOLEAN
výraz, který filtruje řádky pro agregaci.
Návraty
Návratová hodnota je hodnota ARRAY
STRUCTS
s poli x
a y
představuje středy intervalů histogramu. Typ x
je stejný jako typ expr
a typ y
je DOUBLE
.
Zvýšení hodnoty numBins
zpřesnění aproximace histogramu, takže jemnější. Může ale zavést artefakty kolem odlehlých hodnot.
U histogramů je obvykle efektivních 20 až 40 intervalů, i když nerovnoměrné nebo menší datové sady můžou vyžadovat více intervalů. Všimněte si, že tato funkce vytvoří histogram s nejednotnými šířkami intervalů.
Nenabízí žádné záruky z hlediska střední-kvadratická chyba histogramu, ale v praxi je srovnatelné s histogramy vytvořenými jinými výpočetními balíčky.
Zadáním DISTINCT
bude funkce fungovat pouze na jedinečném setexpr
values.
Příklady
> 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}]