2016-05-04 4 views
0

私はリスト豚:リスト内の変数にループを書くことは可能ですか?

[var1,var2, ... , var30]

と私は、このような

grouped = GROUP data by var1; 
data_var1 = FOREACH grouped{ 
          GENERATE group as mygroup, 
            COUNT(data) as count; 
          }; 

など、いくつかのPIG group by文を使用し、各変数の中に30個の変数をループに持ってはのリストをループする方法はあります変数または私はコードを手動で上記のコードを30回繰り返す必要がありますか?

ありがとうございます!あなたのデータの関係とVARます:

答えて

1

は、私が何を探していることはpig macro

があなたの30個の変数の関係を作成し、foreachのことでそれらに反復、および2つのparamsを取得するマクロを呼び出すだと思いますグループ化したい リンクの例を確認してください。マクロは本当に似ています。

UPDATE &コード

だからここにあなたが使用できるマクロがあります:

DEFINE my_cnt(data, group_field) RETURNS C { 
     $C = FOREACH (GROUP $data by $group_field) GENERATE 
       group AS mygroup, 
       COUNT($data) AS count; 
}; 

マクロを使用します。

IMPORT 'cnt.macro'; 

data = LOAD 'data.txt' USING PigStorage(',') AS (field:chararray, value:chararray); 
DESCRIBE data; 

e = my_cnt(data,'the_field_you_group_by'); 
DESCRIBE e; 
DUMP e; 

私はまだあなたがあなたの上を繰り返し処理できる方法について考えていますグループ化するフィールド私の最初の提案は、正しいものではないファイル名が含まれている関係をforeachすることです。 (このためのUDFを作成するには、常に動作します。)それについて考えてみましょう。 しかし、このマクロは、グループ化するすべてのファイル名で呼び出すとそのまま動作します。

+0

優秀!あなたはそのための正確なコマンドを書くことができますか?ありがとうkecso。 –

+0

私はあなたの答えをもっと早く受け入れたいと思っていましたが、その間にいくつかの予期しないことがありました。再度、感謝します –

関連する問題