2014-04-14 74 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