hive漏斗实现如何实现多行转多列

SQL多行转多列怎么实现呢
[问题点数:40分,结帖人keanmanli]
本版专家分:0
结帖率 100%
CSDN今日推荐
本版专家分:0
本版专家分:0
本版专家分:0
本版专家分:0
本版专家分:0
本版专家分:0
本版专家分:0
本版专家分:0
本版专家分:0
本版专家分:0
本版专家分:0
匿名用户不能发表回复!|
其他相关推荐用DECODE和CASE WHEN将多行单列数据改为单行多列数据(即竖向排列改为横向排列)&&
&&&回复&&&:
北京盛拓优讯信息技术有限公司. 版权所有 京ICP备号 北京市公安局海淀分局网监中心备案编号:10
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员hive函数之collect_set——将一列多行变成一行多列
一、举例说明:
有表如下:
hive& desc gengjin1;
imei & & &
& & string &
数据如下:
hive& select * from gengjin1;
现在要将同一imei不同id的字段分成多列来显示并插入到新表中,如下格式:
aaa x_x_x 333
bbb y_y_y 444
建表gengjin2结构如下:
hive& desc gengjin2;
imei & & &
& & string &
& & string &
& & string
插入数据:
insert overwrite table gengjin2 select imei,id[0],id[1] from
select imei,collect_set(id) as id from gengjin1 group by
查看结果:
hive& select * from gengjin2;
aaa x_x_x 333
bbb y_y_y 444
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。专注于Hadoop,Spark,Flink,Kafka,Elastic,HBase,Hive,Kylin等大数据相关技术的源码研究和企业级实战...
Hive中行列转换
1、演示多列转为单行
数据文件及内容: student.txt
xiaoming|english|92.0
xiaoming|chinese|98.0
xiaoming|math|89.5
huahua|chinese|80.0
huahua|math|89.5
创建表studnet:
create table student(name string,subject string,score decimal(4,1))
row format delimited
fields terminated by '|';
导入数据:
load data local inpath '/home/hadoop/hivetestdata/student.txt'
列转为行演示:
hive (hive)& select name,concat_ws(',',collect_set(subject)) from s
chinese,math
xiaoming english,chinese,math
hive (hive)& select name,concat_ws(',',collect_set(concat(subject,'=',score))) from s
huahua chinese=80,math=89.5
xiaoming english=92,chinese=98,math=89.5
2、演示单行转为多列
数据文件及内容:student2.txt
huahua|chinese=80,math=89.5
xiaoming|english=92,chinese=98,math=89.5
create table student2(name string,subject_score_list string)
row format delimitedfields terminated by '|';
导入数据:
load data local inpath '/home/hadoop/hivetestdata/student2.txt' into table student2;
行转为列演示:
hive (hive)& select * from student2;
student2.name student2.subject_score_list
chinese=80,math=89.5
english=92,chinese=98,math=89.5
hive (hive)& select name, subject_list from student2 stu2 lateral view explode(split(stu2.subject_score_list,','))stu_subj as subject_ ----别名一定不要忘记
chinese=80
xiaoming english=92
xiaoming chinese=98
xiaoming math=89.5
Impala的行列转换请查看: http://blog.csdn.net/jiangshouzhuang/article/details/
没有更多推荐了,hive 两字段合并成 一个字段 例如:字段a和字段b合并成a-b,请问如何实现、_百度知道
hive 两字段合并成 一个字段 例如:字段a和字段b合并成a-b,请问如何实现、
我有更好的答案
使用函数concatselect concat(a,'-',b) from就可以实现了。hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内建的 mapper 和 reducer 无法完成的复杂的分析工作。Hive 是一种底层封装了Hadoop 的数据仓库处理工具,使用类SQL 的HiveQL 语言实现数据查询,所有Hive 的数据都存储在Hadoop 兼容的文件系统(例如,Amazon S3、HDFS)中。Hive 在加载数据过程中不会对数据进行任何的修改,只是将数据移动到HDFS 中Hive 设定的目录下,因此,Hive 不支持对数据的改写和添加,所有的数据都是在加载的时候确定的。Hive 的设计特点如下。● 支持索引,加快数据查询。● 不同的存储类型,例如,纯文本文件、HBase 中的文件。● 将元数据保存在关系数据库中,大大减少了在查询过程中执行语义检查的时间。● 可以直接使用存储在Hadoop 文件系统中的数据。● 内置大量用户函数UDF 来操作时间、字符串和其他的数据挖掘工具,支持用户扩展UDF 函数来完成内置函数无法实现的操作。● 类SQL 的查询方式,将SQL 查询转换为MapReduce 的job 在Hadoop集群上执行。
采纳率:99%
使用函数concat.select concat(a,'-',b) from ...
本回答被提问者和网友采纳
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 hive 多列合并 的文章

 

随机推荐