聚合配置单元表中的有序行

pgpifvop  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(304)

我在配置单元中有一个表,其中有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中做到这一点吗?
分组显然不起作用,因为我不想分组产品,如果他们是结果,我试过的情况下,滞后和领先,但没有工作!
谢谢!

xxe27gdn

xxe27gdn1#

首先,这是你想做的一个循环,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

现在您可以通过在starter id上分组来获得结果。

1 4
3 6
4 4

当然,您现在可以选择使用另一个连接来附加产品的名称。

1 product1 4
3 product2 6
4 product1 4

仅此而已!

相关问题