reduce 函数

适用于: 勾选“是” Databricks SQL 勾选“是” Databricks Runtime

使用自定义聚合器聚合数组中的元素。 此函数是聚合函数的同义词。

语法

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

自变量

  • expr:一个 ARRAY 表达式。
  • start:任意类型的初始值。
  • merge:用于聚合当前元素的 lambda 函数。
  • finish:用于完成聚合的可选 lambda 函数。

返回

结果类型与 finish lambda 函数(如果存在)或 start 的结果类型匹配。

将表达式应用于初始状态和数组中的所有元素,并将其简化为单一状态。 通过应用 finish 函数将最终状态转换为最终结果。

merge 函数采用两个参数。 第一个参数是累加器,第二个参数是要聚合的元素。 累加器和结果的类型必须为 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