フィルター

Pydoc Pydoc




述語が与えられた場合、その述語を満たさないすべての要素をフィルターで除外します。要素の比較順序に基づいて、指定された値との不等式に基づいてフィルター処理することもできます。

次の例では、アイコン、名前、および期間を持つ生成物の PCollection を持つパイプラインを作成します。次に、期間の値によって生成物をフィルター処理するために、複数の方法で Filter を適用します。

Filter は、True を返す要素を保持し、残りの要素をフィルターで除外する関数を受け入れます。

例 1: 関数を使用したフィルタリング

要素の期間が 'perennial' に等しい場合は True を返し、それ以外の場合は False を返す関数 is_perennial を定義します。

例 2: ラムダ関数を使用したフィルタリング

ラムダ関数を使用して、例 1 を簡略化することもできます。

例 3: 複数の引数を使用したフィルタリング

複数の引数を持つ関数を Filter に渡すことができます。それらは、関数の追加の positional 引数またはキーワード引数として渡されます。

この例では、has_durationplantduration を引数として受け取ります。

例 4: サイド入力をシングルトンとして使用したフィルタリング

PCollection に、別の計算からの平均値など、単一の値がある場合、PCollection を*シングルトン*として渡すと、その値にアクセスできます。

この例では、値 'perennial' を持つ PCollection をシングルトンとして渡します。次に、その値を使用して多年生植物をフィルターで除外します。

例 5: サイド入力をイテレーターとして使用したフィルタリング

PCollection に複数の値がある場合は、PCollection を*イテレーター*として渡します。これにより、要素が必要に応じて遅延的にアクセスされるため、メモリに収まらない大きな PCollection を反復処理することができます。

PCollectionbeam.pvalue.AsList(pcollection) を使用して*リスト*として渡すことができますが、これにはすべての要素がメモリに収まる必要があります。

例 6: サイド入力をディクショナリーとして使用したフィルタリング

PCollection がメモリに収まるほど小さい場合は、その PCollection を*ディクショナリー*として渡すことができます。各要素は (key, value) ペアである必要があります。これには PCollection のすべての要素がメモリに収まる必要があることに注意してください。PCollection がメモリに収まらない場合は、代わりに beam.pvalue.AsIter(pcollection) を使用してください。

Pydoc Pydoc