2016-10-28 19 views
0

私はETL処理の初心者です。私はETLを介してデータマートを投入しようとしていて、バンプを打った。私は4つのETLタスクを持っています(それぞれのタスクはマートで特定のテーブルを満たしています)、問題は外部キー制約のような制約違反を避けるために特定の順序でそれらを実行する必要があることです。どうすればこれを達成できますか?どんな助けでも本当に感謝しています。Sql Serverのデータツール(Integration Services)でETLタスクを注文する方法?

これが私の現在のETLのスナップです: This is a snap of my current ETL

答えて

1

はあなたが制御フローに移入している各テーブルに別々のデータフロータスクを作成し、単にあなたが彼らがする必要があるためにそれらを一緒に接続します現在のデータフローのコンポーネントを作成した新しいものにコピー/ペーストするだけで済みます。

コントロールフロー内のタスク間の接続は、「優越制約」と呼ばれ、ダブルクリックすると、ETLパッケージのフローを制御するためのさまざまなオプションが表示されます。今のところ、デフォルトで残しておいても問題ありません。これは、各データフロータスクが前のデータフロータスクを正常に終了するまで待機することを意味します。いずれかが失敗すると、次のパッケージは起動せず、パッケージは失敗します。

いくつかのテーブルを並行してロードしたいが、後でテーブルのすべてが終了するのを待っている場合は、シーケンスコンテナを追加して、パラレルにロードする必要があるテーブルを配置することをお勧めします。その後、シーケンスコンテナから次のデータフロータスクに接続します。または、あるシーケンスコンテナから別のシーケンスコンテナに接続します。たとえば、すべての次元ロードプロセスを保持する1つのシーケンスコンテナと、すべてのファクトロードプロセスを保持する別のシーケンスコンテナが必要な場合があります。

共通のパターンは、別のデータフロータスクを使用するよりもさらに進んでいます。実装するすべてのテーブルに対して個別のパッケージを作成する場合は、親パッケージを作成して、パッケージの実行タスクを使用して、各子パッケージを正しい順序で呼び出すことができます。これは再利用性に優れており、必要に応じて手動で1つの表を簡単に作成できます。 1つのテーブルをテストするときに、いくつかのタスクを無効にしたり、負荷全体を再実行したりする必要がないので、テスト中には本当にいいです。早くこのパターンを採用することをお勧めしますので、後でやり直すための再作業はあまりありません。

+1

本当に簡単です!どうもありがとう! –

関連する問題