在hive實際開發過程中,我們會遇到「行轉列」和「列轉行」的場景。比如:
1、 需要取「訂單號」對應的所有商品「sku號」,商品「sku號」放在一列,即從table1查詢出table2;
2、 當商品「sku號」均在一列的時候,需要查詢每個「sku號」對應的「訂單號」,即從table2查詢出table1。
實現方法:
1、從table1查詢出table2:
select
sale_ord_id
,concat_ws(',',collect_set(item_sku_id))as item_sku_id
from table1
where dt=sysdate(-1)
group by sale_ord_id
關鍵點:使用到****concat_ws()和collect_set()
2、從table2查詢出table1:
select
sale_ord_id
,sku_id
from table2
lateral view explode(split(item_sku_id,',')) adtable as sku_id
where dt=sysdate(-1)
關鍵點:使用到****explode()、split()和lateral view
hive 列轉行和行轉列
1.假設我們在hive中有兩張表,其中一張表是存使用者基本資訊,另一張表是存使用者的位址資訊等,表資料假設如下 user basic info id name1a 2b3c 4duser address name address aadd1 aadd2 badd3 cadd4 dadd5 id na...
hive 列轉行和行轉列
1.假設我們在hive中有兩張表,其中一張表是存使用者基本資訊,另一張表是存使用者的位址資訊等,表資料假設如下 user basic info idname1a 2b3c 4duser address name address aadd1 aadd2 badd3 cadd4 dadd5 我們可以看到...
Hive行轉列和列轉行
優點 好理解 缺點 多次select同一張表,造成計算量成倍增加 冗餘,單個select條件複雜後會變得較難維護。concat height height,weight weight,age age as value select id,height as label,height as value...