普雷斯托有一个 UNNEST 函数来分解由数组组成的列。 hive 也有类似的吗?有关详细信息,请参阅文档 UNNEST 普雷斯托在这里的作用。
UNNEST
hfwmuf9z1#
使用 lateral view [outer] explode . 横向视图首先将udtf应用于基表的每一行,然后将生成的输出行与输入行连接起来,形成一个具有提供的表别名的虚拟表。这是从hive文档进行presto迁移的示例:
lateral view [outer] explode
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 通常不会生成行:
OUTER
LATERAL VIEW
SELECT * FROM src LATERAL VIEW OUTER explode(array()) C AS a limit 10;
在这个例子中 array 为空,但来自 src 将被退回侧视图不仅可用于 explode() udtf公司。请参阅包含示例的配置单元嵌入UDTF列表。您还可以编写自己的udtf并将其与 LATERAL VIEW .
array
src
explode()
1条答案
按热度按时间hfwmuf9z1#
使用
lateral view [outer] explode
. 横向视图首先将udtf应用于基表的每一行,然后将生成的输出行与输入行连接起来,形成一个具有提供的表别名的虚拟表。这是从hive文档进行presto迁移的示例:
以及hive侧视图文档中的示例:
使用
OUTER
关键字生成行,即使LATERAL VIEW
通常不会生成行:在这个例子中
array
为空,但来自src
将被退回侧视图不仅可用于
explode()
udtf公司。请参阅包含示例的配置单元嵌入UDTF列表。您还可以编写自己的udtf并将其与LATERAL VIEW
.