Hive "行轉(zhuǎn)列"和"列轉(zhuǎn)行" - lixiaotaoplus的專(zhuān)欄 - 博客頻道 - CSDN.NET http://blog.csdn.net/lixiaotaoplus/article/details/43916549
在Hive實(shí)際開(kāi)發(fā)過(guò)程中韭脊,我們會(huì)遇到“行轉(zhuǎn)列”和“列轉(zhuǎn)行”的場(chǎng)景囚衔。比如:
1赦肃、 需要取“訂單號(hào)”對(duì)應(yīng)的所有商品“SKU號(hào)”,商品“sku號(hào)”放在一列构灸,即從table1查詢出table2;
2处窥、 當(dāng)商品“sku號(hào)”均在一列的時(shí)候今魔,需要查詢每個(gè)“sku號(hào)”對(duì)應(yīng)的“訂單號(hào)”,即從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
關(guān)鍵點(diǎn):使用到****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)
關(guān)鍵點(diǎn):使用到****explode()弓颈、split()和LATERAL VIEW
以上小結(jié)知識(shí)點(diǎn)帽芽,大家或許也使用到過(guò),這里整理出來(lái)翔冀,僅供參考和靈活使用导街。如果有任何疑問(wèn)歡迎與我取得聯(lián)系,謝謝纤子。
From:My E-mail share搬瑰,數(shù)據(jù)開(kāi)發(fā)HIVE-SQL案例分享,2014/11/3 (周一) 22:27