質問
以下のような2つのCSVファイルの差分(カラムが一致しないもの)のCSVを出力したいと考えています。
何か良いやり方はありますでしょうか?
ファイルA
A内部ID,A外部ID
100,500
101,600
102,700
103,900
ファイルB
B内部ID,B外部ID
100,500
101,550
102,700
104,800
欲しい結果(対称差集合のCSV)
A内部ID,A外部ID,B内部ID,B外部ID
101,600,101,550
103,900,null,null
null,null,104,800
回答
2つのCSVデータの差分を抽出する処理につきまして、マージロジックをご利用いただくことで実装が可能です。
以下に実装手順の一例をご案内させていただきますので、ご参考下さい。
- 「Or-Integrate」マージロジック でAとBのデータを一つにまとめる
「Or-Integrate」マージロジックの仕様ですが、複数の入力元データをマージして
条件に合致する結果データを1つにまとめて出力します。
キー値として[A内部ID],[B内部ID]を指定し、
出力先のカラムを[A内部ID],[A外部ID],[B内部ID],[B外部ID]に指定いただく事で、
A,Bのデータをマージされて、1つにまとめたデータが出力出来ます。
- マージしたデータを一度CSVファイル出力する
「CSV書き込み処理」コンポーネントにて、
上記でマージした出力データをCSVファイルとして出力します。
- 出力したCSVファイルを再度読み込みし、マッピングで外部IDが異なる条件を抽出
「CSV読み込み処理」コンポーネントにて上記で出力したCSVファイルを読み込みし、
マッピングにて以下の条件でデータを抽出します。
・[条件]>[文字列]>[同じでない]ロジックにて、[A外部ID]と[B外部ID]が不一致のものがないか比較
・[繰り返し]>[条件指定]>[条件による抽出]ロジックにて、[同じでない]ロジックの比較結果を繰り返し条件に指定する
- 抽出したデータをCSVファイルへ出力する
上記で出力したデータがA,Bの対称差集合データになりますので、CSVファイルへ出力します。
マージロジックの詳細につきましては、以下のマニュアルも併せてご参照ください。
・Mapperロジックの仕様(マージMapper)
・Or-Integrateマージ
コメント
0件のコメント
記事コメントは受け付けていません。