【问题标题】:What is the equivalent of Presto UNNEST function in HiveHive中Presto UNNEST函数的等价物是什么
【发布时间】:2019-01-21 04:21:36
【问题描述】:

Presto 有一个 UNNEST 函数来分解由数组组成的列。 Hive有类似的吗? 有关 Presto hereUNNEST 功能,请参阅文档。

【问题讨论】:

    标签: arrays hive hiveql presto unnest


    【解决方案1】:

    使用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 docs 的示例:

    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 Embedded UDTFs 列表。您也可以编写自己的 UDTF 并将其与 LATERAL VIEW 一起使用。

    【讨论】:

      猜你喜欢
      • 2021-04-19
      • 2020-08-04
      • 2020-02-13
      • 2019-12-07
      • 2023-01-17
      • 1970-01-01
      • 2011-12-11
      • 1970-01-01
      • 2011-01-30
      相关资源
      最近更新 更多