[Hive] Hive SQL基础语法总结(基于 Azure云):列转行,行转列

前提

使用的是如下信息表进行操作以及展示:

select * from test_daniel

其展示结果为:
在这里插入图片描述

列转行

使用函数:concat_ws(‘split_type’,collect_list(column))

规范代码格式:

select column1,
concat_ws('split_type',collect_list(column2)) as new_column_name 
from table_name
group by column1
-- 语法含义:把相同的 column1 中的 column2 信息按照'split_type'分割转为一行,新列命名为new_column_name
-- 'split_type' 可使用:,;等

实例展示:
把相同的loadDate中的line信息按照逗号 (,) 分割转为一行

select loadDate,
concat_ws(',',collect_list(line)) as line_value 
from test_daniel
group by loadDate

其展示结果为:
在这里插入图片描述

这里也可以使用 concat_ws(‘split_type’,collect_set(column)) 函数

select loadDate,
concat_ws(',',collect_set(line)) as line_value 
from test_daniel
group by loadDate
-- collect_set去重;collect_list 不去重

其展示结果为:
在这里插入图片描述

行转列

使用 lateral view explode(split(column2,‘split_type’))函数

select column1,column2,column_split
from table_name
lateral view explode(split(column2,'split_type')) as column_split
-- Column1:key列
-- Column2:需要被分割的列,使用lateral view explode(split(column2,'split_type')) 函数
---其中'split_type'根据什么进行分割,如,;等
-- Column_split:分割后的新列

实例展示:
把一行中loadDate中的line_value信息按照逗号 (,) 分割转为多行

with cte as(
  select loadDate,
  concat_ws(',',collect_list(line)) as line_value 
  from test_daniel
  group by loadDate
)
select loadDate,line_value,order_id 
from cte
lateral view explode(split(line_value,',')) as order_id
-- order_id分割成多行后的数据
-- line_value:一行中原始按照','进行分割的数据
-- loadDate:key列

其展示结果为:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

AutismThyself

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

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

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

打赏作者

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

抵扣说明:

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

余额充值