跳到主要内容

posexplode:带位置拆分数组

速查结论

posexplode(expr) 是 Spark SQL 中用于将数组或 Map 元素拆分为多行,并携带位置索引的函数。

语法

posexplode(expr)

参数说明

参数类型说明
exprARRAY 或 MAP要拆分的数组或 Map

返回值

返回一个表,包含以下列:

  • 对于数组:pos(元素位置,从 0 开始)和 col(元素值)
  • 对于 Map:pos(元素位置,从 0 开始)、keyvalue

除非在 LATERAL VIEW 子句中另有指定,否则使用上述默认列名。

示例

> SELECT posexplode(array(10,20));
0 10
1 20
> SELECT * FROM posexplode(array(10,20));
0 10
1 20

常见报错与避坑指南

  • 与 explode 的区别posexplodeexplode 多返回一个位置列 pos,从 0 开始计数。如果不需要位置信息,使用 explode 更简洁。
  • 空数组不产生行:如果输入为空数组,posexplode 不会产生任何行。如需在空数组时保留 NULL 行,请使用 posexplode_outer
  • 仅可在 SELECT 子句或 LATERAL VIEW 中使用:作为生成器函数,posexplode 不能用于 WHERE 等子句中。

Since: 2.0.0

📱关注公众号

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

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

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

交流微信二维码

你可能还想看