我有一个表1,其中包含User_ID和Item_List,其中项目是随机排列的
Customer_id Item_List
22 1,4,3,2
24 6,3,2,1
23 4,5,7,8
表2列出了根据最高值
的项目Item_Id Item_Rank
1 8
2 5
3 3
4 4
5 2
6 7
7 1
8 6
我想生成一个具有Customer_id的表,其中相应的项目列表根据表2中的项目排名进行排名
Customer_id Ranked_Item_List
22 3,4,2,1
24 3,2,6,1
23 7,5,4,8
我不知道在蜂巢中执行此操作的任何有效方法。有什么建议吗?
答案 0 :(得分:0)
我可以用两种不同的方式思考,创建你的UDF以避免爆炸或
select customer_id, collect_list(item_id) from (
select customer_id, item_id, item_rank from
table1 lateral view inline(item_list) item_id join
table2 on table1.item_id = table2.item_id --this should be done as mapjoin if your rank table is not big
) distributed by customer_id, sort by item_rank;
就像我之前说过的,根据您的数据大小,您可以创建一个UDF,以根据您的查找表在映射器级别应用排序