聚合的 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 逻辑测试的主要内容,如果未能解决你的问题,请参考以下文章

Apache Pig Latin 参考手册 [关闭]

ruby pig_latin.rb

Pig latin

Pig UDF 或 Pig Latin 还是两者兼而有之?

处理 PIG Latin 中的重复记录

PIG latin - DUMP 命令不显示