2014-04-14 40 views
0

如果bag为空,内置Pig SUM eval函数将返回null。我怎样才能覆盖这个(尽可能简单)返回0而不是null。扩展Pig SUM函数

public class CustomSum extends SUM{ 
    // Which methods to override. 
} 

,或者有什么办法可以做到这一点的脚本来检查,如果SUM返回null然后使它0

例如:A = FOREACH(协同组外部)组作为URL(1- $ d)+ $ d * SUM(a.values)作为totalValue。

我正在做一个外部COGROUP。所以在组中有一些没有值的记录,在这种情况下,我想返回常量(1- $ d)。但是,由于SUM返回null,totalValues变为null。

回答

0

你可以在这里使用if else逻辑。如果SUM导致一个空值并且你希望它为零,则返回(1- $ d),否则返回整个和。

A = FOREACH (COGROUP OUTER) GENERATE group as url , (1-$d)+$d*SUM(a.values)==null?(1-$d):(1-$d)+$d*SUM(a.values) as totalValue