Hive行转列(explode/lateral view)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive行转列(explode/lateral view)相关的知识,希望对你有一定的参考价值。

参考技术A explode称之为Hive爆炸函数,意思就是将一行数据炸开。
Usage:explode(array/map) explode函数传递的参数必须是一个array或者是map。

一、具体例子进行实践
现在有一张表有以下字段

需要将cureses转成列的形式。

二、扩展
上面可以看到表中还有一个用户ID,正常情况下肯定是用户对应课程的。正常的想法是以下的SQL

但是执行会报错

通常工作中,explode会结合laderal view使用。因为我们不可能只取explode里面的值,还要取其他的字段。
那么正常SQL应该是下面的

hive的行转列和列转行

参考技术A 如下图:

1、列转行,即table1查询出table2

select

    `order_id`,

    concat_ws(',', collect_list(`item_sku_id`))

from

    table1

group by

    `order_id`;

2、行转列,即table2查询出table1

select

    `order_id`,

    `item_sku_id`

from

    table2 lateral view explode(split(item_sku_id), ',') as table as item_sku_id;

以上是关于Hive行转列(explode/lateral view)的主要内容,如果未能解决你的问题,请参考以下文章

Hive 行转列LATERAL VIEW explode使用方法

hive关于行转列,列转行的使用

hive的行转列和列转行

hadoop入门系列--hive中array(或map集合类型)的行转多列LATERAL VIEW explode用法

Hive / ClickHouse 行转列函数 collect_set() / groupUniqArray()

Hive 行转列 & 列转行