如果包是空的,内置Pig SUM eval函数返回null。我怎样才能覆盖这个(尽可能简单)返回0而不是null。
public class CustomSum extends SUM{
// Which methods to override.
}
或者我有什么方法可以在脚本中检查SUM是否返回null然后将其设为0。
例如:A = FOREACH(COGROUP OUTER)组为url,(1- $ d)+ $ d * SUM(a.values)为totalValue。
我正在做一个外部COGROUP。所以组中有一些记录没有值,在这种情况下我想返回常量(1- $ d)。但是,当SUM返回null时,totalValues变为null。
答案 0 :(得分: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