foreach
一連の式をデータセットの各行に適用します。このアクションは、射影と呼ばれることもあります。
構文
出力列名は、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」にすることはできません。項目名が無効な場合、エラーが発生します。
たとえば、複数の射影された項目で同じ名前が使用されているため、次のクエリの最後の行は無効です。
また、射影された項目名を「none」にすることはできないため、次のクエリも無効です。
例
予測の例については、「rollup 修飾子と grouping() 関数を使用した総計と小計の計算」を参照してください。