Преобразование DTS в выражение производного столбца служб SSIS - PullRequest
0 голосов
/ 24 октября 2018

Меня попросили преобразовать пакет 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","")

Для столбца [Годовое изменение%], I 'мы пытались разбить его, что, я думаю, приводит к:

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 Ответ

0 голосов
/ 24 октября 2018

На языке выражений служб SSIS не равно равно! =.<> не работает.Я сделал это изменение в вашем выражении, и это сработало для меня.

ISNULL([Annual % Change]) ? NULL(DT_R8) : 
(DT_STR,10,1252)[Annual % Change] != "." ? (DT_R8)[Annual % Change]: NULL(DT_R8)
...