4

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

4

1 回答 1

7

使用lateral view [outer] explode. 横向视图首先将 UDTF 应用于基表的每一行,然后将生成的输出行连接到输入行以形成具有所提供表别名的虚拟表。

这是来自 Hive文档的 Presto 迁移的示例:

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即使 aLATERAL VIEW通常不会生成行,也可以使用关键字生成行:

SELECT * FROM src LATERAL VIEW OUTER explode(array()) C AS a limit 10; 

在此示例中array为空,但src将返回来自的行

横向视图不仅可以与explode()UDTF 一起使用。请参阅带有示例的 Hive 嵌入式UDTF列表。您也可以编写自己的 UDTF 并将其与LATERAL VIEW.

于 2018-08-14T16:55:36.967 回答