据Hive的dwd库中相关表或MySQL数据库shtd_store中订单相关表(order_detail、order_info、sku_info),对用户购买过的商品进行去重,将其转换为以下格式:第一列为用户id mapping,第二列为用户购买过的商品id mapping,按照user_id与sku_id进行升序排序,输出前5行(Mapping操作:例如用户id:1、4、7、8、9,则做完mapping操作转为字典类型,键0对应用户id 1,键1对应用户id 4,以此类推)
时间: 2023-11-27 12:53:46 浏览: 334
首先,我们需要对用户id和商品id进行mapping操作,将其转换为字典类型。假设用户id和商品id已经分别存储在列表user_ids和sku_ids中,可以使用以下代码进行mapping操作:
```
user_id_mapping = {i: user_ids[i] for i in range(len(user_ids))}
sku_id_mapping = {i: sku_ids[i] for i in range(len(sku_ids))}
```
接下来,我们需要从dwd库中的订单相关表中获取用户购买过的商品信息。可以使用以下SQL语句:
```
SELECT DISTINCT user_id, sku_id
FROM dwd.order_detail
JOIN dwd.order_info ON order_detail.order_id = order_info.order_id
JOIN dwd.sku_info ON order_detail.sku_id = sku_info.sku_id;
```
将查询结果存储在列表user_sku中。然后,我们需要根据user_id_mapping和sku_id_mapping将user_sku中的用户id和商品id进行mapping操作,转换为字典类型。可以使用以下代码:
```
user_sku_dict = {}
for row in user_sku:
user_id = row[0]
sku_id = row[1]
if user_id in user_id_mapping and sku_id in sku_id_mapping:
user_idx = list(user_id_mapping.keys())[list(user_id_mapping.values()).index(user_id)]
sku_idx = list(sku_id_mapping.keys())[list(sku_id_mapping.values()).index(sku_id)]
if user_idx not in user_sku_dict:
user_sku_dict[user_idx] = [sku_idx]
else:
user_sku_dict[user_idx].append(sku_idx)
```
最后,我们需要按照user_id与sku_id进行升序排序,并输出前5行。可以使用以下代码:
```
sorted_user_sku = sorted(user_sku_dict.items(), key=lambda x: (x[0], x[1]))
for i in range(5):
user_idx = sorted_user_sku[i][0]
sku_idx_list = sorted_user_sku[i][1]
user_id = user_id_mapping[user_idx]
sku_id_list = [sku_id_mapping[sku_idx] for sku_idx in sku_idx_list]
print(user_id, sku_id_list)
```
阅读全文