2014-07-17 471 views
1

我有宏觀傳遞豬宏觀參數

define chop_massive (my, maxev) returns grouped, massive { 
    gr = foreach (group $my by id) generate group as id, $my; 
    split gr into 
    massive if COUNT($my) > $maxev, 
    grouped otherwise; 
    $grouped = grouped; 
    $massive = foreach massive generate id, COUNT($my) as $my; 
}; 

一頭豬我的問題是通過maxev參數。 當我使用一個常量文字(例如,100L)一切都很好。然而,我想在命令行上使用-param指定的$MAX_EVENTS

我試圖

A, massive = chop_massive(A, $MAX_EVENTS); 

,並得到

mismatched input '100L' expecting set null 

我試圖

A, massive = chop_massive(A, ($MAX_EVENTS)); 

,並得到

mismatched input '(' expecting set null 

我試圖

A, massive = chop_massive(A, '$MAX_EVENTS'); 

,並得到

Macro doesn't support user defined schema that contains name that conflicts with alias name: A 

我試圖

massive if COUNT($my) > $MAX_EVENTS, 

宏觀內,得到了

Macro inline failed for macro 'chop_massive'. Reason: Undefined parameter : MAX_EVENTS 

(這個錯誤至少是明確和合理的) 。

那我該怎麼辦?

回答

0

儘管我沒有在任何地方看到它的記錄,但如果不支持作爲宏參數的表達式,我不會感到驚訝。爲什麼不把$EVENTS_PER_DAY$DAYS作爲參數傳遞給宏(三個參數而不是兩個)?

+0

nope,也不起作用(請參閱編輯) – sds

+0

我相信剛剛得到的錯誤與參數替換無關 - 這是因爲您在宏返回和其他位置都使用了'A'作爲別名。劇本。嘗試改變它到別的東西。 –