聚合的 Pig Latin 逻辑测试
Posted
技术标签:
【中文标题】聚合的 Pig Latin 逻辑测试【英文标题】:Pig Latin logical test on aggregates 【发布时间】:2017-01-11 18:30:45 【问题描述】:我是一名高级开发人员,但对 Pig 不熟悉。
我们有一个在 Pig Latin 中构建度量的用例,如下所示
(每月购买商品和上个月购买商品)的客户数量/上个月购买商品的客户数量
第一步似乎是使用 FOREACH GROUP GENERATE COUNT(Purchases) 生成客户计数;并将其写入文件,然后再次将其读回
当我再次读回数据时,是否有一种方法可以让每个 比较当前行(现在将是按月汇总)和上一行
可能应该在数据被写出并再次读回之前对数据进行透视,并且每一列与“上一个”相比从左到右而不是逐行?
pig 中的 case 语句可以有这样的东西吗
案例(customerboolean_has_sales_february + customerboolean_has_sales_january)
2 countsalesfeb+ countalesjan/countsalesjanuary 1个空 0 空
当月骑车和上月骑车的顾客/上月骑车的顾客总数
【问题讨论】:
【参考方案1】:1)
将文件两次加载到关系 A 和关系 B 中。
将关系 A 和 B 按月份排序。
使用 RANK 生成行号。
从关系 B 中删除顶部记录。
在关系 B 上使用 RANK 来获得新的关系 B_New
在行号上加入 A 和 B_New。
为每一行从列中生成您想要的结果。
我已经回答了类似的问题here
2)
*pig 中的 case 语句可以有这样的东西吗? 案例(customerboolean_has_sales_february + customerboolean_has_sales_january) *
是的。【讨论】:
以上是关于聚合的 Pig Latin 逻辑测试的主要内容,如果未能解决你的问题,请参考以下文章