对聚合

时间:2017-01-11 18:30:46

标签: hadoop apache-pig

我是高级开发人员,但对Pig来说是新手。

我们有一个用例来构建Pig Latin中的度量,如下所示

购买物品月份和上个月购买物品的客户数量/上个月购买物品的客户数量

第一步似乎是使用FOREACH GROUP GENERATE COUNT(购买)生成客户计数;并将其写入文件,然后再次将其读回

当我再次读回数据时,是否有一种方法可以让每个比较当前行(现在是按月计算的总计数)和前一行

在数据写出并再次回读之前,数据应该可以旋转,并且每列与之前的数据进行比较。从左到右而不是一排一排?

猪的案例陈述可以这样吗

案例(customerboolean_has_sales_february + customerboolean_has_sales_january)

2 countsalesfeb + countalesjan / countsalesjanuary 1 null 0 null

过去一个月骑行并且在上个月骑行的客户/上个月骑行的客户总数

1 个答案:

答案 0 :(得分:0)

1)

  • 将文件加载到关系A和关系B中两次。

  • 排序关系A& B按月排序。

  • 使用RANK生成行号。

  • 从关系B中删除最高记录。

  • 在关系B上使用RANK获得新关系B_New

  • 在行号上加入A和B_New。

  • 对于每一行,从列中生成所需的结果。

我已经回答了类似问题here

2)

*猪的案例陈述可以这样吗? case(customerboolean_has_sales_february + customerboolean_has_sales_january) *