我在配置单元中有一个表,其中有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
你知道如何在Hive1.1.0中做到这一点吗?
分组显然不起作用,因为我不想分组产品,如果他们是结果,我试过的情况下,滞后和领先,但没有工作!
谢谢!
1条答案
按热度按时间xxe27gdn1#
首先,这是你想做的一个循环,Hive不是很适合这种问题。
也就是说,有一种方法应该奏效:
假设这是我们的数据集
识别起始行:
1,3,4
这可以通过在id=id+1上执行左连接并查看用户和产品是否匹配来实现。按用户和产品将所有内容加入这些入门产品:
过滤掉顺序错误的东西(先开始后行),剩下的是:
组查找每行的最大有效起始值,剩余值为:
现在连接以重新连接相关维度
现在您可以通过在starter id上分组来获得结果。
当然,您现在可以选择使用另一个连接来附加产品的名称。
仅此而已!