データ フロー タスク

データ フロー タスクは、変換元と変換先との間でデータを移動するデータ フロー エンジンをカプセル化して、データの移動時にユーザーがデータを変換、クリーンアップ、および変更できるようにします。データ フロー タスクをパッケージの制御フローに追加すると、パッケージでデータの抽出、変換、および読み込みを行うことができます。

データ フローは 1 つ以上のデータ フロー コンポーネントで構成されますが、通常は、データを抽出する変換元、データを変更、ルーティング、または集約する変換、およびデータを読み込む変換先のデータ フロー コンポーネントが連結されてセットになっています。コンポーネントは、データ フロー内でパスによって連結されます。各パスは、パスの開始と終了となる 2 つのコンポーネントを指定します。詳細については、「データ フロー要素」を参照してください。

実行時に、データ フロー タスクはデータ フローから実行プランを作成し、データ フロー エンジンはそのプランを実行します。データ フローを含まないデータ フロー タスクも作成できますが、データ フロー タスクは少なくとも 1 つのデータ フローを含む場合にのみ実行されます。

次の図は、1 つのデータ フローが含まれるデータ フロー タスクを示しています。

データ フロー

データ フロー タスクには、複数のデータ フローを含めることができます。タスクが複数のデータのセットをコピーする場合で、データのコピー順序が重要でない場合は、データ フロー タスクにデータ フローを複数含める方が便利です。たとえば、5 つのデータ フローを作成し、各データ フローで、フラット ファイルからデータ ウェアハウスのスター スキーマ内のそれぞれ別のディメンション テーブルにデータをコピーできます。

ただし、1 つのデータ フロー タスク内に複数のデータ フローが含まれる場合、実行順序はデータ フロー エンジンによって決定されます。したがって、順序が重要である場合、パッケージは複数のデータ フロー タスクを使用して、各タスクにつきデータ フローを 1 つずつ含める必要があります。次に、優先順位制約を適用して、タスクの実行順序を制御できます。

次の図は、複数のデータ フローが含まれるデータ フロー タスクを示しています。

データ フロー

パッケージには複数のデータ フロー タスクを含めることができます。複雑なパッケージでは頻繁にこの方法がとられますが、たとえば、パッケージで、特定の順序でデータ フローを実行する必要がある場合、またはデータ フロー間で別のタスクを実行する必要がある場合は、データ フローごとに異なるデータ フロー タスクを使用する必要があります。

データ フロー タスクは、エラー フローを管理することもできます。データ フロー コンポーネントがデータを変換したり、参照を実行したり、または式を評価する際に、実行時に行レベルのエラーが発生する場合があります。たとえば、文字列値のデータ列が整数に変換できない場合、または式が 0 での除算を試行している場合などがあります。これらの操作の結果はいずれもエラーになり、エラーが含まれる行は、エラー フローを使用して別個に処理されます。パッケージのデータ フローでエラー フローを使用する方法については、「データのエラー処理」を参照してください。

テキスト ファイルのデータを SQL Server データベースに一括挿入するには、データ フロー タスクとデータ フローの代わりに、一括挿入タスクを使用できます。ただし、一括挿入タスクではデータの変換はできません。詳細については、「一括挿入タスク」を参照してください。

データ フロー要素でのプロパティ式の使用

多くのデータ フロー コンポーネント (変換元、変換、および変換先) では、一部のプロパティでプロパティ式を使用できます。プロパティ式は、パッケージの読み込み時にプロパティの値を置き換える式です。実行時に、パッケージは更新されたプロパティ値を使用します。Integration Services 式構文を使用して式を作成し、その式に Integration Services の関数、演算子、識別子、および変数を含めることができます。詳細については、「Integration Services の式のリファレンス」、「パッケージでの式の使用」、および「パッケージでのプロパティ式の使用」を参照してください。

Business Intelligence Development Studio でパッケージを構築すると、プロパティ式をサポートするすべてのデータ フロー コンポーネントのプロパティが、そのデータ フロー コンポーネントが属するデータ フロー タスクに表示されます。データ フロー コンポーネントのプロパティ式を追加、変更、および削除するには、データ フロー タスクをクリックし、[プロパティ] ウィンドウまたはタスク用のエディタを使用してプロパティ式を追加、変更、または削除します。データ フロー タスク自体のプロパティ式は、[プロパティ] ウィンドウで管理します。

データ フローに式を使用するコンポーネントが含まれている場合は、該当する式も [プロパティ] ウィンドウに表示されます。式を表示するには、コンポーネントが属するデータ フロー タスクを選択します。プロパティは項目別またはアルファベット順に表示できます。[プロパティ] ウィンドウで項目別のビューを使用すると、特定のプロパティで使用されていないすべての式は [その他] カテゴリに一覧表示されます。アルファベット順のビューを使用すると、データ フロー コンポーネントの名前順に式が一覧表示されます。

ログ エントリ

Integration Services では、すべてのタスクで利用可能な一連のログ イベント、および多くのタスクで利用可能なカスタム ログ エントリを提供しています。詳細については、「パッケージへのログ機能の実装」および「ログ記録用のカスタム メッセージ」を参照してください。データ フロー タスクには、次のカスタム ログ エントリが含まれています。

ログ エントリ

説明

BufferSizeTuning

データ フロー タスクでバッファのサイズが変更されたことを示します。このログ エントリはサイズ変更の理由を説明し、一時的な新しいバッファ サイズを表示します。

OnPipelinePostEndOfRowset

ProcessInput メソッドの最終呼び出しで設定される、行セットの終了シグナルがコンポーネントに通知されたことを示します。エントリは、データ フロー内で入力を処理するコンポーネントごとに書き込まれます。このエントリには、コンポーネント名が含まれます。

OnPipelinePostPrimeOutput

コンポーネントが PrimeOutput メソッドの最終呼び出しを完了したことを示します。データ フローによっては、複数のログ エントリが書き込まれる場合があります。コンポーネントがソースの場合、このログ エントリは、コンポーネントが行の処理を完了したことを意味します。

OnPipelinePreEndOfRowset

ProcessInput メソッドの最終呼び出しで設定される、行セットの終了シグナルがコンポーネントに通知されたことを示します。エントリは、データ フロー内で入力を処理するコンポーネントごとに書き込まれます。このエントリには、コンポーネント名が含まれます。

OnPipelinePrePrimeOutput

コンポーネントに、PrimeOutput メソッドからの呼び出しが通知されたことを示します。データ フローによっては、複数のログ エントリが書き込まれる場合があります。

OnPipelineRowsSent

ProcessInput メソッドの呼び出しによってコンポーネント入力に指定された行数を報告します。ログ エントリにはコンポーネント名が含まれます。

PipelineBufferLeak

バッファ マネージャの終了後もバッファを保持しているコンポーネントに関する情報を提供します。バッファが保持されたままの場合、バッファ リソースは解放されていないので、メモリ リークが発生する可能性があります。このログ エントリは、コンポーネントの名前とバッファの ID を含みます。

PipelineComponentTime

主要な 5 つの処理手順 (Validate、PreExecute、PostExecute、ProcessInput、および ProcessOutput) それぞれにおいてコンポーネントが費やした時間 (ミリ秒) を報告します。

PipelineExecutionPlan

データ フローの実行プランを報告します。この実行プランでは、バッファをコンポーネントに送信する方法に関する情報を提供します。この情報は、PipelineExecutionTrees ログ エントリと組み合わせて、データ フロー タスク内での実行内容を示します。

PipelineExecutionTrees

データ フロー内のレイアウトの実行ツリーを報告します。データ フロー エンジンのスケジューラは、このツリーを使用して、データ フローの実行プランを構築します。

PipelineInitialization

タスクに関する初期化情報を提供します。この情報には、BLOB データの一時的な保存に使用するディレクトリ、既定のバッファ サイズ、およびバッファ内の行数が含まれます。データ フロー タスクの構成によっては、複数のログ エントリが書き込まれる場合があります。

これらのログ エントリには、パッケージを実行するたびに、データ フロー タスクの実行に関する豊富な情報が記録されます。パッケージを繰り返し実行するうちに情報が蓄積され、タスクが実行する処理、パフォーマンスに影響する問題、タスクが処理するデータ量などに関する重要な履歴情報が得られます。

これらのログ エントリを使用してデータ フローのパフォーマンスを監視し、向上させる方法の詳細については、次のいずれかのトピックを参照してください。

データ フロー タスクからのサンプル メッセージ

次の表は、ごく単純なパッケージでのログ エントリのサンプル メッセージの一覧です。このパッケージは、OLE DB ソースを使用してテーブルからデータを抽出し、並べ替え変換を使用してデータを並べ替え、さらに OLE DB 変換先を使用してデータを別のテーブルに書き込みます。

ログ エントリ

メッセージ

BufferSizeTuning

バッファの種類 0 内の行が、構成したバッファの最大サイズよりも大きくなりました。この種類のバッファに含まれる行は 9,637 行のみになります。

バッファの種類 2 内の行が、構成したバッファの最大サイズよりも大きくなりました。この種類のバッファに含まれる行は 9,497 行のみになります。

バッファの種類 3 内の行が、構成したバッファの最大サイズよりも大きくなりました。この種類のバッファに含まれる行は 9,497 行のみになります。

OnPipelinePostEndOfRowset

コンポーネントに行セットの終了が通知されます。: 1180 : 並べ替え : 1181 : 並べ替えの入力

コンポーネントに行セットの終了が通知されます。: 1291 : OLE DB 変換先 : 1304 : OLE DB 変換先の入力

OnPipelinePostPrimeOutput

コンポーネントが、コンポーネント自体の PrimeOutput 呼び出しから返されました。: 1180 : 並べ替え

コンポーネントが、コンポーネント自体の PrimeOutput 呼び出しから返されました。: 1 : OLE DB ソース

OnPipelinePreEndOfRowset

コンポーネントのすべての行の処理が完了しました。: 1180 : 並べ替え : 1181 : 並べ替えの入力

コンポーネントのすべての行の処理が完了しました。: 1291 : OLE DB 変換先 : 1304 : OLE DB 変換先の入力

OnPipelinePrePrimeOutput

コンポーネントで PrimeOutput が呼び出されます。: 1180 : 並べ替え

コンポーネントで PrimeOutput が呼び出されます。: 1 : OLE DB ソース

OnPipelineRowsSent

行がデータ フロー コンポーネントに入力として指定されました。: : 1185 : OLE DB ソースの出力 : 1180 : 並べ替え : 1181 : 並べ替えの入力 : 76

行がデータ フロー コンポーネントに入力として指定されました。: : 1308 : 並べ替えの出力 : 1291 : OLE DB 変換先 : 1304 : OLE DB 変換先の入力 : 76

PipelineComponentTime

コンポーネント "Calculate LineItemTotalCost" (3522) は ProcessInput に 356 ミリ秒要しました。

コンポーネント "Sum Quantity and LineItemTotalCost" (3619) は ProcessInput に 79 ミリ秒要しました。

コンポーネント "Calculate Average Cost" (3662) は ProcessInput に 16 ミリ秒要しました。

コンポーネント "Sort by ProductID" (3717) は ProcessInput に 125 ミリ秒要しました。

コンポーネント "Load Data" (3773) は ProcessInput に 0 ミリ秒要しました。

コンポーネント "Extract Data" (3869) は出力 "OLE DB ソースの出力" (3879) で PrimeOutput のバッファ入力に 688 ミリ秒要しました。

コンポーネント "Sum Quantity and LineItemTotalCost" (3619) は出力 "集計の出力 1" (3621) で PrimeOutput のバッファ入力に 141 ミリ秒要しました。

コンポーネント "Sort by ProductID" (3717) は出力 "並べ替えの出力" (3719) で PrimeOutput のバッファ入力に 16 ミリ秒要しました。

PipelineExecutionPlan

SourceThread0

操作の対象: 1

影響: 1180 1291

出力作業一覧

出力 ID 11 に対する型 1 の CreatePrimeBuffer。

SetBufferListener: 入力 ID 1181 の "WorkThread0"

出力 ID 12 に対する型 3 の CreatePrimeBuffer。

コンポーネント "OLE DB ソース" (1) の CallPrimeOutput

出力作業終了一覧

SourceThread0 作業終了

WorkThread0

操作の対象: 1180

影響: 1180 1291

入力作業一覧、入力 ID 1181 (1 EOR が必要です)

コンポーネント "並べ替え" (1180) にあるビューの種類 2 に対する入力 ID 1181 の CallProcessInput

入力 1181 に対する入力作業終了一覧

出力作業一覧

出力 ID 1182 に対する型 4 の CreatePrimeBuffer。

SetBufferListener: 入力 ID 1304 の "WorkThread1"

コンポーネント "並べ替え" (1180) の CallPrimeOutput

出力作業終了一覧

WorkThread0 作業終了

WorkThread1

操作の対象: 1291

影響: 1291

入力作業一覧、入力 ID 1304 (1 EOR が必要です)

コンポーネント "OLE DB 変換先" (1291) にあるビューの種類 5 に対する入力 ID 1304 の CallProcessInput

入力 1304 に対する入力作業終了一覧

出力作業一覧

出力作業終了一覧

WorkThread1 作業終了

PipelineExecutionTrees

begin execution tree 0

output "OLE DB ソースの出力" (11)

input "並べ替えの入力" (1181)

end execution tree 0

begin execution tree 1

output "OLE DB ソースのエラー出力" (12)

end execution tree 1

begin execution tree 2

output "並べ替えの出力" (1182)

input "OLE DB 変換先の入力" (1304)

output "OLE DB 変換先のエラー出力" (1305)

end execution tree 2

PipelineInitialization

BLOB データの一時的なストレージの場所が指定されませんでした。バッファ マネージャにより、TEMP 環境変数および TMP 環境変数のディレクトリが検討されます。

既定のバッファ サイズは 10,485,760 バイトです。

既定では、バッファには 10,000 行保持されます。

RunInOptimizedMode プロパティが False に設定されているため、データ フローで未使用のコンポーネントの削除が行われません。

ログ イベントの多くは複数のエントリを書き込み、多数のログ エントリのメッセージに複雑なデータが含まれています。メッセージ テキストを解析することで、複雑なメッセージの内容をより簡単に理解して伝えられるようになります。ログの場所によっては、Transact-SQL ステートメントまたはスクリプト コンポーネントを使用して、複雑なテキストを列、またはより有効なその他の形式に分けることができます。

たとえば、次の表に含まれるメッセージ "行がデータ フロー コンポーネントに入力として指定されました。: : 1185 : OLE DB ソースの出力 : 1180 : 並べ替え : 1181 : 並べ替えの入力 : 76" は、列へと解析されています。このメッセージは、OLE DB ソースから並べ替え変換に行が送信されるときに OnPipelineRowsSent イベントによって書き込まれました。

説明

PathID

OLE DB ソースと並べ替え変換の間のパスの ID プロパティの値です。

1185

PathName

パスの Name プロパティの値です。

OLE DB ソースの出力

ComponentID

並べ替え変換の ID プロパティの値です。

1180

ComponentName

並べ替え変換の Name プロパティの値です。

並べ替え

InputID

並べ替え変換に対する入力の ID プロパティの値です。

1181

InputName

並べ替え変換に対する入力の Name プロパティの値です。

並べ替えの入力

RowsSent

並べ替え変換の入力に送信された行数です。

76

変換元

次の変換元には、プロパティ式で更新できるプロパティがあります。

詳細については、「変換元のカスタム プロパティ」を参照してください。

変換

変換先

次の変換先には、プロパティ式で更新できるプロパティがあります。

詳細については、「変換先のカスタム プロパティ」を参照してください。

データ フロー タスクの構成

プロパティを設定するには、[プロパティ] ウィンドウで行うか、またはプログラムによって設定します。

プロパティを [プロパティ] ウィンドウで設定する方法の詳細については、次のトピックを参照してください。

プログラムによるデータ フロー タスクの構成

プログラムによってデータ フロー タスクをパッケージに追加して、データ フローのプロパティを設定する方法の詳細については、次のトピックを参照してください。

Integration Services のアイコン (小) 最新の Integration Services の入手

マイクロソフトが提供する最新のダウンロード、アーティクル、サンプル、ビデオ、およびコミュニティで選択されたソリューションについては、MSDN または TechNet の Integration Services のページを参照してください。

これらの更新が自動で通知されるようにするには、ページの RSS フィードを購読します。