什么是Hive中presto unnest函数的等价物

vohkndzv  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(546)

普雷斯托有一个 UNNEST 函数来分解由数组组成的列。 hive 也有类似的吗?有关详细信息,请参阅文档 UNNEST 普雷斯托在这里的作用。

hfwmuf9z

hfwmuf9z1#

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

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

在这个例子中 array 为空,但来自 src 将被退回
侧视图不仅可用于 explode() udtf公司。请参阅包含示例的配置单元嵌入UDTF列表。您还可以编写自己的udtf并将其与 LATERAL VIEW .

相关问题