3

同じデータ フロー タスクに 5 つの独立したデータ フローがあり、それぞれにソースと宛先があります。それらを順次実行するにはどうすればよいですか。それらは並行して実行されているようです。さまざまなデータ フロー タスクで行う場合があります。しかし、単一のデータフロータスクでそれを行うにはどうすればよいですか

4

2 に答える 2

9

同じタスクに独立したデータ フローを持たないでください。インポート/エクスポート ウィザードがそれを行うことは知っていますが、Microsoft のチームが何かを行ったからといって、それがベスト プラクティスになるとは限りません。データ フローは、「無料」の並列化によってその能力とパフォーマンスを発揮します。それを望まない場合は、将来のコードを保守する人のために、4 つの追加のデータ フローを作成し、それらにコピー アンド ペーストしてください。これを行ってもまったく害はありません。

上記の質問に実際に答えるには、何らかの依存関係を導入する必要があります。恐ろしいアイデアのパンテオンでは、次のものが一番上にあります。

その中に複数の独立したフローを含むデータ フローは、OLE DB 宛先へのソース (問題ではない) のように見えると思います。ソース クエリを変更するか、その後に派生列を追加して、int 型 (DT_I4) の列を作成し、一意の名前HackedSortKeyを付けて値 1 を割り当てます。

それらの 1 つを除くすべての既存の OLE DB 宛先を削除します。代わりに、OLE DB コマンドに置き換えてください。OLE DB コマンドを使用する価値は、行が通過できることです。名前が示すように、OLE DB Destination はデータのシンクにすぎません。それからの唯一の出力列はエラー列です。INSERTそれぞれについてクエリを記述します。これは Command オブジェクトの設計上の問題ですが、データベースでシングルトン操作を実行するため、実行時の問題も発生します。「ああ、挿入する行があります。コマンドを発行するまでしばらくお待ちください。ああ、挿入する行があります。しばらくお待ちください。」すべての行がこの処理を受けます。

最初の Source to Command オブジェクトを取得します。完全にブロックするコンポーネントをそれに接続します。ソートを使用します。HackedSortKey 列で並べ替え、重複を削除し、他の列を通過させないようにします。これのポイントは、待機を強制することです。すべてのデータが上記の OLE DB コマンドを通過した場合にのみ、Sort は下流の行を解放します (すべての行が表示されるまで、並べ替えが何であるかがわからないため)。個別の値を選択すると、元の行が A 行に減ります。

ストリーム A で渋滞が発生し、ストリーム B に遭遇します。ストリーム B は、「ソース B」->「ソート B」->「マージ結合 AB」->「OLE DB コマンド B」->「HackedSourceKey でソート」のようになります。Merge Join には並べ替えられた入力が必要なため、「並べ替え B」が必要です。偽の一致列で同じ値が使用されているため、一致しますただし、INNER ではなく LEFT OUTER JOIN の一致であることを確認する必要があります。

泡立て、すすぎ、残りのデータ フローについてこのプロセスを繰り返します。しかし実際には、さまざまなデータ フローを使用し、優先順位の制約で実行を管理する必要があります

于 2013-07-28T04:11:26.250 に答える
0

Success 制約の代わりに Completion 制約を使用して、データ フローを順番に文字列化します。そうすれば、それぞれが他の成功または失敗とは独立して実行されますが、一度に 1 つずつ実行されます。

制約の値を設定するには、あるタスクから別のタスクへの線をダブルクリックし、値を Success から Completion に変更します。

于 2013-07-30T13:50:01.767 に答える