重複レコードのフィルタリング
重複レコードを除去する最も簡単な方法は、マッチング ステージの後のデータフローに Filter ステージを追加することです。Filter ステージは、指定されている設定に基づいて重複レコードのコレクションからレコードを削除します。
-
Enterprise Designer で、マッチングによって重複レコードを特定するデータフローを作成します。
類似性のあるレコード (同じアカウント番号または名前を含むレコードなど) を特定する必要があるので、重複除外の最初のステップはマッチングです。レコードのマッチングを行うデータフローの作成方法については、以下のトピックを参照してください。
注: 作成する必要があるデータフローは、データを読み込み、Interflow Match、Intraflow Match、または Transactional Match ステージでマッチングを実行するところまでだけです。ここまでのデータフローを作成したら、引き続き以下の手順を実行します。 -
データを読み込んでレコードのマッチングを行うデータフローを定義した後、Filter ステージをキャンバスにドラッグし、マッチングを実行するステージ (Interflow Match、Intraflow Match、または Transactional Match) に接続します。
例えば、ファイルからデータを読み込み、Intraflow Match でマッチングを実行するデータフローの場合は、Filter ステージを追加した後は次のようになります。
- キャンバスで Filter ステージをダブルクリックします。
- [グループ化] フィールドで、[コレクション番号] を選択します。
- [返される重複レコード数の上限値] オプションはオンのままにし、値を 1 に設定します。これらはデフォルトの設定です。
-
各コレクションの最初のレコードを保持するか、または各コレクションで保持するレコードを選択するルールを定義するかを決定します。各コレクションの最初のレコードを保持する場合は、このステップをスキップします。ルールを定義する場合は、ルール ツリーで [ルール] を選択し、以下の手順に従います。
-
[ルールの追加] をクリックします。
各グループのレコードが評価されて、ここで定義したルールを満たすかどうかが確認されます。ルールを満たすレコードは保持され、それ以外のレコードは破棄されます。
-
各グループで保持するレコードを特定するルールを定義します。
以下のオプションを使用してルールを定義します。
オプション 説明 フィールド名
レコードをフィルタリングするかどうかを判断するために値を評価するデータフロー フィールドの名前を指定します。
フィールド タイプ
フィールドのデータのタイプを指定します。次のいずれかです。
- 数値以外
- フィールドに数値以外のデータ (文字列データなど) が含まれる場合は、このオプションを選択します。
- Numeric
- フィールドに数値データ (double、float など) が含まれる場合は、このオプションを選択します。
演算子
フィールドの評価で使用する比較のタイプを指定します。次のいずれかです。
- が次の値を含む
- フィールドが指定された値を含むかどうかを確認します。例えば、"sailboat" には値 "boat" が含まれます。
- 等しい
- フィールドが指定された値に正確に一致するかどうかを確認します。
- 次の値より大きい
- フィールド値が指定された値よりも大きいかどうかを確認します。この演算子は、数値のフィールドにのみ有効です。
- 以上
- フィールド値が指定された値に一致するか、またはそれよりも大きいかどうかを確認します。この演算子は、数値のフィールドにのみ有効です。
- 最高
- フィールドの値をグループ内のすべてのレコードについてチェックし、最も大きな値が格納されているレコードを特定します。例えば、グループ内でフィールドに値 10、20、30、および 100 が格納されている場合、フィールド値が 100 のレコードが選択されます。この演算子は、数値のフィールドにのみ有効です。最低値が複数のレコードにある場合は、1 つのレコードが選択されます。
- 空
- フィールドに値がないことを確認します。
- 空でない
- フィールドに値が含まれているかどうかを確認します。
- 次の値より小さい
- フィールド値が指定された値よりも小さいかどうかを確認します。この演算子は、数値のフィールドにのみ有効です。
- 以下
- フィールド値が指定された値以下であるかどうかを確認します。この演算子は、数値のフィールドにのみ有効です。
- 最長
- グループ内のすべてのレコードのフィールドの値を比較し、フィールドに (バイト数が) 最長の値が格納されているレコードを特定します。例えば、グループ内に、"Mike" という値と "Michael" という値が含まれる場合、"Michael" という値が格納されているレコードが選択されます。最低値が複数のレコードにある場合は、1 つのレコードが選択されます。
- 最低
- グループ内のすべてのレコードのフィールドの値を比較し、フィールドに最も小さい値が格納されているレコードを特定します。例えば、グループ内でフィールドに値 10、20、30、および 100 が格納されている場合、フィールド値が 10 のレコードが選択されます。この演算子は、数値のフィールドにのみ有効です。最低値が複数のレコードにある場合は、1 つのレコードが選択されます。
- 最多
- フィールド値が、グループ内のレコードのこのフィールドにおいて最も多く出現する値であるかどうかを確認します。最多の値が複数存在する場合、アクションは実行されません。
- が等しくない
- フィールド値が指定された値に一致しないことを確認します。
値タイプ
フィールドの値と比較する値のタイプを指定します。次のいずれかです。
注: このオプションは、演算子として [最高]、[最低]、または [最長] を選択している場合は使用できません。- フィールド
- フィールドを別のデータフロー フィールドの値と比較する場合は、このオプションを選択します。
- 文字列
- フィールドを特定の値と比較する場合は、このオプションを選択します。
値 フィールドの値と比較する値を指定します。[フィールド タイプ] フィールドで [フィールド] を選択した場合は、データフロー フィールドを選択します。[値タイプ] フィールドで [文字列] を選択した場合は、比較で使用する値を入力します。
注: このオプションは、演算子として [最高]、[最低]、または [最長] を選択している場合は使用できません。 -
[OK] をクリックします。
1 つのルールを含む Filter を設定しました。必要に応じて、さらにルールを追加できます。
-
[ルールの追加] をクリックします。
- [OK] をクリックして [Filter オプション] ウィンドを閉じます。
-
シンク ステージをキャンバスにドラッグし、Filter ステージに接続します。
例えば、Write to File シンク ステージを使用した場合、データフローは次のようになります。
-
シンク ステージをダブルクリックして設定します。
シンク ステージの設定方法については、『データフロー デザイナー ガイド』を参照してください。
各重複グループでルールに一致するレコードを特定して他のすべてのレコードを除去し、重複除外されたデータを含む出力ファイルを作成するデータフローができました。