Hive中列转行函数collect_set详解

Hive中列转行函数collect_set详解

--1.创建测试表
create table test1011
(
   c1  string,
   c2  string,
   c3  string
)
row format delimited fields terminated by ' '
stored as textfile;

--2.添加测试文件和数据
test20171011.txt
a b 1
a b 2
a b 3
c d 4
c d 5
c d 6

--3.加载数据
--使用场景: 通过hue文件上传
load data inpath '/user/pabrdm/test20171011.txt' into table pabrdm.test1011;  
--使用场景: linux后台执行         
--load data local inpath '/user/pabrdm/test20171011.txt' into table pabrdm.test1011;  
有local表示从本地文件系统加载(文件会被拷贝到hdfs中)
无local表示从hdfs中加载数据(注意:文件直接被移动,而不是拷贝)
overwrite 表示是否覆盖表中数据(或指定分区的数据)(没有overwrite 会直接append,而不会滤重)

--4.查询
select * from test1011;
select c1,c2,collect_set(c3) as c3
  from test1011
 group by c1,c2;
 
结果如下:
c1 c2 c3
a b ["1","2","3"]
c d ["4","5","6"]

--5.补充字符串连接函数:concat_ws  带分隔符
它是一个特殊形式的concat(),第一个参数为分隔符。
这个函数会跳过分隔符参数后的任何null和空字符串。
分隔符将被加到被连接的字符串之间,如果分隔符是null,返回值也将为null。

select c1,c2,concat_ws(',',collect_set(c3)) as c3
from test1011
group by c1,c2;
c1 c2 c3
a b 1,2,3
c d 4,5,6

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值