2017-02-22 42 views
2

У меня есть условие, когда мне нужно передать результат условного разделения, основанный на условии (будет только одно значение int) переменной. Может ли кто-нибудь помочь, как это сделать?SSIS: Условный результат разделения для переменной

Мой фактический пакет (поток данных):

XML Source ->Conditional split(на основе состояния) 2 outputs..one результат на основании условия (будет только один INT значение) нужно передать его к переменной. Как достичь этого?

ответ

3

Чистый путь SSIS - используйте поток данных в Recordset Destination, а затем пропустите его с помощью цикла ForEach, присвоив значение требуемой переменной.

+0

Я считаю, что не нужно проходить через каждый, поскольку мой условный раскол всегда дает единственный результат. Моя точка зрения здесь более свежая для SSIS. Я не знаю, как назначить условный результат разделения переменной. –

+0

@narendragc, вы можете присвоить значение 0-го столбца вашей нужной переменной в определении Loop ForEach и оставить пустую последовательность Loop. Таким образом, цикл установит переменную с единственным недостатком - переменная сохранит последнее значение из коллекции строк. Если у вас будет только один ряд - это не имеет значения. – Ferdipux

0

Я знаю два способа реализовать это.

Первое: сделайте это с помощью компонента сценария C#, это самый простой способ. Просто поместите компонент сценария позади условного разделения, выберите переменную как «READWRITE», а затем установить его как то в коде:

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

я не имею доступа к SSIS прямо сейчас, так что я могу» t дает вам точный код, но это должно вас начать.

Во-вторых: Напишите на стол и прочитайте его с помощью задачи Выполнение SQL. Я не очень нравится, таким образом ;-)

2

вы должны использовать компонент сценария для достижения этой цели:

  • Создать компонент сценария (Выберите его тип, как Destination)

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 
    

Side Примечание: Переменный значение не ch ange до dataflowtask Выполнение заканчивается, чтобы использовать новое значение, вам необходимо продолжить работу в другом dataflowtask

 Смежные вопросы

  • Нет связанных вопросов^_^