1. 程式人生 > >hivesql中concat,concat_ws,collect_set 的常見用法

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對集合中元素使用,進行分隔形成字串