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