複数のマッチ ルールによるレコードのマッチング

レコードのマッチングに複数のマッチング操作を使う必要がある場合、複数のマッチ キーを使うデータフローを作成し、その結果を組み合わせると実質的に複数の条件によるマッチングを行えます。例えば、レコードのマッチング条件として、

名前と住所の一致
または
誕生日と政府発行 ID の一致をデータフローで使うとします。

このロジックでマッチングを実行するには、名前と住所のマッチングをあるステージで実行し、誕生日と政府発行 ID のマッチングを別のステージで実行してから、双方でマッチングしたレコードを 1 つのコレクションに収めるデータフローを作成します。

ここでは、2 つのマッチング ステージを通じてマッチングを処理するデータフローを設定する一般的な手順を説明します。この手順を具体的に説明するため、ここでは Intraflow Match ステージを使用しますが、同じテクニックは Interflow Match ステージにも応用できます。

  1. Enterprise Designer で、新しいデータフローを作成します。
  2. ソース ステージをキャンバスにドラッグします。
  3. ソース ステージをダブルクリックして設定します。ソース ステージの設定手順については、『データフロー デザイナー ガイド』を参照してください。
  4. 最初のマッチング処理を定義します。最初のマッチング処理の結果は、最初のマッチング条件を満たすレコード、つまりここでは名前と住所が条件を満たすレコードのコレクションになります。
    1. Match Key Generator ステージと Intraflow Match ステージをキャンバスにドラッグし、連結して以下のようなデータフローを作成します。
      Match Key Generator and Intraflow Match in dataflow
    1. Match Key Generator ステージでは、最初のマッチング処理に使うマッチ キーを定義します。

      例えば、最初のマッチング処理で名前と住所のマッチングを確認する場合、姓と郵便番号が含まれるフィールドに基づいてマッチ キーを作成します。

    2. Intraflow Match ステージで、最初のマッチング処理を行うマッチ ルールを定義します。

      例えば、このマッチング ステージで名前と住所のマッチングを行うとします。

  5. 最初のマッチング処理で得られたコレクション番号を別のフィールドに保存します。こうするのは、2 番目のマッチング処理で CollectionNumber フィールドが上書きされるからです。最初のマッチング処理の結果を保持するには、CollectionNumber フィールドの名前を変更する必要があります。
    1. Transformer ステージをキャンバスにドラッグし、Intraflow Match ステージに連結して以下のようなデータフローを作成します。
      Transformer in dataflow
    2. Transformer ステージを設定して、CollectionNumber フィールドの名前を CollectionNumberPass1 に変更します。
  6. 2 番目のマッチング処理を定義します。2 番目のマッチング処理の結果は、2 番目のマッチング条件を満たすレコード、つまりここでは誕生日と政府発行 ID が条件を満たすレコードのコレクションになります。
    1. Match Key Generator ステージと Intraflow Match ステージをキャンバスにドラッグし、連結して以下のようなデータフローを作成します。
      Match Key Generator and Intraflow Match in dataflow
    2. 2 番目の Match Key Generator ステージでは、2 番目のマッチング処理に使うマッチ キーを定義します。

      例えば、2 番目のマッチング処理で誕生日と政府発行 ID のマッチングを確認する場合、誕生日と政府発行 ID が含まれるフィールドに基づいてマッチ キーを作成します。

    3. 2 番目の Intraflow Match ステージでは、2 番目のマッチング処理に使うマッチ キーを定義します。

      例えば、このマッチング ステージで誕生日と政府発行 ID のマッチングを行うとします。

  7. 2 番目のマッチング処理で重複レコードが見つかった場合、最初のマッチング処理でもそれが重複レコードとされていたかどうかを確認してください。
    1. 2 番目の Intraflow Match ステージの後に、以下のデータフロー処理を作成します。
      Dataflow snippet following Intraflow Match
    2. Conditional Router ステージを設定して、CollectionNumber フィールドが 0 ではないレコードを Duplicate Synchronization ステージに送ります。

      これで、重複レコードが 2 番目のマッチング処理から Duplicate Synchronization ステージに渡されます。

    3. Duplicate Synchronization ステージを設定して、レコードを CollectionNumer フィールドに従ってグループ化します。CollectionNumer フィールドには、2 番目のマッチング処理で得られたコレクション番号が含まれます。次に、各コレクションに含まれるレコードについて、最初のマッチング処理で重複レコードとされたものがないか確認します。該当するレコードがあれば、そのコレクション番号を CollectionNumberConsolidated という新しいフィールドにコピーします。この操作を行うには、Duplicate Synchronization を以下の手順で設定します。
      Duplicate Synchronization Options dialog box
    4. Duplicate Synchronization ステージの次に位置する Transformer ステージでは、以下のスクリプトを使ってカスタム トランスフォームを作成します。
      if (data['CollectionNumberConsolidated'] == null) {
       data['CollectionNumberConsolidated'] = data['CollectionNumber']
      }
    5. Conditional Router の直後にある Transformer (サンプル データフローの Transformer 2) では、トランスフォームを設定して CollectionNumberPass1 を CollectionNumberConsolidated にコピーします。

      これで、ユニーク レコードが 2 番目のマッチング処理から取り出され、CollectionNumberPass1 が CollectionNumberConsolidated にコピーされます。

  8. Stream Combiner の後、どちらかのマッチング処理でマッチングしたレコードのコレクションが完成します。CollectionNumberConsolidated フィールドを見れば、マッチング レコードかどうかがわかります。Stream Combiner ステージの後に、必要であればシンクや追加の処理を追加できます。