跳到主要内容

transform_keys:转换Map键

速查结论

transform_keys(expr, func) 是 Spark SQL 中用于使用 lambda 函数对映射中的每个键进行转换的函数。

语法

transform_keys(expr, func)

参数说明

参数类型说明
exprMAP要进行键转换的映射(Map)对象
funcLAMBDA接收 (k, v) 两个参数的 lambda 函数,返回转换后的新键

示例

> SELECT transform_keys(map_from_arrays(array(1, 2, 3), array(1, 2, 3)), (k, v) -> k + 1);
{2:1,3:2,4:3}
> SELECT transform_keys(map_from_arrays(array(1, 2, 3), array(1, 2, 3)), (k, v) -> k + v);
{2:1,4:2,6:3}

常见报错与避坑指南

  • 如果 lambda 函数对不同的键返回相同的值,后面的键值对会覆盖前面的,因为 Map 的键必须唯一。
  • 转换后的键类型会自动推断,若需要特定的键类型,可在 lambda 中使用 cast 显式指定。
  • lambda 函数必须接受恰好两个参数 (k, v),分别表示当前键和当前值,参数数量不匹配会报错。

Since: 3.0.0

📱关注公众号

「数据仓库技术」文章同步更新,不错过每一篇干货

微信公众号二维码
💬加群交流

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

交流微信二维码

你可能还想看