1

ソース テーブルには、次のスナップショットが示すように 2 つの列があります。

ここに画像の説明を入力

次に、宛先テーブルの場合、次のようになります。

ここに画像の説明を入力

( 「DimLocationKey」は自動生成された代理キーです)

SSISで自己参照効果を達成するにはどうすればよいですか? 次のアプローチを試みましたが、ルックアップに一致がないため機能しません。

ここに画像の説明を入力

4

1 に答える 1

0

列がnull許容の場合は、location_IDの一意の値をロードしてから、2次プロセスに戻って、既存の更新と場合によっては新しい追加の処理を行うことができます。

パス1

1 NULL A NULL
2 NULL B NULL 
3 NULL C NULL
4 NULL D NULL

null許容でない場合は、データフローでこれらのIDを事前に計算し、現在の行と親を自分自身に割り当てることができると思います。開発者として、私はあなたを嫌うかもしれませんが;)

パス2

この時点で、テーブルに8行あるのか、4行(ソースデータが示すもの)なのかが問題になります。これはビジネスユーザーにとっての質問になり、適切に「唖然」としています。ヒエラルキーの質問で両方の答えを見てきました-「大統領は誰に報告しますか?」ある場所では、大統領は誰にも報告しなかったため、経費請求は自動的に承認されました。別の場所では、CEOからの報告がありました。つまり、経費報告はまだ自分で承認する必要がありました。オートマジックは何もないので、彼らが経営者の説明責任を確実に持つようにするためだったと思います。

答えが8行の場合、データフローはほぼ正しく見えます。4の場合は、既存のデータフローを使用しますが、代わりに行を更新します。数百の小さな行セットの場合は、OLEDBコマンドを使用して、更新ステートメントを記述できます。コンポーネントにヒットするすべての行に対してUPDATEステートメントが発行されることを理解してください。それはひどく非効率的であるため、それはあなたの処理を停止させる可能性があります。

更新のより効率的なルートは、OLE DB宛先を使用し、データフローが完了した後、SQLの実行タスクにセットベースのUPDATEステートメントを発行させることです。これを行う方法のよく書かれた例については、 AndyLeonardのIntegrationServicesへの階段シリーズを参照してください。

null許容型ではなく、ノード自体を参照することが許可されていない場合は、データモデルが正確に記述していないようです。

于 2012-08-06T21:46:44.910 に答える