Integration Services の典型的な使用方法
SQL Server 2005 Integration Services (SSIS) には、ビジネス アプリケーションの開発をサポートする、タスク、コンテナ、変換、およびデータ アダプタの豊富なセットが用意されています。コードを記述しなくても、ETL やビジネス インテリジェンスを使用して複雑なビジネス問題を解決する SSIS ソリューションを作成し、SQL Server データベースを管理したり、SQL Server のインスタンス間で SQL Server オブジェクトをコピーできます。
次のシナリオでは、SSIS パッケージの典型的な使用方法について説明します。
異種データ ストアからのデータのマージ
データは通常、多様なデータ ストレージ システムに格納されているため、すべてのデータ ソースからデータを抽出し、そのデータを単一の一貫したデータセットにマージする作業には困難が伴います。こうした状況は、さまざまな原因によって発生します。次に例を示します。
- 多くの組織では、従来のデータ ストレージ システムに格納された情報が保存されています。こうしたデータは日常の業務では重要でなくとも、長期にわたって収集されたデータを必要とする傾向分析を行う上では、価値が高い場合があります。
- 組織によっては、支店ごとに異なるデータ ストレージ テクノロジを使用して、業務データを格納している場合があります。パッケージでデータをマージする場合、事前に表計算ソフトやリレーショナル データベースからデータを抽出する必要が生じることもあります。
- データは、同じデータに対して異なるスキーマを使用するデータベースに格納されている場合があります。パッケージでデータをマージする場合、事前に列のデータ型を変更するか、または、複数列のデータを 1 列に結合する必要が生じることがあります。
Integration Services は、単一パッケージ内の複数のデータ ソースなど、さまざまなデータ ソースに接続できます。パッケージは、.NET や OLE DB プロバイダを使用してリレーショナル データベースに接続したり、ODBC ドライバを使用して多数の従来のデータベースに接続できます。さらに、フラット ファイル、Excel ファイル、および Analysis Services プロジェクトにも接続できます。
Integration Services には、パッケージが接続するデータ ソースのフラット ファイル、Excel ワークシート、XML ドキュメント、およびリレーショナル データベース内のテーブルやビューから、データを抽出する作業を実行するソース コンポーネントが含まれています。
次に、そのデータは通常、Integration Services に含まれる変換を使用して変換されます。データが互換性のある形式に変換されたら、1 つのデータセットに物理的にマージできます。
データが正常にマージされ、変換がデータに適用されると、データは通常、1 つ以上の変換先に読み込まれます。Integration Services には、フラット ファイル、生ファイル、およびリレーショナル データベースにデータを読み込むための変換先が含まれています。さらにこのデータをメモリ内のレコードセットに読み込んで、別のパッケージ要素からそのデータにアクセスすることもできます。
データ ウェアハウスおよびデータ マートの設定
データ ウェアハウスおよびデータ マートには、通常頻繁に更新される大量のデータが含まれています。
Integration Services には、フラット ファイルから直接 SQL Server テーブルおよびビューにデータを一括で読み込むタスクや、データ変換処理の最終手順として、データを SQL Server データベースに一括で読み込む変換先コンポーネントが含まれています。
SSIS パッケージは、再起動可能なように構成できます。つまり、パッケージ内のタスクまたはコンテナのいずれかのあらかじめ決められたチェックポイントから、パッケージを再実行できます。パッケージを再起動する機能により、特にパッケージで多数のソースのデータを処理する場合には、多くの時間を節約できます。
SSIS パッケージを使用して、データベース内のディメンション テーブルおよびファクト テーブルを読み込むことができます。ディメンション テーブルの元のデータが、複数のデータ ソースに格納されている場合、パッケージはそのデータを 1 つのデータセットにマージし、ディメンション テーブルを単一プロセス内に読み込むことができます。そのために、データ ソースごとに別のプロセスを使用する必要はありません。
データ ウェアハウスおよびデータ マートのデータの更新は、複雑な場合があります。通常、どちらの種類のデータ ストアにも、緩やかに変化するディメンションが含まれおり、データ変換処理中には、そうしたディメンションの管理が困難な場合があるためです。緩やかに変化するディメンション ウィザードは、レコードの挿入や更新、関連レコードの更新、およびテーブルへの新しい列の追加を行う SQL ステートメントを動的に作成し、緩やかに変化するディメンションのサポートを自動化します。
さらに、Integration Services パッケージ内のタスクと変換により、Analysis Services キューブおよびディメンションを処理できます。パッケージで、キューブを構築しているデータベース内のテーブルを更新する場合、Integration Services タスクと変換を使用して、キューブの処理を自動化できます。ディメンションの処理も同様に自動化できます。キューブやディメンションの処理の自動化によって、キューブやディメンション内の情報にアクセスするユーザーおよびリレーショナル データベースのデータにアクセスするユーザーの両方に対して、データを最新の状態に保つことができます。
Integration Services はさらに、データが変換先に読み込まれる前に関数を計算できます。データ ウェアハウスやデータ マートに集計情報が格納されている場合、SSIS パッケージは、SUM、AVERAGE、COUNT などの関数を計算できます。SSIS 変換はさらに、リレーショナル データに対してピボットを行い、データ ウェアハウスのテーブル構造との互換性が高い、標準化されていない形式に変換できます。
データのクリーンアップと標準化
データの読み込み先がオンライン トランザクション処理 (OLTP) データベース、オンライン分析処理 (OLAP) データベース、Excel ワークシート、またはファイルかどうかにかかわらず、データを読み込む前には、そのデータをクリーンアップして標準化する必要があります。データは、次の理由により更新を必要とする場合があります。
- データが組織内の複数の支店から提供されており、各データが別の規則と標準を使用している場合。このデータを使用するには、事前に別の形式にする必要があることがあります。たとえば、姓と名を 1 つの列に結合する場合などです。
- データが借りたものか、購入したものである場合。このデータを使用するには、ビジネス スタンダードに適合するように、事前に標準化してクリーンアップする必要があることがあります。たとえば、すべてのレコードで同じ省略形の州名や同じ製品名を使用しているか確認する場合などです。
- ロケール固有のデータの場合。たとえば、データはさまざまな日時および数値形式を使用することがあります。ロケールの異なるデータがマージされる場合、そのデータを読み込む前に 1 つのロケールに変換して、データの破損を防ぐ必要があります。
Integration Services には、パッケージに追加してデータをクリーンアップおよび標準化したり、データの大文字と小文字を変更したり、別の型や形式にデータを変換したり、式に基づいて列の値を新規作成できる変換が組み込まれています。たとえば、パッケージでは姓と名の 2 つの列を 1 つの氏名の列に連結し、列内の文字を大文字に変更できます。
さらに、Integration Services パッケージでは、完全参照またはあいまい参照のどちらかを使用して参照テーブル内の値を検索し、列内の値を参照テーブルの値で置き換えることにより、データをクリーンアップできます。通常、パッケージは最初に完全参照を適用し、完全参照が失敗した場合は、その次にあいまい参照を適用します。たとえば、最初に製品の主キーの値を使用して、参照テーブル内の製品名の参照を試み、製品名の検索に失敗した場合、製品名のあいまい一致を使用して、再度検索を試みます。
別の変換では、データセット内の類似した値をグループ化することにより、データをクリーンアップします。これは、重複の可能性があるレコードを特定するのに役立ちます。重複するレコードは、データベースに挿入する前にさらなる評価が必要です。たとえば、顧客レコード内の住所を比較することで、多数の顧客の重複を識別できます。
データ変換処理へのビジネス インテリジェンスの組み込み
データ変換処理では、アクセスして処理するデータに、動的に対応するロジックを組み込む必要があります。
データは、データ値に応じて、要約、変換、および分散化する必要があります。この処理では、列の値の評価に基づいて、データを拒否する必要が生じる場合もあります。
この要件に対処するには、SSIS パッケージ内のロジックで、次の種類のタスクの実行が必要となる場合があります。
- 複数のデータ ソースからデータをマージする。
- データを評価してデータ変換を適用する。
- データ値に基づき、1 つのデータセットを複数のデータセットに分割する。
- データセットの異なるサブセットに対して、個別の集計を適用する。
- データのサブセットを、異なる変換先または複数の変換先に読み込む。
Integration Services では、ビジネス インテリジェンスを SSIS パッケージに組み込むためのコンテナ、タスク、および変換が用意されています。
コンテナを使用すると、ファイルまたはオブジェクトを一括して列挙したり、式を評価することで、ワークフローを反復できます。パッケージはデータを評価して、結果に基づいてワークフローを繰り返すことができます。たとえば、日付が現在の月にある場合、パッケージはあるタスク セットを実行し、現在の月にない場合は別のタスク セットを実行します。
入力パラメータを使用するタスクにより、パッケージにビジネス インテリジェンスを組み込むこともできます。たとえば、入力パラメータの値を使用して、タスクが取得するデータをフィルタにより選択できます。
変換を使用すると、式を評価し、その結果に基づいてデータセット内の行を異なる変換先に送信できます。データの分割後、パッケージはデータセットのサブセットごとに、異なる変換を適用できます。たとえば、ある式により、日付の列を評価して適切な期間の売上データを追加し、その要約情報のみを格納できます。
さらに、データセットを複数の変換先に送信し、同じデータに対して異なる変換セットを適用できます。たとえば、ある変換セットでデータを要約する一方、別の変換セットでは、参照テーブルの値を参照して別のソースからデータを追加することにより、データを拡張できます。
管理機能とデータ読み込みの自動化
データベースのバックアップや復元、SQL Server データベースとそれに含まれるオブジェクトのコピー、SQL Server オブジェクトのコピー、データの読み込みなどの管理機能を、管理者が自動化する必要がある場合があります。Integration Services パッケージを使用すると、これらの機能を実行できます。
Integration Services には、テーブル、ビュー、ストアド プロシージャなどの SQL Server データベース オブジェクトをコピーしたり、データベース、ログイン、統計などの SQL Server オブジェクトをコピーしたり、Transact-SQL ステートメントを使用して SQL Server オブジェクトやデータを追加、変更、削除するため専用に設計されたタスクが含まれています。
OLTP または OLAP データベース環境の管理では、頻繁にデータの読み込みが発生します。Integration Services には、データの一括読み込みを容易にする、いくつかのタスクが含まれます。タスクを使用すると、テキスト ファイルから直接 SQL Server テーブルやビューにデータを読み込むことができます。また、変換先コンポーネントを使用して、変換を列データに適用した後、そのデータを SQL Server テーブルやビューに読み込むことができます。
Integration Services パッケージは、別のパッケージを実行できます。多くの管理機能を含むデータ変換ソリューションを複数のパッケージに分割できるため、パッケージを容易に管理および再利用できます。
異なるサーバーで同じ管理機能を実行する必要がある場合に、パッケージを使用できます。パッケージはループを使用してすべてのサーバーを列挙し、複数のコンピュータ上で同じ機能を実行できます。SQL Server の管理をサポートするために、Integration Services では、SMO (SQL Server 管理オブジェクト) オブジェクトを反復処理するための列挙子が提供されています。たとえば、パッケージは SMO 列挙子を使用して、SQL Server がインストールされたコンピュータの Jobs コレクション内の各ジョブに対して、同じ管理機能を実行できます。
また、SQL Server エージェント ジョブを使用して、SSIS パッケージをスケジュールすることもできます。
参照
概念
Integration Services のアーキテクチャ
Integration Services の概要
SQL Server Integration Services
その他の技術情報
Integration Services のオブジェクトと概念
Integration Services のツールとユーティリティ