Function 猪脚本函数问题

Function 猪脚本函数问题,function,apache-pig,Function,Apache Pig,正如在下面的Pig代码中所看到的,我正在为Attr1和Attr2重复一组语句。有没有办法在函数中提取出来?代码示例将非常有用 Attr1ValidRecs = FILTER BaseRecs BY Attr1 IS NOT NULL; Attr1ValidRecs_all = GROUP Attr1ValidRecs ALL; Attr1Count = FOREACH Attr1ValidRecs_all GENERATE COUNT(Attr1ValidRecs); Attr1CountStr

正如在下面的Pig代码中所看到的,我正在为Attr1和Attr2重复一组语句。有没有办法在函数中提取出来?代码示例将非常有用

Attr1ValidRecs = FILTER BaseRecs BY Attr1 IS NOT NULL;
Attr1ValidRecs_all = GROUP Attr1ValidRecs ALL;
Attr1Count = FOREACH Attr1ValidRecs_all GENERATE COUNT(Attr1ValidRecs);
Attr1CountStr = FOREACH Attr1Count GENERATE CONCAT('Recs with Attr1 not null : ',(chararray)$0);

Attr1BaseCross = CROSS BaseRecsCount,Attr1Count;
Attr1BaseRatio = FOREACH Attr1BaseCross GENERATE CONCAT('Ratio of Not Null Attr1 to Total Base Recs: ',(chararray)((double)$1/(double)$0));

Attr2ValidRecs = FILTER BaseRecs BY Attr2 IS NOT NULL;
Attr2ValidRecs_all = GROUP Attr2ValidRecs ALL;
Attr2Count = FOREACH Attr2ValidRecs_all GENERATE COUNT(Attr2ValidRecs);
Attr2CountStr = FOREACH Attr2Count GENERATE CONCAT('Recs with Attr2 not null : ',(chararray)$0);

Attr2BaseCross = CROSS BaseRecsCount,Attr2Count;
Attr2BaseRatio = FOREACH Attr2BaseCross GENERATE CONCAT('Ratio of Not Null Attr2 to Total Base Recs:
',(chararray)((double)$1/(double)$0));

不幸的是,您无法将多行替换为一批清管器操作。这是我希望有时能做的事,所以我表示同情

过去,当我在同一个脚本中一遍又一遍地重复某些内容时,我所做的是用for循环在Python脚本(或其他任何脚本)中生成Pig拉丁代码,替换某些关键字。不过,这感觉还是很脏