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