Hive 中 Presto UNNEST 函数的等价物是什么

ish*_*243 4 arrays hive presto hiveql unnest

Presto 具有UNNEST分解由数组组成的列的功能。Hive 有类似的吗?在此处查看UNNESTPresto 功能的文档。

lef*_*oin 7

使用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.