2012-02-10 1 views
0

У меня есть этот плоский файл, который я импортирую, и его нужно отключить. Все работает хорошо, за исключением того, что я хотел бы, чтобы univot заставлял строки даже присваивать значение null.Как сказать SSIS univot делать строки, даже если значения равны нулю

Я не хочу прибегать к каким-то взломам, чтобы добавить -1 и заменить -1 после.

Программное обеспечение, использующее базу данных, всегда будет иметь 3 строки для каждой строки, которая была импортирована из плоского файла, даже если для нее значение null.

Некоторые рисунок, чтобы объяснить проблему

плоский файл построчно

 

----------------------------------------------------------------- 
|id of person | code1 | value1 | code2 | value2 | code3 | value3| 
----------------------------------------------------------------- 
|123   | hh1 | hh2 | 2 | hh3 |  |  | 
----------------------------------------------------------------- 
What I get is 

------------------------------ 
|id of person | code | value | 
------------------------------ 
|123   | hh2 | 2 | 
------------------------------ 
what I want 


------------------------------ 
|id of person | code | value | 
------------------------------ 
|123   |hh1 | null | 
------------------------------ 
|123   |hh2 | 2 | 
------------------------------ 
|123   |hh3 | null | 
------------------------------ 

ответ

0

Я думаю, что это таблица вы имели в виду, чтобы получить результат, который вы хотите.

 
----------------------------------------------------------------- 
|id of person | code1 | value1 | code2 | value2 | code3 | value3| 
----------------------------------------------------------------- 
|123   | hh1 | NULL | hh2 | 2 | hh3 | NULL | 
----------------------------------------------------------------- 

Я не уверен, если вы можете сделать это с помощью трансформации Потока UNPIVOT данных, однако вы можете легко сделать это в задаче сценария с асинхронным выходом. Чтобы использовать асинхронный вывод, вам необходимо внести изменения в свойства вывода задачи сценария преобразования под Входы и выходы. Установите SynchronousInputID в None

После того, что следующий код должен работать для вас.

public override void Input0_ProcessInputRow(Input0Buffer Row) 
    { 
     Output0Buffer.AddRow(); 
     Output0Buffer.ID = Row.ID; 
     Output0Buffer.Code = Row.Code1; 
     Output0Buffer.Value = Row.Value1; 

     Output0Buffer.AddRow(); 
     Output0Buffer.ID = Row.ID; 
     Output0Buffer.Code = Row.Code2; 
     Output0Buffer.Value = Row.Value2; 

     Output0Buffer.AddRow(); 
     Output0Buffer.ID = Row.ID; 
     Output0Buffer.Code = Row.Code3; 
     Output0Buffer.Value = Row.Value3; 
    } 

Это создаст 3 новые строки для каждых 1 строки. Я предположил, что ваш идентификатор ID.

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