zip_with:按元素合并数组
速查结论
zip_with(left, right, func) 是 Spark SQL 中用于使用 lambda 函数将两个数组按对应元素合并为单个数组的函数。
语法
zip_with(left, right, func)
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| left | ARRAY<T> | 左边的数组 |
| right | ARRAY<U> | 右边的数组 |
| func | lambda | 合并函数,格式为 (x, y) -> expression。较短数组会在末尾补 NULL 以匹配较长数组的长度 |
Examples
> SELECT zip_with(array(1, 2, 3), array('a', 'b', 'c'), (x, y) -> (y, x));
[{"y":"a","x":1},{"y":"b","x":2},{"y":"c","x":3}]
> SELECT zip_with(array(1, 2), array(3, 4), (x, y) -> x + y);
[4,6]
> SELECT zip_with(array('a', 'b', 'c'), array('d', 'e', 'f'), (x, y) -> concat(x, y));
["ad","be","cf"]
常见报错与避坑指南
- 数组长度不一致时的行为:较短数组的末尾会自动补 NULL,这可能导致 lambda 函数中出现意外的 NULL 处理。如果 lambda 函数不处理 NULL,结果中对应位置的元素可能为 NULL。
- 返回类型推导:合并后数组的元素类型由 lambda 函数的返回值类型决定,两个输入数组的元素类型可以不同。
Since: 2.4.0
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

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