0

AlanGatesによるProgrammingPigを実行していますが、マクロの機能を紹介するスクリプトでエラーが発生します:http: //ofps.oreilly.com/titles/9781449302641/advanced_pig_latin.html#macros

--macro.pig
-- Given daily input and a particular year, analyze how
-- stock prices changed on days dividends were paid out.
define dividend_analysis (daily, year, daily_symbol, daily_open, daily_close)
returns analyzed {
divs          = load 'NYSE_dividends' as (exchange:chararray,
                    symbol:chararray, date:chararray, dividends:float);
divsthisyear  = filter divs by date matches '$year-.*';
dailythisyear = filter $daily by date matches '$year-.*';
jnd           = join divsthisyear by symbol, dailythisyear by $daily_symbol;
$analyzed     = foreach jnd generate dailythisyear::$daily_symbol,
                    $daily_close - $daily_open;
};

daily   = load 'NYSE_daily' as (exchange:chararray, symbol:chararray,
        date:chararray, open:float, high:float, low:float, close:float,
        volume:int, adj_close:float);
results = dividend_analysis(daily, '2009', 'symbol', 'open', 'close');

エラーは、の二重コロンの後の予期しない$兆候dailythisyear::$daily_symbolです。

行を次のように置き換えずに、これをどのように解決しますか?

$analyzed = foreach jnd generate divsthisyear::symbol, $daily_close - $daily_open;
4

1 に答える 1

2

マクロ内ではパラメーター置換は使用できません。パラメーターはマクロに明示的に渡され、パラメーター置換はトップレベルでのみ使用される必要があります。

-dryrunコマンドライン引数を使用して、マクロがインラインでどのように展開されるかを確認できます。

したがって、とにかく、この方法でマクロでパラメータを使用することはできません。

于 2013-03-22T11:58:37.927 に答える