Presto具有UNNEST
函数来爆炸由数组组成的列。 Hive是否有类似的产品?
请参阅Presto here的UNNEST
功能的文档。
答案 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
一起使用。