hive行转列,列转行的应用场景:
1、 需要取“订单号”对应的所有商品“SKU号”,商品“sku号”放在一列,即从table1查询出table2;
2、 当商品“sku号”均在一列的时候,需要查询每个“sku号”对应的“订单号”,即从table2查询出table1。
3、场景:在hive表中,一个用户会有多个人群标签,List格式(逗号分隔如要转成List),有时我们需要统计一个人群标签下有少用户,这是就需要使用行转列。
示例如下:(场景一,场景二)
实现方法:
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: