1. 程式人生 > >hive的行列轉換

hive的行列轉換

一、列轉行 (對某列拆分,一列拆多行)
使用函式:lateral view explode(split(column, ',')) num

eg: 如表:t_row_to_column_tmp 資料如下,對tag列進行拆分


SQL程式碼:
select id,tag,tag_new
from t_row_to_column_tmp
lateral view explode(split(tag, ',')) num as tag_new

where id=212022894;


二、行轉列 (根據主鍵,進行多行合併一列)
使用函式:concat_ws(',',collect_set(column))  
說明:collect_list 不去重,collect_set 去重。 column 的資料型別要求是 string

eg:如表:t_column_to_row ,根據id,對tag_new 進行合併


SQL程式碼1:
select id,
concat_ws(',',collect_set(tag_new)) as tag_col
from t_column_to_row

group by id;


SQL程式碼2:

select id,

concat_ws(',',collect_list(tag_new)) as tag_col

from t_column_to_row

group by id;