Hive "行转列"和"列转行"

来源:互联网 发布:Mac 变速播放器 编辑:程序博客网 时间:2024/06/02 21:12

在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

0 0
原创粉丝点击