2014-07-17 201 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'作为别名。剧本。尝试改变它到别的东西。 –