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


Функция aggregate

Область применения: флажок Databricks SQL флажок Databricks Runtime

Выполняет статистическое вычисление элементов в массиве с помощью пользовательского агрегатора. Эта функция является синонимом для функции reduce.

Синтаксис

aggregate(expr, start, merge [, finish])

Аргументы

  • expr: выражение ARRAY.
  • start: начальное значение любого типа.
  • merge: лямбда-функция, которая используется для статистической обработки текущего элемента.
  • finish: необязательная лямбда-функция, которая используется для завершения статистической обработки.

Возвраты

Тип возвращаемого результата соответствует типу результата лямбда-функции finish, если она существует, или start в обратном случае.

Применяет выражение к начальному состоянию и ко всем элементам в массиве, сокращая все эти значения до одного состояния. Конечное состояние преобразуется в окончательный результат путем применения функции finish.

Функция merge принимает два параметра. Первый из них используется для накапливания результатов, а второй содержит элемент для статистической обработки. Оба этих параметра должны иметь тип start. Необязательная функция finish принимает один параметр и возвращает финальный результат.

Примеры

> SELECT aggregate(array(1, 2, 3), 0, (acc, x) -> acc + x);
 6
> SELECT aggregate(array(1, 2, 3), 0, (acc, x) -> acc + x, acc -> acc * 10);
 60

> SELECT aggregate(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