天天看點

SQL| 如何在Hive中實作group_concat功能?

SQL| 如何在Hive中實作group_concat功能?

今天要講取如何在hive中實作group_concat的實作方法,喜歡的友友記得點贊➕關注,我們一起學習一起進步哦[來看我]。

大家都知道,mysql中的group_concat分組連接配接功能相當強大,可以先分組再連接配接成字元串,還可以進行排序連接配接。但是hive中并沒有這個函數,那麼hive中怎麼實作這個功能呢?

這裡要用到:concat_ws函數和collect_list、collect_set 函數來實作相同的功能。

1. 建立測試表(無分區表):

SQL| 如何在Hive中實作group_concat功能?

2.實作‬方法‬一‬: concat_ws + collect_set + group by

1)SQL代碼

select
id,
concat_ws(',',collect_set(content)) as con_con,
concat_ws(',',collect_set(comment)) as con_com
  from db_name.test_tb
group by id           
SQL| 如何在Hive中實作group_concat功能?

2)結果解讀‬:無序且不對應(con_con與con_com的位置)

—— 但是注意 collect_set會将重複的資料删除,因為集合的性質。

每次運作連接配接的結果順序都可能不一樣。

3. 實作‬方法二‬:concat_ws + collect_list + group by

1)SQL代碼

select
id,
concat_ws(',',collect_list(content)) as con_con,
concat_ws(',',collect_list(comment)) as con_com
from db_name.test_tb
group by id           
SQL| 如何在Hive中實作group_concat功能?

2)結果解讀‬:對應(con_con與con_com的位置)但無序。

SQL| 如何在Hive中實作group_concat功能?