博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Hive 行列转换
阅读量:4641 次
发布时间:2019-06-09

本文共 994 字,大约阅读时间需要 3 分钟。

在京东众多业务中,促销业务充满了复杂性和挑战性,因为业务的灵活性,很多数据都存储成xml和json格式数据,这就要求下游数据分析师们需要对其做解析后方可使用 。

在众多操作中 ,有一种是需要对数据做行列转换操作。

数据结构:

create external table jd_row_to_column(jd_id string ,jd_session string );

数据描述:

insert into jd_row_to_column values('0001','01,02,03,04');

1.行转列(对一列数据拆分成多行)

使用函数 lateral view explode(split(column_name, ',')) col_nm

我们对上面表结构的jd_session列按照逗号进行数据拆分

拆分SQL:

select	jd_id,	jd_session,	sessionfrom	jd_row_to_column lateral view explode(split(jd_session, ',')) ses as sessionwhere	jd_id = '0001';

The result:

 

2.列转行(根据主键,数据合并)

使用函数:concat_ws(',',collect_set(column))  其中 函数collect_set 会对原始数据做去重操作,collect_list 则不会

我们将对上面的结果进行数据合并操作,看看结果是不是满足要求

The SQL:

select	jd_id,	jd_session,	concat_ws(',', collect_set(session)) as jd_session_v2from	(		select			jd_id,			jd_session,			session		from			jd_row_to_column lateral view explode(split(jd_session, ',')) ses as session		where			jd_id = '0001'	)	tgroup by	jd_id,	jd_session ;

The Result :

 

转载于:https://www.cnblogs.com/TendToBigData/p/10501170.html

你可能感兴趣的文章
简单入门dos程序
查看>>
vue element 关闭当前tab 跳转到上一路由
查看>>
4、面向对象
查看>>
[NOI2005]聪聪与可可(期望dp)
查看>>
POJ 3723
查看>>
Maven的安装
查看>>
angular初步认识一
查看>>
springmvc3.2+spring+hibernate4全注解方式整合(一)
查看>>
Elgg网站迁移指南
查看>>
素数筛法优化
查看>>
installshield 注册dll
查看>>
Sublime Text 3 及Package Control 安装(附上一个3103可用的Key)
查看>>
LTE QCI分类 QoS
查看>>
Get MAC address using POSIX APIs
查看>>
bzoj2120
查看>>
基于uFUN开发板的心率计(一)DMA方式获取传感器数据
查看>>
【dp】船
查看>>
oracle, group by, having, where
查看>>
⑥python模块初识、pyc和PyCodeObject
查看>>
object-c中管理文件和目录:NSFileManager使用方法
查看>>