2012-12-13 83 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

好吧,我放棄了,在豬解析器引擎在宏中不能接受單個配額或減號' - '。

有一個解決方案,使用驅動程序代碼來替換豬文件中的一些存根。

其實豬應該這樣做,但我不知道爲什麼它不在宏觀。

相關問題