1

私が次のものを持っているとしましょう

DATA = foreach INPUT {
   //..
   generate group, count(name) as total;
}

キーが名前でグループ化された関係になります

('mike', 'someprop', 10)
('mike', 'otherprop', 3)
('doug', 'xprop', 5)
...

そして、各名前のトップ 10 の合計を取得したい:

ALIAS = group DATA by name;
RESULT = foreach ALIAS {
   SORTED = ORDER DATA by total desc;
   TOP10 = LIMIT SORTED 10;

   //doesn't work! can't have GROUP inside FOREACH
   AGG = group TOP10 ALL;
   TOPTOTAL = foreach AGG generate SUM(AGG.total);

   generate group, TOPTOTAL;
}

内のリレーションの値 (SUM、COUNT、ETC) を計算するにはどうすればよいforeachですか? 現在GROUP ALL、foreach 内で a を適用する方法はありません。

4

1 に答える 1

0

SUMは引数としてバッグを受け取る単なる関数であり、から射影することでこのバッグを作成できますTOP10

ALIAS = group DATA by name;
RESULT = foreach ALIAS {
   SORTED = ORDER DATA by total desc;
   TOP10 = LIMIT SORTED 10;
   generate group, SUM(TOP10.total);
}
于 2012-11-14T20:46:57.210 に答える