値の結合(CombineValues)
![]() |
キー付き要素のコレクションで、値の反復可能オブジェクトを結合します。
詳細は、Beamプログラミングガイドをご覧ください。
例
以下の例では、農産物の`PCollection`を持つパイプラインを作成します。次に、`CombineValues`を様々な方法で適用して、`PCollection`内のキー付き値を結合します。
`CombineValues`は、要素の`iterable`を引数に取り、それらを結合して単一の要素を返す関数を引数に取ります。 `CombineValues`は、キー付きの`PCollection`を期待します。ここで、値は結合される要素の`iterable`です。
例1:定義済み関数を使用した結合
数値の`iterable`を取り、それらを合計する関数`sum`を使用します。
例2:関数を使用した結合
合計を最大値までに制限したいので、飽和演算を使用します。
数値の`iterable`を取り、それらを事前に定義された最大数まで加算する関数`saturated_sum`を定義します。
例3:ラムダ関数を使用した結合
ラムダ関数を使用して**例2**を簡略化することもできます。
例4:複数の引数を使用した結合
複数の引数を持つ関数を`CombineValues`に渡すことができます。それらは、追加の位置引数またはキーワード引数として関数に渡されます。
この例では、ラムダ関数は引数として`values`と`max_value`を取ります。
例5:`CombineFn`を使用した結合
要素を結合するより一般的な方法であり、最も柔軟な方法は、`CombineFn`を継承したクラスを使用することです。
`CombineFn.create_accumulator()`:空のアキュムレータを作成します。たとえば、合計の空のアキュムレータは`0`で、積(乗算)の空のアキュムレータは`1`です。
`CombineFn.add_input()`:*要素ごとに1回*呼び出されます。アキュムレータと入力要素を取り、それらを結合して更新されたアキュムレータを返します。
`CombineFn.merge_accumulators()`:複数のアキュムレータを並列に処理できるため、この関数はそれらを単一のアキュムレータにマージするのに役立ちます。
`CombineFn.extract_output()`:結果を抽出する前に追加の計算を実行できます。
関連する変換
以下のコンバイナ変換を使用できます
![]() |
最終更新日:2024/10/31
お探しのものはすべて見つかりましたか?
すべて役に立ち、明確でしたか?変更したいことはありますか?お知らせください!