什么是Hive中的Presto UNNEST函数的等效项

时间:2018-08-14 10:25:02

标签: hive presto

Presto具有UNNEST函数来爆炸由数组组成的列。 Hive是否有类似的产品? 请参阅Presto hereUNNEST功能的文档。

1 个答案:

答案 0 :(得分:3)

使用lateral view [outer] explode。侧视图首先将UDTF应用于基表的每一行,然后将结果输出行与输入行连接起来以形成具有所提供表别名的虚拟表。

这是来自Presto migration from Hive docs的示例:

SELECT student, score
FROM tests
LATERAL VIEW explode(scores) t AS score;

Hive Lateral View文档中的示例:

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一起使用。