hivesql:行列转换
1.行转列(将多行数据合并成一列)
1.1源表person_info:
name | constellation | blood_type |
---|---|---|
张三 | 白羊座 | A |
李四 | 射手座 | A |
王五 | 白羊座 | B |
赵六 | 白羊座 | A |
刘七 | 射手座 | A |
1.2需求:把星座和血型一样的人归类到一起,如下表:
cbt | name |
---|---|
射手,A | 李四,刘七 |
白羊,A | 张三,赵六 |
白羊,B | 王五 |
1.3函数:
concat(字段1,分割符,字段2) --将一行的多个字符串合并成一个字符串
concat_ws(分割符,字段1) --将一列的多个字符串按指定分隔符合并成一个字符串 group by ...
collect_set(字段) --合并的字段去重 搭配使用 concat_ws(',',collect_set(name))
collect_list(字段) --合并的字段不去重 concat_ws(',',collect_list(name))
1.4代码:
select
cbt,
concat_ws(',',collect_list(name)) as name
from
(selectconcat(constellation,',',blood_type) as cbt,namefrom person_info
) tmp
group by cbt
;
1.5结果展示:
OK
+--------+--------+--+
| cbt | name |
+--------+--------+--+
| 射手座,A | 李四,刘七 |
| 白羊座,A | 张三,赵六 |
| 白羊座,B | 王五 |
+--------+--------+--+
3 rows selected (72.361 seconds)
0: jdbc:hive2://wxt01:10000>
2.列转行(将一列数据炸裂,通过某个间隔符切分转化为多行数据)
2.1源表movie
name | category |
---|---|
《疑犯追踪》 | 悬疑,动作,科幻,剧情 |
《Lie to me》 | 悬疑,警匪,动作,心理,剧情 |
《战狼2》 | 战争,动作,灾难 |
2.2需求:将电影分类中的数组数据展开。结果如下:
《疑犯追踪》 悬疑
《疑犯追踪》 动作
《疑犯追踪》 科幻
《疑犯追踪》 剧情
《Lie to me》 悬疑
《Lie to me》 警匪
2.4函数
explode(字段) --将hive中一列中复杂的array或map结构拆分成多行(炸裂)
--使用 lateral view explode(category)
2.3代码
select
name,
category_name
from movie
lateral view explode(category) a as category_name
;
2.4结果展示
OK
+--------------+----------------+--+
| name | category_name |
+--------------+----------------+--+
| 《疑犯追踪》 | 悬疑 |
| 《疑犯追踪》 | 动作 |
| 《疑犯追踪》 | 科幻 |
| 《疑犯追踪》 | 剧情 |
| 《Lie to me》 | 悬疑 |
| 《Lie to me》 | 警匪 |
| 《Lie to me》 | 动作 |
| 《Lie to me》 | 心理 |
| 《Lie to me》 | 剧情 |
| 《战狼2》 | 战争 |
| 《战狼2》 | 动作 |
| 《战狼2》 | 灾难 |
+--------------+----------------+--+
12 rows selected (0.393 seconds)
0: jdbc:hive2://wxt01:10000>
本文参考www.51doit.cn
hivesql:行列转换相关推荐
- [转载]SQL Server行列转换实现
一.Pivot和UnPivot介绍 1.Pivot介绍 PIVOT用于将列值旋转为列名(即行转列),在SQL Server 2000可以用聚合函数配合CASE语句实现 PIVOT的一般语法是:PIVO ...
- SQL Server 行列转换(2)
参考前一个例子http://www.cnblogs.com/insus/articles/1969896.html,现想使用另外一种方式来处理行列转换,实现下面效果: 参考代码: View Code ...
- Oracle 行列转换总结
行列转换包括以下六种情况: *列转行 *行转列 *多列转换成字符串 *多行转换成字符串 *字符串转换成多列 *字符串转换成多行 下面分别进行举例介绍. 首先声明一点,有些例子需要如下10g及以后才有的 ...
- SAP行列转换的一个方法
经常会遇到行列转换的需求.于是就找到了这样的一段代码.虽然也有其他的转换方法.但是都没有及时的记录.于是 就想起了将这段经典代码写在这里. TABLES spfli. data: it_dat ...
- SQL语句行列转换两种方法 case ...when 和pivot函数应用
2019独角兽企业重金招聘Python工程师标准>>> SQL语句行列转换两种方法 case ...when 和pivot函数应用SQL语句行列转换两种方法 case ...when ...
- DataStage系列教程 (Pivot_Enterprise 行列转换)
有人提到Pivot_Enterprise这个组件,之前没有用过,今天捣腾了会,写下来供以后参考,如果有什么不对的,还请多指出,谢谢! Pivot_Enterprise主要用来进行行列转换. 1 示例 ...
- 用python做数据分析(行列转换)
python行列转换 用reshape是有问题的,因为这是根据一个顺序的数进行遍历的 但是,用下面这个函数就有了对应的操作 C:\Users\Administrator>python Pytho ...
- SQL Server 2005之PIVOT/UNPIVOT行列转换
SQL Server 2005之PIVOT/UNPIVOT行列转换 作者: NinGoo(http://ningoo.itpub.net) 发表于: 2007.04.18 11:49 分类: SQL ...
- 在Sqlserver下巧用行列转换日期的数据统计
在Sqlserver下巧用行列转换日期的数据统计 原文:在Sqlserver下巧用行列转换日期的数据统计 在Sqlserver下巧用行列转换日期的数据统计 前言 在SQLSERVER 中有很多统计函数 ...
- mysql行列转换_Excel、SQL、Python分别实现行列转换
目录: Excel Excel 实现行转列 Excel 实现列转行 Python Python 实现行转列 Python 实现列转行 SQL MySQL 实现行转列 MySQL 实现列转行 一.Exc ...
最新文章
- python培训好学吗-python难学吗?为什么上了python培训还是学不会?
- 搭建阿里云ecs服务器(一:购买)
- 查看Tomcat版本及多版本切换
- 程序员面试100题之四:求1+2+...+n
- 大型科技公司架构:中台模式的爱与恨
- [蓝桥杯]试题 基础练习 Huffuman树
- 四种方法实现两个等大数组之间内容交换
- 程序员教你十分钟做出炫酷桌面
- Hadoop Shell 命令详解
- win7系统如何卸载漏洞补丁--win10专业版
- php快递按选择次数排序,php快递接口查询api 不限制次数
- python获取ip所在地详细地址_Python 获取本机 IP 地址
- java获取本机的外网IP地址(亲测有效)
- 2020中国隧道与地下工程大会(CTUC)暨中国土木工程学会隧道及地下工程分会第二十一届年会
- 打开记事本文件出现黑色方块的解决办法
- 支付宝sdk集成,报系统繁忙 请稍后再试(ALI64)
- 在线工具:电脑怎么提取图片中的文字?图片如何转化为文字?
- 数据库中几个基本概念 主码 外码
- Java笔记(2)--java基础语法
- 为什么我们需要独立的B2C网店