Hive 中的 Presto UNNEST 函数相当于什么

问题描述 投票:0回答:1

Presto 有一个

UNNEST
函数来分解由数组组成的列。 Hive 有类似的吗? 请参阅文档了解 Presto 的
UNNEST
功能此处

sql arrays hive presto unnest
1个回答
8
投票

使用

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

© www.soinside.com 2019 - 2024. All rights reserved.