aggregate:数组聚合归约
速查结论
aggregate(expr, start, merge, finish) 是 Spark SQL 中用于对数组元素进行自定义聚合归约的函数。
语法
aggregate(expr, start, merge, finish)
参数说明
| 参数 | 说明 |
|---|---|
expr | 输入的数组表达式 |
start | 聚合的初始值 |
merge | 合并函数,对每个元素与当前累加状态进行合并,签名为 (acc, x) -> ... |
finish | (可选)完成函数,对聚合后的最终状态进行转换,签名为 acc -> ... |
示例
> 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
常见报错与避坑指南
- merge 函数签名不匹配:merge 函数必须接收两个参数(累加状态与当前元素),且返回类型需与
start和累加器类型兼容,否则会抛出类型不匹配异常。 - finish 函数未定义时的返回值:如果不提供 finish 函数,aggregate 直接返回 merge 完成后的状态值,无需额外终止处理。
- 空数组的处理:对空数组调用 aggregate 时,会直接返回
start作为结果,不会调用 merge 函数。
Since: 2.4.0
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

💬加群交流
备注「数据仓库技术」加入社群,每日一道大厂SQL真题
