hive中的contact,concat_ws,collect_set(),explode实现行列互转

hive工作中用到的一些拼接函数
1. concat(string s1, string s2, string s3)
这个函数能够把字符串类型的数据连接起来,连接的某个元素可以是列值。
如 concat( aa, ':', bb) 就相当于把aa列和bb列用冒号连接起来了,aa:bb。


2. cast 
用法:cast(value as type)
功能:将某个列的值显示的转化为某个类型
例子:cast(age as string ) 将int类型的数据转化为了String类型


3. concat_ws(seperator, string s1, string s2...)
功能:制定分隔符将多个字符串连接起来,实现“行转列
例子:常常结合group bycollect_set使用

有表结构a string , b string , c int
数据为
c d 1
c d 2
c d 3

想要得到


c d 1,2,3

语句如下

select a, b, concat_ws(',' , collect_set(cast(c as string)))
from table group by a,b;

4. 上述用的到的 collect_set 函数,有两个作用,第一个是去重,去除group by后的重复元素,
第二个是形成一个集合,将group by后属于同一组的第三列集合起来成为一个集合。与contact_ws
结合使用就是将这些元素以逗号分隔形成字符串。

5.explode(col_name) 
将hive中一列array/map转成一行,即“列转行”,上述3反过来。
用法:

select a,b,explode(split(c,',')) from table

  • 19
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值