Hive 行列轉換

2021-08-28 11:23:22 字數 1579 閱讀 6359

在京東眾多業務中,**業務充滿了複雜性和挑戰性,因為業務的靈活性,很多資料都儲存成xml和json格式資料,這就要求下游資料分析師們需要對其做解析後方可使用 。

在眾多操作中 ,有一種是需要對資料做行列轉換操作。

資料結構:

create external table jd_row_to_column(

jd_id string ,

jd_session string

);

資料描述:

insert into jd_row_to_column values('0001','01,02,03,04');
1.行轉列(對一列資料拆分成多行)

使用函式 lateral view explode(split(column_name, ',')) col_nm

我們對上面表結構的jd_session列按照逗號進行資料拆分

拆分sql:

2.列轉行(根據主鍵,資料合併)

使用函式:concat_ws(',',collect_set(column))  其中 函式collect_set 會對原始資料做去重操作,collect_list 則不會

我們將對上面的結果進行資料合併操作,看看結果是不是滿足要求

Hive中行列轉換

1 演示多列轉為單行 資料檔案及內容 student.txt xiaoming english 92.0 xiaoming chinese 98.0 xiaoming math 89.5 huahua chinese 80.0 huahua math 89.5 建立表studnet create t...

hive 行列轉換案例

0 stu表資料 stu id name hello,you zm2008 hello,me zm2015 1 實現單詞計數 列轉行 split切分 explode 炸開 1.0 資料拆分成陣列 select split id,from stu 得到陣列 hello,you hello,me 1.1...

hive行列轉換總結

具體思路需要根據資料來定,常見的解決方法如下 1 使用case when 查詢出多列即可,即可增加列。或者2.轉成陣列或者集合後 乙個乙個的取值 不就變成一列了 乙個字段 多個取值 變成多列 多列變一列 select concat str1,str2,str3 from 表 concat可以帶多個引...