Hive "行转列"和"列转行" - lixiaotaoplus的专栏 - 博客频道 - CSDN.NET http://blog.csdn.net/lixiaotaoplus/article/details/43916549
在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
以上小结知识点,大家或许也使用到过,这里整理出来,仅供参考和灵活使用。如果有任何疑问欢迎与我取得联系,谢谢。
From:My E-mail share,数据开发HIVE-SQL案例分享,2014/11/3 (周一) 22:27