変更データの間隔の指定
変更データの増分読み込みを実行する Integration Services パッケージの制御フローにおいて、最初のタスクは、変更間隔のエンドポイントを計算することです。このエンドポイントは datetime 値で、パッケージで後から使用するためにパッケージ変数に格納されます。
注意 |
---|
制御フローをデザインするプロセス全体の説明については、「変更データ キャプチャによる増分読み込みの向上」を参照してください。 パッケージでの変更データ キャプチャの使用方法を紹介した完全なエンド ツー エンドのサンプルについては、Codeplex にある Change Data Capture for Specified Interval パッケージ サンプルおよび Change Data Capture since Last Request パッケージ サンプルを参照してください。 |
エンドポイントのパッケージ変数の設定
エンドポイントを計算するように SQL 実行タスクを構成する前に、エンドポイントを格納するパッケージ変数を定義する必要があります。
パッケージ変数を設定するには
Business Intelligence Development Studio で、新しい Integration Services プロジェクトを開きます。
[変数] ウィンドウで、次の変数を作成します。
間隔の開始時点を格納する datetime データ型の変数を作成します。
この例では、ExtractStartTime という名前の変数を使用します。
間隔の終了時点を格納する datetime データ型の別の変数を作成します。
この例では、ExtractEndTime という名前の変数を使用します。
複数の子パッケージを実行するマスター パッケージのエンドポイントを計算する場合は、親パッケージ変数の構成を使用してその変数の値を各子パッケージに渡すことができます。詳細については、「パッケージ実行タスク」および「子パッケージで親変数の値を使用する方法」を参照してください。
変更データの開始時点と終了時点の計算
間隔のエンドポイントのパッケージ変数を設定したら、そのエンドポイントの実際の値を計算し、対応するパッケージ変数にマップできるようになります。このエンドポイントは datetime 値なので、datetime 値を計算または操作できる関数を使用する必要があります。Integration Services 式言語と Transact-SQL の両方に、datetime 値を操作する関数が用意されています。
datetime 値を操作する Integration Services 式言語の関数
datetime 値を操作する Transact-SQL の関数
日付と時刻のデータ型および関数 (Transact-SQL).
これらの datetime 関数のいずれかを使用してエンドポイントを計算する前に、間隔が一定で定期的かどうかを判断する必要があります。通常、ソース テーブルで行われた変更は、定期的に変換先テーブルに適用します。たとえば、このような変更は、1 時間ごと、毎日、または毎週適用します。
変更間隔が一定かランダムかを把握したら、エンドポイントを計算できます。
開始日時の計算。前の読み込みの終了日時を現在の開始日時として使用します。増分読み込みの間隔が一定である場合は、Transact-SQL または Integration Services 式言語の datetime 関数を使用してこの値を計算できます。一定でない場合は、実行のたびにエンドポイントを保存し、SQL 実行タスクまたはスクリプト タスクを使用して前のエンドポイントを読み込むことが必要になる場合があります。
終了日時の計算。増分読み込みの間隔が一定である場合は、現在の終了日時を開始日時からのオフセットとして計算します。ここでも、Transact-SQL または Integration Services 式言語の datetime 関数を使用してこの値を計算できます。
次の手順では、変更間隔が一定で、増分読み込みパッケージが例外なく毎日実行されることを前提としています。それ以外の場合、対象外の間隔の変更データは失われます。間隔の開始時点は一昨日の午前 0 時 (24 ~ 48 時間前) です。間隔の終了時点は昨日の午前 0 時 (0 ~ 24 時間前の昨晩) です。
キャプチャ間隔の開始時点と終了時点を計算するには
SSIS デザイナーの [制御フロー] タブで、SQL 実行タスクをパッケージに追加します。
[SQL 実行タスク エディター] を開いて、エディターの [全般] ページで次のオプションを選択します。
[ResultSet] で [単一行] を選択します。
ソース データベースへの有効な接続を構成します。
[SQLSourceType] で [直接入力] を選択します。
[SQLStatement] に、次の SQL ステートメントを入力します。
SELECT DATEADD(dd,0, DATEDIFF(dd,0,GETDATE()-1)) AS ExtractStartTime, DATEADD(dd,0, DATEDIFF(dd,0,GETDATE())) AS ExtractEndTime
[SQL 実行タスク エディター] の [結果セット] ページで、ExtractStartTime の結果を ExtractStartTime パッケージ変数に、ExtractEndTime の結果を ExtractEndTime パッケージ変数にマップします。
注意 Integration Services 変数の値を設定する式を使用する場合は、変数の値にアクセスするたびに式が評価されます。
次の手順
変更の範囲の開始時点と終了時点を計算したら、次の手順で、変更データが準備できているかどうかを判断します。
次のトピック : 「変更データが準備できているかどうかの判断」
|