Hive 中 Presto UNNEST 函数的等价物是什么
What is the equivalent of Presto UNNEST function in Hive
Presto 有一个 UNNEST
函数来分解由数组组成的列。 Hive 有类似的吗?
有关 Presto here.
的 UNNEST
功能,请参阅文档
使用lateral view [outer] explode
。横向视图首先将 UDTF 应用于基础 table 的每一行,然后将生成的输出行连接到输入行以形成具有提供的 table 别名的虚拟 table。
这是来自 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
.
一起使用
Presto 有一个 UNNEST
函数来分解由数组组成的列。 Hive 有类似的吗?
有关 Presto here.
UNNEST
功能,请参阅文档
使用lateral view [outer] explode
。横向视图首先将 UDTF 应用于基础 table 的每一行,然后将生成的输出行连接到输入行以形成具有提供的 table 别名的虚拟 table。
这是来自 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
.