この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

foreach

��連の式をデータセットの各行に適用します。このアクションは、射影と呼ばれることもあります。

構文

1q = foreach q generate expression as alias[, expression as alias ...];

出力列名は、as キーワードで指定されます。出力データはグループ化されません。

グループ化されていないデータでの foreach の使用

グループ化されていないデータで使用すると、foreach ステートメントは入力行を出力行に対応付けます。行数は同じままです。

a2 = foreach a1 generate carrier as carrier, miles as miles;

グループ化されたデータでの foreach の使用

グループ化されたデータで使用すると、foreach ステートメントはグループ化されていないデータの場合とは異なる動作をします。

項目は、その値がすべてのグループメンバーで同じ場合にのみ、直接アクセスできます。たとえば、グルーピングキーとして使用された項目の値がすべてのグループメンバーで同じ場合などです。同じではない場合は、集計関数を使用してグループのメンバーにアクセスします。列の型によって、使用できる集計関数が決まります。たとえば、列の型が数値の場合、sum() 関数を使用できます。

z = foreach y generate day as day, unique(origin) as uorg, count() as n;

case 式での foreach の使用

いずれかの条件ステートメントを選択する foreach ステートメントでロジックを作成するには、case 式を使用します。

射影された項目名

射影内の各項目は一意である必要があり、その名前を「none」にすることはできません。項目名が無効な場合、エラーが発生します。

たとえば、複数の射影された項目で同じ名前が使用されているため、次のクエリの最後の行は無効です。
1l = load "0Fabb000000002qCAA/0Fabb000000002WCAQ";
2r = load "0Fcyy000000002qCAA/0Fcyy000000002WCAQ";
3l = foreach l generate 'value'/'divisor' as 'value' , category as category;
4r = foreach r generate 'value'/'divisor' as 'value' , category as category;
5cg = cogroup l by category right, r by category;
6cg = foreach cg generate r.category as 'category', sum(r.value) as sumrval, sum(l.value) as sumrval;
また、射影された項目名を「none」にすることはできないため、次のクエリも無効です。
1q = load "Products";
2q = group q by all;
3q = foreach q generate count() as 'none';
4q = limit q 2000;

予測の例については、「rollup 修飾子と grouping() 関数を使用した総計と小計の計算」を参照してください。