フィルター
![]() |
述語が与えられた場合、その述語を満たさないすべての要素をフィルターで除外します。要素の比較順序に基づいて、指定された値との不等式に基づいてフィルター処理することもできます。
例
次の例では、アイコン、名前、および期間を持つ生成物の PCollection
を持つパイプラインを作成します。次に、期間の値によって生成物をフィルター処理するために、複数の方法で Filter
を適用します。
Filter
は、True
を返す要素を保持し、残りの要素をフィルターで除外する関数を受け入れます。
例 1: 関数を使用したフィルタリング
要素の期間が 'perennial'
に等しい場合は True
を返し、それ以外の場合は False
を返す関数 is_perennial
を定義します。
例 2: ラムダ関数を使用したフィルタリング
ラムダ関数を使用して、例 1 を簡略化することもできます。
例 3: 複数の引数を使用したフィルタリング
複数の引数を持つ関数を Filter
に渡すことができます。それらは、関数の追加の positional 引数またはキーワード引数として渡されます。
この例では、has_duration
は plant
と duration
を引数として受け取ります。
例 4: サイド入力をシングルトンとして使用したフィルタリング
PCollection
に、別の計算からの平均値など、単一の値がある場合、PCollection
を*シングルトン*として渡すと、その値にアクセスできます。
この例では、値 'perennial'
を持つ PCollection
をシングルトンとして渡します。次に、その値を使用して多年生植物をフィルターで除外します。
例 5: サイド入力をイテレーターとして使用したフィルタリング
PCollection
に複数の値がある場合は、PCollection
を*イテレーター*として渡します。これにより、要素が必要に応じて遅延的にアクセスされるため、メモリに収まらない大きな PCollection
を反復処理することができます。
注:
PCollection
はbeam.pvalue.AsList(pcollection)
を使用して*リスト*として渡すことができますが、これにはすべての要素がメモリに収まる必要があります。
例 6: サイド入力をディクショナリーとして使用したフィルタリング
PCollection
がメモリに収まるほど小さい場合は、その PCollection
を*ディクショナリー*として渡すことができます。各要素は (key, value)
ペアである必要があります。これには PCollection
のすべての要素がメモリに収まる必要があることに注意してください。PCollection
がメモリに収まらない場合は、代わりに beam.pvalue.AsIter(pcollection)
を使用してください。
関連する変換
- FlatMap は
Map
と同じように動作しますが、入力ごとにゼロ個以上の出力を生成する可能性があります。 - ParDo は最も一般的な要素ごとのマッピング操作であり、複数の出力コレクションやサイド入力などの他の機能も含まれています。
![]() |
最終更新日: 2024/10/31
お探しのものはすべて見つかりましたか?
すべて役に立ち、明確でしたか?変更したいことはありますか?ぜひお知らせください!