我在配置单元中有一个表格,其中包含4列:
row_id| user_id|product_id| duration
1 1 product1 3
2 1 product1 1
3 1 product2 6
4 1 product3 2
5 1 product1 4
6 1 product4 3
7 1 product4 5
8 1 product4 7
9 2 product4 3
10 2 product4 6
我想为每个用户汇总相同产品的行,只有当结果按顺序
时,才会计算持续时间并计算点击次数row_id| user_id|product_id |duration_per_product |clicks_per_product
1 1 product1 4 2
2 1 product2 6 1
3 1 product3 2 1
4 1 product1 4 1
5 1 product4 15 3
6 2 product4 9 2
如何在hive 1.1.0中做任何想法?
显然没有工作,因为我不想将产品分组,如果它们结果,我已经尝试了案例,滞后和领导,但没有工作!
谢谢!
答案 0 :(得分:0)
首先,这是你想要在循环中做的事情, hive不太适合这类问题。
话虽如此,这是一种应该有效的方法:
假设这是我们的数据集
1 1 product1 3
2 1 product1 1
3 1 product2 6
4 1 product1 4
识别入门行:1,3,4
这可以通过在id = id + 1上执行左连接并查看用户和产品是否匹配来完成。
用户和产品将所有内容加入到这些启动器中:
1 1
1 2
1 4
3 3
4 1
4 2
4 4
过滤掉错误顺序的事物(行前启动),剩下的是:
1 1
1 2
1 4
3 3
4 4
分组以查找每行的最大有效启动器,剩余的将是:
1 1
1 2
3 3
4 4
现在加入以重新附加相关维度
1 1 3
1 2 1
3 3 6
4 4 4
现在,您可以通过对起始ID进行分组来获得结果。
1 4
3 6
4 4
当然,您现在可以选择使用其他联接来附加产品名称。
1 product1 4
3 product2 6
4 product1 4
这就是全部!