具體思路需要根據資料來定,常見的解決方法如下:
1、使用case when 查詢出多列即可,即可增加列。
或者2.轉成陣列或者集合後 乙個乙個的取值 不就變成一列了
乙個字段 多個取值 變成多列
多列變一列
select concat(str1,str2,str3) from 表; – concat可以帶多個引數
1、lateral view explode(),使用炸裂函式可以將1列轉成多行,被轉換列適用於array、map等型別。lateral view po***plode(陣列),如有排序需求,則需要索引。將陣列炸開成兩行(索引 , 值),需要as 兩個別名。
2、case when 結合concat_ws與collect_set/collect_list實現。內層用case when,外層用collect_set/list收集,對蒐集完後用concat_ws分割連線形成列。
注意 對習題二的分析
如果使用了case when 就不能分組
要想使用分組就得用sum()
Hive 行列轉換
在京東眾多業務中,業務充滿了複雜性和挑戰性,因為業務的靈活性,很多資料都儲存成xml和json格式資料,這就要求下游資料分析師們需要對其做解析後方可使用 在眾多操作中 有一種是需要對資料做行列轉換操作。資料結構 create external table jd row to column jd id...
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...