如何将 SQL 个 Case 语句转换为 SSIS 表达式语言?
How to convert SQL Case statement to SSIS Expression Language?
我有一个完全限定的文件名(带路径的文件名)进入 SSIS 加载阶段 table。档案名称如
C:\SSIS\scripts\work\input\tom_22082017-093346-906838.csv
C:\SSIS\scripts\work\input\jim_22082017-093346-906838.csv
我只想从中提取文件名,并在 SSIS 派生列转换中使用案例逻辑生成一个新列。使用纯 SQL 我可以这样做:
SELECT CASE
WHEN SUBSTRING(UPPER(RIGHT(filename, CHARINDEX('\', REVERSE(filename)) - 1)), 1, 3) = 'TOM' THEN 'TOMMY'
WHEN SUBSTRING(UPPER(RIGHT(filename, CHARINDEX('\', REVERSE(filename)) - 1)), 1, 3) = 'JIM' THEN 'JIMMY'
END AS PERSON
FROM mystagingtable
如何在派生列转换中将此逻辑转换为 SSIS 表达式语言?
在 SSIS 表达式中,您可以使用嵌套的三元运算符。
{Condition} ? {Return value when true} : {Return value when false}
第一步:
使用 DerivedColumn 创建一个新列,其中包含来自文件名的 3char 名称(tom、jim 等)。您正在使用的 SQL 函数(substring、upper 等)在 SSIS 脚本编辑器中具有等效函数。
第 2 步:
使用另一个 DerivedColumn 生成一个新列,将上述列(tom、jim 等)转换为全名(tommy、jimmy)。使用三元运算符(参见下面的 Tab Alleman 回答)。
我有一个完全限定的文件名(带路径的文件名)进入 SSIS 加载阶段 table。档案名称如
C:\SSIS\scripts\work\input\tom_22082017-093346-906838.csv
C:\SSIS\scripts\work\input\jim_22082017-093346-906838.csv
我只想从中提取文件名,并在 SSIS 派生列转换中使用案例逻辑生成一个新列。使用纯 SQL 我可以这样做:
SELECT CASE
WHEN SUBSTRING(UPPER(RIGHT(filename, CHARINDEX('\', REVERSE(filename)) - 1)), 1, 3) = 'TOM' THEN 'TOMMY'
WHEN SUBSTRING(UPPER(RIGHT(filename, CHARINDEX('\', REVERSE(filename)) - 1)), 1, 3) = 'JIM' THEN 'JIMMY'
END AS PERSON
FROM mystagingtable
如何在派生列转换中将此逻辑转换为 SSIS 表达式语言?
在 SSIS 表达式中,您可以使用嵌套的三元运算符。
{Condition} ? {Return value when true} : {Return value when false}
第一步: 使用 DerivedColumn 创建一个新列,其中包含来自文件名的 3char 名称(tom、jim 等)。您正在使用的 SQL 函数(substring、upper 等)在 SSIS 脚本编辑器中具有等效函数。
第 2 步: 使用另一个 DerivedColumn 生成一个新列,将上述列(tom、jim 等)转换为全名(tommy、jimmy)。使用三元运算符(参见下面的 Tab Alleman 回答)。