DTS 转换为 SSIS 派生列表达式
DTS Conversion to SSIS Derived Column Expression
有人要求我将 DTS 包转换为 SSIS。我对这两者都比较陌生,所以我正在尝试同时学习两者以及如何在两者之间进行转换。
我们有几个转换,我正试图将其更改为派生列表达式,但在语法方面遇到了一些困难。
我们将数据从 excel sheet 拉取到 SQL 服务器。
我们在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
输出table如下:
[Period] [tinyint] NOT NULL,
[% Change] [decimal](7, 2) NULL,
我认为对于 Period 列,它应该只是 (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)
这是抛出解析错误,我哪里出错了?
提前致谢。
在SSIS表达式语言中,不等于!=。 <> 不起作用。我对你的表情进行了更改,对我有用。
ISNULL([Annual % Change]) ? NULL(DT_R8) :
(DT_STR,10,1252)[Annual % Change] != "." ? (DT_R8)[Annual % Change]: NULL(DT_R8)
有人要求我将 DTS 包转换为 SSIS。我对这两者都比较陌生,所以我正在尝试同时学习两者以及如何在两者之间进行转换。
我们有几个转换,我正试图将其更改为派生列表达式,但在语法方面遇到了一些困难。
我们将数据从 excel sheet 拉取到 SQL 服务器。
我们在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
输出table如下:
[Period] [tinyint] NOT NULL,
[% Change] [decimal](7, 2) NULL,
我认为对于 Period 列,它应该只是 (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)
这是抛出解析错误,我哪里出错了?
提前致谢。
在SSIS表达式语言中,不等于!=。 <> 不起作用。我对你的表情进行了更改,对我有用。
ISNULL([Annual % Change]) ? NULL(DT_R8) :
(DT_STR,10,1252)[Annual % Change] != "." ? (DT_R8)[Annual % Change]: NULL(DT_R8)