2017-02-22 7 views
2

条件に基づいて条件付き分割結果を(1つのint値だけ)変数に渡す必要がある条件があります。これを行う方法を手助けできる人がいますか?SSIS:条件付き分割結果を変数

私の実際のパッケージ(データフロー):

XML Source - >Conditional split(条件に基づく)の条件に基づいて2 outputs..one結果(一つだけint型の値になります)それを渡すために必要変数へ。これを達成する方法は?

答えて

3

純粋なSSIS方法 - データフローをRecordset Destinationに消費してから、ForEach Loopで反復処理し、目的の変数に値を割り当てます。

+0

私の条件付き分割は常に単一の結果を与えるので、繰り返しは必要ありません。私のここでのポイントはSSISには新鮮です。条件付き分割結果を変数に代入する方法はわかりません。 –

+0

@narendragcでは、ForEach Loop定義で、0番目の列の値を目的の変数に割り当て、Loopシーケンスを空のままにすることができます。したがって、ループは唯一の欠点で変数を設定します。変数は行コレクションの最後の値を格納します。行が1つしかない場合は、問題はありません。 – Ferdipux

0

私はこれを実現する2つの方法を知っています。

まず、C#スクリプトコンポーネントを使用してください。これが最も簡単な方法です。 「

Dts.Variables["yourvariable"].Value = Input0Buffer.Yourcolumn 

私は今SSISへのアクセスを持っていないので、私は次のことができます。 ちょうどそのコード内でそのように設定し、「読み書き」としてあなたの変数を選択し、あなたの条件付きスプリットの後ろにスクリプトコンポーネントを置きますあなたに正確なコードを教えてください。しかし、これはあなたを始めるはずです。

2番目:テーブルに書き込んで、SQLの実行タスクで読み込みます。私はあなたがこれを達成するために、スクリプトコンポーネントを使用する必要が本当にこのよう;-)

2

好きではない:

  • スクリプトコンポーネントを作成します(それは先として入力します選択してください)

enter image description here

  • ダブルスクリプトコンポーネントをクリックするとReadWrite変数として、あなたの変数を選択してください。 (私の例ではを変数の名前は結果
スクリプトウィンドウ内

enter image description here

  • 書く次のコード

    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer) 
    
        If Not Row.inColumn_IsNull Then 
         Variables.Result = Row.inColumn 
        End If 
    
    End Sub 
    

側注:変数値はchではない新しい値を使用するには、別の作業を続行する必要がありますdataflowtask