あるテーブルから別のテーブルにデータをインポートする必要がある状況があります。ここでの課題は、他のテーブル値(外部キーの種類)への参照であるいくつかの列があるテーブルです。これらの参照列を一致させる必要があり、フィールドが一致する場合はそれぞれのIDをマップする必要があります。そうでない場合は、その値を参照テーブルに挿入し、ソーステーブルのデータソースにIDをマップして、すべてのデータをインポートする必要があります。
私の問題を詳しく説明します:
これが私のETLの外観です。現在、私は「ルックアップ一致」で実行を進めていますが、「ルックアップが一致しない」場合は、それぞれのテーブルに新しいレコードを作成する必要もあります。 (そして、これは私がしているすべての8つのルックアップのために行う必要があります)。これらすべてを順番に実行し、最終段階ですべてのデータをインポートする方法がわかりません。
これが私がやったことです:
デビッドが上記の要件を指摘しているので少しあいまいですが、私が正しく理解している場合は、ソースシステムのルックアップ値を持つデータをインポートし、それらのルックアップ値がターゲットシステムにない場合は追加しますターゲットシステムでそれら。これは、データフロータスク内でルックアップトランスフォームを使用して実現できます。
具体的には、ルックアップにLookup No Match出力を追加できます。次に、フローはOLE DB DestinationまたはSQLタスクに接続して、一致しなかったデータを追加できます。
Robert Sheldonがこれに関する優れたチュートリアルを書いており、Simple Talk Webサイト https://www.simple-talk.com/sql/ssis/implementing-lookup-logic-in-sql-server -integration-services /