Hive中常用函数 wm_concat & concat_ws & collect_set & sort_array总结

29 篇文章 1 订阅
13 篇文章 2 订阅

concat_ws & collect_set:

应用1:

usereach_id
user_id1id1
user_id1id2
user_id2id1
user_id2id2
user_id2id3
user_id3id1
userids
user_id1id1,id2
user_id2id1,id2,id3
user_id3id1
select 
	dt,
	user_id, 
	concat_ws(',',collect_set(each_id)) as ids
from table_a  
group by dt,user_id

应用2:

画像格式【0.96:时尚:text1,0.0:音乐:text2,1.0:游戏:text3】

select
	uuid,
	concat_ws(',',collect_set( concat(  cast(weight_score as string), ':' , cast(first_cate as string) , ':' , nvl(first_text,'-') ) ) ) as first_category
from table_temp	

collect_set的作用:

(1)去重,对group by后面的user_id进行去重

(2)对group by以后属于同一user_id的形成一个集合,结合concat_ws对集合中元素使用,进行分隔形成字符串

wm_concat 

select dt
        ,appid
        ,wm_concat(concat(cnt,':',uv),'|','asc',cnt) as uv_str
from(
        select dt
                ,appid
                ,cnt
                ,count(distinct user_id) as uv
        from test_table
        group by dt,appid,cnt
)tmp
group by dt,appid

wm_concat功能:把聚合数据拼接成一个字符串,一般搭配group by 使用。
参数:

  •     col1 : columnName,合并字段
  •     splitstr : string,分隔符
  •     asc | desc : string,升降序
  •     col2 : columnName,排序字段 

sort_array & collect_set & concat_ws(等同wm_concat )

select dt
		,appid
		,concat_ws('|',sort_array(collect_set(concat_ws(':',cnt,uv))))as uv_str
from(
		select dt
				,appid
				,cnt
				,count(distinct user_id) as uv
		from test_table
		group by dt,appid,cnt
)tmp
group by dt,appid

concat_ws功能:使用给定的分隔符将多个输入字符串列连接到一个字符串列中
collect_set功能:聚合函数,返回去除重复元素后的集合。
sort_array功能:集合函数,对输入数组元素按升序或降序排序。空元素将按升序放在返回数组的开头,或按降序放在返回数组的末尾。 

 

函数ws_concat是错误的引用。正确的函数名称应该是concat_wsconcat_ws函数用于将多个字符串连接成一个字符串,并以指定的分隔符进行分隔。与concat函数不同的是,concat_ws函数在执行时不会因为NULL值而返回NULL。 例如,在MySQL使用concat_ws函数进行字符串拼接可以按照以下方式: SELECT concat_ws(',', '11', '22', NULL); 这将返回一个以逗号作为分隔符的字符串结果:"11,22" 请注意,参数的NULL值将被忽略,不会在结果出现null。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [mysql字符串连接函数](https://download.csdn.net/download/shan33/3807042)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatgptT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [Hive常用函数 wm_concat & concat_ws & collect_set & sort_array总结](https://blog.csdn.net/weixin_40983094/article/details/112220844)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatgptT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [MySQL concatconcat_ws、group_concat 用法](https://blog.csdn.net/weiguang102/article/details/124011718)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatgptT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值