2012-12-13 54 views
1

我在PigLatin如何在PigLatin中添加引号字符串的参数?

一个问题,我有一段猪代码将调用一个字符串报价

data = LOAD '$data' AS (...); 
a = some_macro(data,'-9999 AS KEY'); 

宏是这样的:

DEFINE some_macro(data, string) RETURNS results { 
    grp = GROUP $data ALL; 
    $result = FOREACH grp { 
     //...logic and logics 
     GENERATE $string, //...other fields 
     ...; 
    } 
} 

字符串“ -9999 AS KEY“,似乎Pig 0.10无法工作,然后我尝试”'-9999'AS KEY“,它不能再工作。

因此,任何人都有解决方案吗?我只想要一个灵活的KEY名称。

回答

2

请尝试GENERATE '$string', //...other logic,即将$string放在单引号中。我只能用猪0.9.1测试,但它对我很有用。

some_macro(data,'-9999 AS KEY');用简单的引号是正确的。

但是,这不适用于你的字符串中的单引号。

+0

好的,但逻辑非常复杂,所以我相信不可能使用un-nest FOREACH ... – mark

0

如果你想传递一个引用的字符串,首先作为弗雷德描述修改脚本,并传递参数时使用Unicode相当于引号,例如:

a = some_macro(data,'\\u0022-9999 AS KEY\\u0022'); // "-9999 AS KEY" 
0

好吧,我放弃了,在猪解析器引擎在宏中不能接受单个配额或减号' - '。

有一个解决方案,使用驱动程序代码来替换猪文件中的一些存根。

其实猪应该这样做,但我不知道为什么它不在宏观。

相关问题