私のETLの現在のシナリオは次のとおりです。
- 各ペアについて、同一のテーブル dbo.T および staging.T
- ステージングから削除.T
- リモート Web サービスから抽出し、staging.T にロードします。
- staging.T の各行について
- dbo.T には PK がありますか?
- はい、更新します
- いいえ、挿入します
私の主な疑問点は、列リストのメンテナンスに関するものです。
MERGE ステートメントは最適なオプションのようですが、行全体を更新する機能はないようです。したがって、次の長いリストを維持する必要があることがわかりました。
Target.Column1 = Source.Column1,
Target.Column1 = Source.Column1,
...,
Target.ColumnN = Source.ColumnN
マージを支援するこのコード生成テンプレートを見つけましたが、今説明した問題に対する標準的なアプローチがあるかどうか、またはさらに重要なことに、全体像の一部が欠けているかどうかを知りたいと非常に興味があります-つまり、私のアプローチは間違っています.
別の言い方をすれば、プロの ETL 開発者がこれを行っていたとしたら (そうなると仮定して)、彼らはどのように対処するでしょうか?
私が達成したい目標は、テーブルのスキーマを変更する信頼できる方法であり、列コピーのすべてのリストを更新するエラーが発生しやすいプロセスを持たないことだと思います。
より具体的に説明するために、SSIS タスクのスクリーン キャプチャと、実装した最初の 4 つのテーブルのスキーマを次に示します。