hivesql中concat,concat_ws,collect_set 的常見用法
阿新 • • 發佈:2018-11-02
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對集合中元素使用,進行分隔形成字串