使用
lateral view [outer] explode
。横向视图首先将 UDTF 应用于基表的每一行,然后将结果输出行连接到输入行以形成具有提供的表别名的虚拟表。
这是来自 Presto 从 Hive 迁移 文档的示例:
SELECT student, score
FROM tests
LATERAL VIEW explode(scores) t AS score;
以及来自 Hive 横向视图文档的示例:
SELECT * FROM exampleTable
LATERAL VIEW explode(col1) myTable1 AS myCol1
LATERAL VIEW explode(myCol1) myTable2 AS myCol2;
使用
OUTER
关键字生成行,即使 LATERAL VIEW
通常不会生成行:
SELECT * FROM src LATERAL VIEW OUTER explode(array()) C AS a limit 10;
在此示例中,
array
为空,但来自 src
的行将被返回
横向视图不仅可以与
explode()
UDTF 一起使用。请参阅 Hive 嵌入式 UDTFs 列表以及示例。您也可以编写自己的 UDTF 并将其与 LATERAL VIEW
一起使用。