跳到主要内容

inline_outer:结构体数组转行(null保留)

速查结论

inline_outer(expr) 是 Spark SQL 中用于将结构体数组展开为多行表格数据,空数组或 null 时保留 NULL 行的函数。

语法

inline_outer(expr)

参数说明

参数类型说明
exprARRAY<STRUCT>要展开的结构体数组

返回值

返回一个表,将数组中的每个结构体元素展开为一行,结构体的每个字段展开为一列。默认使用列名 col1、col2 等。当输入为空数组或 null 时,inline_outer 仍会生成一行,所有列值为 NULL。

示例

> SELECT inline_outer(array(struct(1, 'a'), struct(2, 'b')));
1 a
2 b

常见报错与避坑指南

  • 与 inline 的核心区别inline_outer 在输入为空数组或 null 时会生成一行 NULL 值,而 inline 不会生成任何行。这在需要保留左表所有行的 LEFT JOIN 场景中非常关键。
  • 仅可在 SELECT 子句或 LATERAL VIEW 中使用:作为生成器函数,inline_outer 只能在 SELECT 子句或 LATERAL VIEW 中使用。
  • 结构体字段名:默认列名为 col1、col2 等。如需自定义列名,使用 LATERAL VIEW inline_outer(arr) AS (name1, name2) 语法。

Since: 2.0.0

📱关注公众号

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

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

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

交流微信二维码

你可能还想看