2009-04-22 7 views
2

入力から行を取り込むSSISスクリプトコンポーネントがあります。SSISスクリプトコンポーネントすべての行を格納

入力上の行の1つは、行は、私がスクリプトは、行の正しいコレクションに入力されているすべての行をロードするために取得するにはどうすればよいタイプAであるかB.

場合に識別するブール値です。

また、行コレクションを使用して出力する方法についてのガイドも素晴らしいと思います。

答えて

1

あなたはジェイミートムソンは、ここで彼のブログエントリで何をしたかのようなものを使用することができる場合があります

http://consultingblogs.emc.com/jamiethomson/archive/2005/09/05/SSIS-Nugget_3A00_-Multiple-outputs-from-a-synchronous-script-transform.aspx

彼は、スクリプトコンポーネントを使用し、条件に応じて、複数の出力ストリームに出力を分割します。彼は、コンポーネントを構成する方法と適切な行を適切な出力ストリームに送信する方法を非常に簡潔に説明しています。これがあなたが探していたものだと願っています。

0

スクリプトコンポーネントは、VBを使用しているので、それがより密接にあなたが店にしようとしているものを表すようしかし、あなたは、データテーブルを使用してに見てみたいことがあります

If Column(type) = True Then 
    CollectionA.Add(row) 
Else 
    CollectionB.Add(row) 
End If 

ようなものになるだろう。

すべての行がコンポーネントを通過したときに実行されるイベントがあります。そのイベントが実行されると、DataTablesからデータフローに存在するいくつかの変数にデータを移動できます。これらの変数をTableの値として入力すると、データフロー内のこれらの変数を使って10回作業できると思います。

この操作全体をコントロールフロー内の別々のDataFlowコンポーネントに入れることが最善の方法です。出力される行数を変更しているように聞こえるので、複数のDataFlowコンポーネント。

+0

これは、おそらく私は間違った方法で問題を解決しようとしています... 私は通信用と電話用の2つの同一のテーブルを持っています。 テーブルごとに2つのコレクションが1つ必要です。 次に、コールテーブルを調べ、各行について、同じ日付の通信が見つかるかどうかを確認します。あなたはあなたが電話を使用することができない場合は、結果に通信をコピーすることができます。同じ通信を再使用しないでください。 –

+0

個人的に私はちょうど通常の参加をします。ルックアップではなく、ストレートジョインです。私は時間を細かくしたくないと思っていますが、その日には、2つのDateTimeフィールドをVarChar(10)フィールドに変換して(時間を切り捨てて)結合して、フィールド。これは多分多くのマッチングにつながりますが、あなたが探しているものを与えるはずです。 – CodeMonkey1313

+0

私は多くの多くのマッチングが問題ではありません。私はそれを取り替えるために同じ日にコミュニケーションを見つけることができれば、コールを削除したいと思います。しかし、私は決して同じ通信を使用して2つの別々の呼び出しを置き換えるべきではありません –

関連する問題