在HIVE實(shí)際開發(fā)過程中,我們會遇到“行轉(zhuǎn)列”和“列轉(zhuǎn)行”的場景。比如:
1、?需要取“訂單號”對應(yīng)的所有商品“SKU號”咙边,商品“sku號”放在一列,即從table1查詢出table2次员;
2败许、?當(dāng)商品“sku號”均在一列的時候,需要查詢每個“sku號”對應(yīng)的“訂單號”淑蔚,即從table2查詢出table1市殷。
實(shí)現(xiàn)方法:
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