跳到主要内容

inline:结构体数组转行

速查结论

inline(expr) 是 Spark SQL 中用于将结构体数组展开为多行表格数据的函数。

语法

inline(expr)

参数说明

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

返回值

返回一个表,将数组中的每个结构体元素展开为一行,结构体的每个字段展开为一列。默认使用列名 col1、col2 等,除非在 LATERAL VIEW 子句中另有指定。

示例

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

常见报错与避坑指南

  • 仅可在 SELECT 子句或 LATERAL VIEW 中使用inline 是一个生成器函数(generator function),只能在 SELECT 子句或 LATERAL VIEW 中使用,不能用于 WHERE 等子句。
  • 数组为空时无输出行:如果输入为空数组,inline 不会产生任何行(与 inline_outer 不同)。如需在空数组时保留 NULL 行,请使用 inline_outer
  • 结构体字段名:默认列名为 col1、col2 等。如需自定义列名,使用 LATERAL VIEW inline(arr) AS (name1, name2) 语法。

Since: 2.0.0

📱关注公众号

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

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

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

交流微信二维码

你可能还想看