【Hive SQL】Hive Sql 列转行(lateral view 与 explode 、posexplode)详解

Hive Sql

Hive Sql 列转行(lateral view 与 explode 、posexplode)详解

explode

描述

将hive某列一行中复杂的 array 或 map 结构拆分成多行(只能输入array或map)。
通常,explode函数会与lateral view一起结合使用;

语法
explode(col)
select explode(arraycol) as newcol from tablename;

// explode():函数中的参数传入的是arrary数据类型的列名;
// newcol:是给转换成的列命名一个新的名字,用于代表转换之后的列名;
// ablename:原表名;

select explode(mapcol) as (keyname,valuename) from tablename;

// map是kay-value结构的,所以它在转换的时候会转换成两列,一列是kay转换而成的,一列是value转换而成的。
// keyname:表示key转换成的列名称,用于代表key转换之后的列名。
// valuename:表示value转换成的列名称,用于代表value转换之后的列名称。
// 注意:这两个值需要在as之后用括号括起来然后以逗号分隔。
示例
// explode(array) 使得结果中将array列表里的每个元素生成一行;
select explode(array(1,2,3,4)) as col;
"""
      +------+
      | col  |
      +------+
      | 1    |
      | 2    |
      | 3    |
      | 4    |
      +------+
"""
// explode(map)使得结果中将map里的每一对元素作为一行,key为一列,value为一列;
select explode(map('a',1,'b',2)) 
Hive SQL中,使用Lateral View可以将一个表的一拆分成多行,以便进行更复杂的查询和分析。在Lateral View中,最常用的函数是posexplodeexplode。 在引用中的例子中,使用了Lateral View posexplode函数将id按逗号分隔拆分成多行,同时生成了一个新的single_id_index和single_id。 在引用中的例子中,使用了两次Lateral View posexplode函数和where子句进行筛选。首先,将id按逗号分隔拆分成多行,并生成新的single_id_index和single_id。然后,将tim按逗号分隔拆分成多行,并生成新的single_yim_index和single_tim。最后,使用where条件将single_id_index和single_yim_index相等的行筛选出来。 在引用中的例子中,使用了Lateral View explode函数将ordr_set表中的ordr_id拆分成多行,并将每一行相应的user_id和user_layer进行拆分。tmp1是虚拟表的表名,ordr_id是拆分后的字段。 因此,Lateral ViewHive SQL中是一种非常有用的函数,可以帮助我们处理包含多值的,并进行更复杂的查询和分析。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Hive SQL中的 lateral view explode转行)以及行转](https://blog.youkuaiyun.com/qq_42374697/article/details/115273726)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *3* [Hive SQL中的lateral view explode](https://blog.youkuaiyun.com/weixin_38753213/article/details/115364880)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一年又半

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值