跳到主要内容

zip_with:按元素合并数组

速查结论

zip_with(left, right, func) 是 Spark SQL 中用于使用 lambda 函数将两个数组按对应元素合并为单个数组的函数。

语法

zip_with(left, right, func)

参数说明

参数类型说明
leftARRAY<T>左边的数组
rightARRAY<U>右边的数组
funclambda合并函数,格式为 (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真题

交流微信二维码

你可能还想看