現在、データウェアハウス用のETLを作成しています。SSIS 2008を使用していますが、問題が発生しています。最大の問題は、コンポーネントの再利用の難しさです。テーブルごとに個別のパッケージがあり、各パッケージは親パッケージからいくつかの変数を入力として受け取ります。これらの入力変数に変更を加えるときは、各パッケージ(15ほどありますが、この数は大幅に増える予定です)に移動し、パッケージを変更してそれらの変更に対処する必要があります。他の問題もあります。たとえば、抽出のために任意のSQLを実行できない、ログ機能が不十分などです。
このプロセス全体は、コードでETLを開発し、コードの再利用、共通ライブラリ、より優れた単体テストなどを可能にする方法があれば、はるかに堅牢になります。SQLServerの事実上の標準ETL言語/ APIはありますか?GUIツールはできるだけ避けたいです。
編集:私は自分の経歴について述べるべきです。私はDBAではなく、正式な(または非公式の)DBAトレーニングを受けていません。基本的に、私はこれを理解していて、SSISで不適切なことを試みたり、このETLに近づいたりする可能性があります間違った角度から投影します。また、私は現在州政府で雇用されているため、新しいソフトウェアパッケージの購入を必要とするソリューションは、可能性の範囲内にありません。
これが私たちのタスクの1つです。単一のSSISパッケージを使用して、ウェアハウスの各テーブルをロードしています。各ファクトパッケージとディメンションパッケージは一般的に同じですが、
- ソースデータベースからの抽出
- データフローでの操作
- 宛先テーブルにマージします
できること(SSISで実行するのが難しいと感じていること)
- テキストファイルから抽出クエリを読み込みます。開発者が抽出クエリを作成してテストする場合、SSISで実行する前にクエリを操作する必要はなく、クエリを切り取ってDBソースオブジェクトに貼り付ける必要もありません。
- 各コンポーネントを個別にテストします。他のテーブルのロードとは無関係に、個々のテーブルの完全なETLプロセスを分離してテストできるはずです。
- 1つの場所で共有ロジックを変更します。個々のパッケージを編集する必要はありません。すべてのパッケージが同じ方法でデータを監査テーブルにロードします。監査されてロードされたデータを変更したい場合、15個すべてのパッケージを編集する必要はありません(この数は時間とともにかなり大きくなります)。
プロセス全体は、共有コードを適切に使用してプログラム的に行うと、実装がはるかに簡単になり、より堅牢になると感じています。