Отключение данных в SSIS - PullRequest
       26

Отключение данных в SSIS

3 голосов
/ 26 сентября 2011

Я пытаюсь нормализовать данные с использованием служб SSIS в следующем формате:

SerialNumber  Date       R01  R02  R03  R04 
-------------------------------------------
1             9/25/2011  9    6    1    2
1             9/26/2011  4    1    3    5
2             9/25/2011  7    3    2    1
2             9/26/2011  2    4    10   6

Каждый столбец «R» представляет чтение в течение часа.R01 - 12:00, R02 - 1:00, R03 - 2:00 и R04 - 3:00.Я хотел бы преобразовать данные и сохранить их в другой таблице в следующем формате (разрывы строк для удобства чтения):

SerialNumber  Date                Reading
-----------------------------------------
1             9/25/2011 12:00 AM  9    
1             9/25/2011 1:00 AM   6    
1             9/25/2011 2:00 AM   1   
1             9/25/2011 3:00 AM   2   

1             9/26/2011 12:00 AM  4    
1             9/26/2011 1:00 AM   1    
1             9/26/2011 2:00 AM   3   
1             9/26/2011 3:00 AM   5   

2             9/25/2011 12:00 AM  7    
2             9/25/2011 1:00 AM   3    
2             9/25/2011 2:00 AM   2   
2             9/25/2011 3:00 AM   1

2             9/26/2011 12:00 AM  2    
2             9/26/2011 1:00 AM   4    
2             9/26/2011 2:00 AM   10   
2             9/26/2011 3:00 AM   6

Я использую преобразование unpivot в пакете служб SSIS 2008 для выполнения большей части этого, ноУ меня возникла проблема с добавлением часа к дате на основе столбца значения, с которым я работаю.Есть ли способ сделать это в SSIS?Имейте в виду, что это небольшое подмножество данных, насчитывающее около 30 миллионов записей, поэтому производительность является проблемой.

Спасибо за помощь.

1 Ответ

3 голосов
/ 26 сентября 2011
  1. Создайте пакет SSIS, добавьте новый Data Flow Task и настройте этот DFT (Edit...)
  2. Добавить новый источник данных
  3. Добавьте UNPIVOT компонент и настройте его следующим образом: enter image description here
  4. Добавить DATA CONVERSION компонент: enter image description here Временные результаты: enter image description here
  5. Добавить DERIVED COLUMN компонент: enter image description here Для NewData производного столбца вы можете использовать это выражение: DATEADD("HOUR",(Type == "R01" ? 0 : (Type == "R02" ? 1 : (Type == "R03" ? 2 : 3))),Date). Оператор «boolean_expression» ? «when_true» : «when_false» аналогичен функции IIF() (из VBA / VB) и используется для вычисления количества добавляемых часов: для «R01» -> 0 часов, для «R02» -> 1 час, для «R03» - > 2 часа или 3 часа (для «R04»).

    Результаты: enter image description here

...