Hive跨行拼接字符串的用法:group_concat和concat_ws

我们所知道的最基础的拼接函数是concat,衍生出额外的两个函数concat_ws和group_concat。

group_concat

基础语法:group_concat( [distinct] 要连接的字段 [order by 排序字段 asc/desc ] [separator ‘分隔符’] )

demo

select userid,bankid,group_concat(cast(creditlimit as string))
from vdm_fin.cc_user_bill_0724
group by userid,bankid
limit 100;

但很多不自带group_concat函数,可以用以下方式来实现同样的功能

SELECT id,
concat_ws('|', collect_set(str)) 
FROM t  
GROUP BY id;

注:collect_set 只能返回不重复的集合,若要返回带重复的要用collect_list。

衍生

Presto中的用法

select 
  a,
  array_join(array_agg(b), ',')
from table
group by a

作者:Qingyun
                
comments powered by Disqus