web-dev-qa-db-ja.com

SSIS制御フローとデータフロー

SSISパッケージの制御フローの目的を完全には理解していません。作成したすべてのパッケージで、フローを制御するデータフローコンポーネントを追加するだけで、残りのロジックはデータフロー内に配置されます。

より複雑な制御フローの例を見てきましたが(EX:Excelファイルの行を反復するforeachループコンテナーなど)、データフローにも実装できない例を探しています。データフロー内でExcelファイルへの接続を簡単に作成できました。

制御フローにロジックを実装する必要がある(またはする必要がある)タイミングと、データフローを使用してすべてを実行するタイミングをよりよく理解しようとしています。

制御フローの調査を始めるきっかけとなったのは、同時開発をサポートしやすくするために、SSISデータフローをリファクタリングし、パッケージをより小さなパッケージに分解したいということです。

私はこれらの目的のために制御フローをどのように使用するかについて私の心を包み込もうとしています。

16
Paul

データフローは、ソースから宛先へのデータのフローを定義します。 1つのデータフロータスクから開始して次のタスクに移動することはありません。選択したエンティティ(ソース、変換、宛先)間のデータフロー。

さらに、データフロータスク内では、反復、コンポーネントの実行などのタスクを実行できません。

制御フローは、実行されるタスクのワークフローを定義します。多くの場合、特定の順序です(含まれる優先順位の制約を前提とします)。ループの例は、制御フロー要件の良い例ですが、スタンドアロンのSQLスクリプトを実行したり、COMインターフェイスを呼び出したり、.NETコンポーネントを実行したり、電子メールを送信したりすることもできます。制御フロータスク自体は、実際にはデータベースやファイルとは何の関係もありません。

制御フロータスク自体はデータに対して何も実行していません。それ自体がどこかでデータに作用する(またはしない)可能性のあるものを実行しています。データフロータスクISデータを使用して何かを実行します。タスクの移動と変換を定義します。

制御フローロジックとデータフローロジックは、それを実行する唯一の方法であるため、いつ実行するかは明らかです。この例では、foreachコンテナを引用し、データフローでスプレッドシートに接続できると述べています。確かに、1つのスプレッドシートについてですが、フォルダ内の複数のスプレッドシートに対してはどうしますか?データフローロジックでは、単純にできません。

お役に立てれば。

20
James Wiseman

データフロー-データをあるソースから別のソースに移動するためのものです。

制御フロー-データフローコンポーネントが実行されるタイミングと実行方法のロジックを提供します。また、制御フローでは、ループの実行、ストアドプロシージャの呼び出し、ファイルの移動、エラー処理の管理、条件の確認、結果に応じたさまざまなタスク(データフローを含む)の呼び出し、キューブの処理、別のプロセスのトリガーなどを行うことができます。

データをある場所から別の場所に移動し、それが毎回同じで、他の条件に基づいていない場合、データフロータスクのみでパッケージを回避できますが、ほとんどの場合、パッケージはそれよりも複雑です。

14
Stagg

制御フローはさまざまな目的で使用されます。まず、データのインポートに関するすべてのデータがテーブルに保存されます。そこで、procsを実行してデータフローを開始して終了し、ロギングが正しく機能するようにします。一連のファイルをループし、ファイルをアーカイブの場所に移動し、日付で名前を変更して、処理場所から削除します。ファイルの移動を行い、正しい列とサイズについてファイルを検証する別のプログラムがあります。プロシージャを実行して、データフローに入る前にファイルが検証されていることを確認します。ファイルが処理されたときにメールを送信したり、処理できなかったレコードのレポートを送信したりする必要がある場合があります。これらの電子メールは制御フローに入れられます。場合によっては、ストアドプロシージャを使用してより簡単に実行できるいくつかのクリーンアップステップがあり、そのステップを制御フローに入れます。

3
HLGEM

基本的な答えを出そうとする-制御フローは操作を実行します。 SQLステートメントの実行や電子メールの送信など。制御フローが完了すると、失敗または成功します。一方、データフローはコンテナーフローアイテムにあり、データを移動、変更、および操作する機能を提供します。

2
isaac O