hivesql中concat,concat_ws,collect_set 的常见用法

1.concat是将字符串连接起来,相当于python中的join;

concat_ws(合并时的分隔符,合并id,name........)

collect_set(字段):根据某个字段分组后,把分在一组的数据合并在一起,默认分隔符','

2.使用concat_ws()和collect_set()进行合并行

将列表中一个id可能会占用多行转换为每个user占一行的目标表格式,实际是“列转行”

举例1:select id,concat_ws(',',collect_set(concat(name,'(',content,')')))  from table group by id;

concat 将name和content 连接起来

举例2:
select a.id, concat_ws(',',collect_set(g.school_id)), count(g.school_id)sum from jk_ods_fz_cd_base.ods_fz_cd_base_es_paper_questiong,jk_ods_fz_so_question.ods_fz_so_question_q_jk_question  a where a.id=g.jk_question_id  group by a.id having sum>2 limit 10;
将id进行分组后,school_id进行字符串拼接

collect_set的作用:

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

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

猜你喜欢

转载自blog.csdn.net/qq_35958094/article/details/80460397