Hive "行轉列"和"列轉行" - lixiaotaoplus的專欄 - 博客頻道 - CSDN.NET http://blog.csdn.net/lixiaotaoplus/article/details/43916549
在Hive實際開發(fā)過程中,我們會遇到“行轉列”和“列轉行”的場景。比如:
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
以上小結知識點,大家或許也使用到過,這里整理出來,僅供參考和靈活使用。如果有任何疑問歡迎與我取得聯系,謝謝。
From:My E-mail share,數據開發(fā)HIVE-SQL案例分享,2014/11/3 (周一) 22:27