Агрегатная функция histogram_numeric
Область применения: Databricks SQL Databricks Runtime 10,2 и более поздних версий
Вычисляет гистограмму на expr
основе numBins
ячеек.
Синтаксис
histogram_numeric ( [ALL | DISTINCT ] expr, numBins ) [ FILTER ( WHERE cond ) ]
Аргументы
-
expr
: числовое, илиTIMESTAMP
выражение,DATE
INTERVAL
которое функция использует и вычисляет гистограмму. -
numBins
: литералINTEGER
, который должен быть больше 1, указывая количество ячеек для вычисления гистограммы. -
cond
: необязательноеBOOLEAN
выражение, которое фильтрует строки для агрегирования.
Возвраты
Возвращаемое значение — это ARRAY
STRUCTS
поле с полями x
и y
представляющее центры ячеек гистограммы. Тип x
совпадает с типом expr
и типом y
DOUBLE
.
Увеличение значения уточнения приближения numBins
гистограммы, что делает его более точным. Однако это может привести к артефактам вокруг вылитых.
Как правило, 20-40 ячеек эффективны для гистограмм, хотя сложенные или меньшие наборы данных могут потребовать больше ячеек. Обратите внимание, что эта функция создает гистограмму с неоднородными ширинами ячейки.
Он не предоставляет никаких гарантий с точки зрения среднеквадратической ошибки гистограммы, но на практике сравним с гистограммами, созданными другими вычислительными пакетами.
Указание DISTINCT
заставляет функцию работать только с уникальным setexpr
values.
Примеры
> 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}]