我需要一个pig脚本来将包含活动id、开始日期、结束日期和金额的单行转换为多行:每天一行,其中包含分配给该天的金额。例如,模式是:campaignid,startdate,enddate,totalamount
我的输入行有:
1,2015-01-01,2015-01-10,10000
我需要为这个“活动”的每一天创建单独的行,将每天的总金额划分为如下模式:
活动ID、日期、金额
1,2015-01-01,1000
1,2015-01-02,1000
1,2015-01-03,1000
... 等活动的每一天一排
我希望我可以使用嵌套的foreach和daysbetween函数。
1条答案
按热度按时间kjthegm61#
使用标准清管器解决这个问题有点困难,挑战是两个日期之间的动态数据生成。假设月份重叠(
ie, 2015-01-28 to 2015-02-06
)那么Pig就没有任何智力从1月开始产生4天,从2月开始产生6天。要解决这个问题,一个选项是将日期生成部分移动到自定义自定义自定义项,解析输入并生成中间日期。
例1:仅限
one input
日期是not overlapped
输入:Pig手稿:
输出:
例2:
two inputs
,first input
是not overlapped
以及second input
是overlapped
输入1:Pig手稿:
输出:
您需要编译下面的java代码并生成
PARSEDATE.jar
文件并包含到你的Pig脚本。我只是临时写了这段代码,你可以根据需要进行优化。解析日期.java