hive字符串拼接常用方法

本文深入探讨了Hive中的拼接函数concat和concat_ws的使用方法,包括如何使用分隔符连接多个字段,实现列转行操作。通过具体实例展示了如何计算数据占比,并介绍了cast、collect_set和collect_list等辅助函数的运用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hive中常用的一些拼接函数

1.  concat()      实现把若干个字段(字段类型可不相同)数据拼接起来

用法: concat(string a1, int a2, float a3)
select concat("aa", 11, 2.2);
aa112.2

不同字段之间用分隔符连接("_")
select concat("aa","_",11,"_",2.2);
aa_11_2.2

举例:计算各个类别占比

select sourcetype
,concat(round(count(1)*100.0/total,2),"%") as rate
from table
group by sourcetype;


2.  concat_ws()   使用分隔符将若干个字符串拼接起来,实现列转行

用法: 其第一个参数是分隔符,第二个及之后的参数是待拼接数据,
类型 must be "string or array<string>"。
1. concat_ws(seperator, string s1, string s2,...)

select concat_ws("_","aa",string(11),string(2.2));
aa_11_2.2

2.常常结合group by与collect_set,collect_list使用

表数据为
id    score
11    100
11    80
22    90
22    80
22    70
select id
,concat_ws("_", collect_list(cast(score as string)))
from table 
group by id;

11 100_80
22 90_80_70

cast(value as type)     将某个列的值显示的转化为某个类型
例子:cast(score as string ) 将int类型的数据转化为了String类型

collect_set()    与group by结合,将一个字段元素形成一个集合(元素自动去重),

与contact_ws结合使用就是将这些元素以指定分隔符拼接成成字符串。

collect_list()     与collect_set() 功能类似,但不会对元素去重。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值