Beam YAML 結合
Beam YAMLは、指定されたカラムで2つ以上の入力を結合できます。たとえば、次のパイプラインは、最初の入力PCollectionのcol1が2番目の入力PCollectionのcol2と等しい場合、最初の入力PCollectionと2番目の入力PCollectionを結合します。
- type: Join
input:
input1: First Input
input2: Second Input
config:
equalities:
- input1: col1
input2: col2
すべての入力で同じ名前のカラムを1つに結合する場合、次の省略形を使用できます。
- type: Join
input:
input1: First Input
input2: Second Input
input3: Third Input
config:
equalities: col1
結合の種類
結合変換を使用する場合、入力に対して実行する結合の種類を指定できます。結合の種類が指定されていない場合、入力はすべて内部結合を使用して結合されます。サポートされている結合の種類は次のとおりです。
結合の種類 | YAMLキーワード |
---|---|
内部結合 | inner |
完全外部結合 | left |
右外部結合 | right |
次の例では、指定された等式で内部結合を使用して2つの入力を結合します。
- type: Join
input:
input1: First Input
input2: Second Input
config:
type: inner
equalities:
- input1: col1
input2: col1
次の例では、指定された等式で左外部結合を使用して2つの入力を結合します。この場合、input1は左側の入力であるため、input1のすべての行が保持されます。結合の順序は、等式で指定された順序に従います。
- type: Join
input:
input1: First Input
input2: Second Input
config:
type: left
equalities:
- input1: col1
input2: col1
次の例では、指定された等式で完全外部結合を使用して3つの入力を結合します。
- type: Join
input:
input1: First Input
input2: Second Input
input3: Third Input
config:
type: outer
equalities:
- input1: col1
input2: col1
- input2: col2
input3: col2
結合の種類の組み合わせが必要な場合は、外部結合する入力を指定できます。次の例では、input2が右側にあるため、右外部結合を使用してinput1とinput2を結合し、input2が左側にあるため、左外部結合を使用してinput2とinput3を結合します。
- type: Join
input:
input1: First Input
input2: Second Input
input3: Third Input
config:
type:
outer:
- input2
equalities:
- input1: col1
input2: col1
- input2: col2
input3: col2
フィールド
デフォルトでは、結合変換にはすべての入力テーブルのすべてのカラムが含まれます。カラム名が競合する場合は、明示的に名前を変更することをお勧めします。そうでない場合、システムは数値サフィックスを追加することによって名前の重複を解消します。
出力するカラムを選択したり、出力カラム名をカスタマイズしたりするには、「fields」設定を使用します。
入力から出力するカラムを指定するには、入力参照を設定キーとして、必要なカラムのリストを設定値として使用します。次の例では、input1からcol1、input2からcol2とcol3、およびinput3からすべてのカラムを出力します。名前の競合がある場合、重複する名前を避けるために数値サフィックスを追加します。
- type: Join
input:
input1: First Input
input2: Second Input
input3: Third Input
config:
equalities: col1
fields:
input1: [col1]
input2: [col2, col3]
出力のカラムの名前を変更するには、新しいカラム名をキーとして、元のカラム名を値として、入力のマッピングを作成します。次の例では、input3のcol1をカラム名「renamed_col1」にマップします。
- type: Join
input:
input1: First Input
input2: Second Input
input3: Third Input
config:
equalities: col1
fields:
input1: [col1]
input2: [col2, col3]
input3:
renamed_col1: col1