Поделиться через


Агрегатная функция histogram_numeric

Область применения: флажок Databricks SQL флажок Databricks Runtime 10,2 и более поздних версий

Вычисляет гистограмму на expr основе numBins ячеек.

Синтаксис

histogram_numeric ( [ALL | DISTINCT ] expr, numBins ) [ FILTER ( WHERE cond ) ]

Аргументы

  • expr: числовое, или INTERVAL выражение, DATETIMESTAMPкоторое функция использует и вычисляет гистограмму.
  • numBins: литерал INTEGER , который должен быть больше 1, указывая количество ячеек для вычисления гистограммы.
  • cond: необязательное BOOLEAN выражение, которое фильтрует строки для агрегирования.

Возвраты

Возвращаемое значение — это ARRAY STRUCTS поле с полями x и y представляющее центры ячеек гистограммы. Тип x совпадает с типом exprи типом y DOUBLE. Увеличение значения уточнения приближения numBins гистограммы, что делает его более точным. Однако это может привести к артефактам вокруг вылитых. Как правило, 20-40 ячеек эффективны для гистограмм, хотя сложенные или меньшие наборы данных могут потребовать больше ячеек. Обратите внимание, что эта функция создает гистограмму с неоднородными ширинами ячейки. Он не предоставляет никаких гарантий с точки зрения среднеквадратической ошибки гистограммы, но на практике сравним с гистограммами, созданными другими вычислительными пакетами.

Указание DISTINCT делает функцию работающей только с уникальным набором значений expr .

Примеры

> 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}]