Преобразование DTS в выражение производного столбца служб SSIS
Меня попросили преобразовать пакет DTS в SSIS. Оба из них я относительно новичок, поэтому я пытаюсь изучить оба и как конвертировать между обоими одновременно.
У нас есть пара преобразований, которые я пытаюсь преобразовать в выражения производных столбцов, но немного борюсь с синтаксисом.
Мы извлекаем данные из таблицы Excel в SQL Server.
Сценарий, который мы использовали в пакете DTS, выглядит следующим образом:
Function Main()
DTSDestination("Period") = Cint(Replace(DTSSource("Period"),"Q",""))
If not IsNull(DTSSource("Annual % Change")) Then
If cStr(DTSSource("Annual % Change")) <> "." then
DTSDestination("% Change") = cDbl(DTSSource("Annual % Change"))
End If
End If
Main = DTSTransformStat_OK
End Function
Выходная таблица выглядит следующим образом:
[Period] [tinyint] NOT NULL,
[% Change] [decimal](7, 2) NULL,
Я считаю, что для столбца Период это должно быть просто (DT_I1)REPLACE([Period],"Q","")
Для столбца [Годовое% изменения] я попытался разбить его, к которому я думаю:
NOT ISNULL([Annual % Change])
(DT_STR,10,1252)[Annual % Change] <> "."
(DT_R8)[Annual % Change]
Тогда при попытке построить Условное выражение дало бы мне:
ISNULL([Annual % Change]) ? NULL(DT_R8) :
(DT_STR,10,1252)[Annual % Change] <> "." ? (DT_R8)[Annual % Change]: NULL(DT_R8)
Это выбрасывает ошибки синтаксического анализа, какие-либо идеи, где я иду не так?
Заранее спасибо.
1 ответ
На языке выражений служб SSIS не равно равно!=. <> не работает. Я сделал это изменение в вашем выражении, и это сработало для меня.
ISNULL([Annual % Change]) ? NULL(DT_R8) :
(DT_STR,10,1252)[Annual % Change] != "." ? (DT_R8)[Annual % Change]: NULL(DT_R8)