Функция reduce
Область применения: Databricks SQL Databricks Runtime
Выполняет статистическое вычисление элементов в массиве с помощью пользовательского агрегатора. Эта функция является синонимом агрегатной функции.
Синтаксис
reduce(expr, start, merge [, finish] )
Аргументы
-
expr
ARRAY
: выражение. -
start
: начальное значение любого типа. -
merge
: лямбда-функция, которая используется для статистической обработки текущего элемента. -
finish
: необязательная лямбда-функция, которая используется для завершения статистической обработки.
Возвраты
Тип возвращаемого результата соответствует типу результата лямбда-функции finish
, если она существует, или start
в обратном случае.
Применяет выражение к начальному состоянию и ко всем элементам в массиве, сокращая все эти значения до одного состояния. Конечное состояние преобразуется в окончательный результат путем применения функции finish
.
Функция merge
принимает два parameters. Первое — это накопительный элемент, а второй — элемент, который необходимо агрегировать.
Оба этих параметра должны иметь тип start
.
Необязательная функция finish
принимает один параметр и возвращает финальный результат.
Примеры
> SELECT reduce(array(1, 2, 3), 0, (acc, x) -> acc + x);
6
> SELECT reduce(array(1, 2, 3), 0, (acc, x) -> acc + x, acc -> acc * 10);
60
> SELECT reduce(array(1, 2, 3, 4),
named_struct('sum', 0, 'cnt', 0),
(acc, x) -> named_struct('sum', acc.sum + x, 'cnt', acc.cnt + 1),
acc -> acc.sum / acc.cnt) AS avg
2.5