SSIS 中的派生列转换在处理 SQL Server Integration Services 中的表达式方面起着至关重要的作用。表达式语言具有强大的内置函数,可用于字符串操作、数据类型转换、数学函数、条件表达式和处理 Null 值。
使用 SSIS 派生列转换,我们可以利用这些内置函数、列、运算符和变量来创建所需的表达式。派生列转换还提供了一个选项,供您选择是要创建新列,还是用表达式计算出的值替换现有列。
SSIS 中的派生列转换示例
从工具箱将数据流任务拖放到控制流中,并将其重命名为“派生列转换”。

双击它,它将打开数据流选项卡。有关更多转换 >> 点击此处。
将 OLE DB 源、ADO.NET 目标和派生列转换从 SSIS 工具箱拖放到数据流区域。

双击数据流区域中的 OLE DB 源,将打开连接管理器设置,并提供编写语句的空间。

我们在上面的屏幕截图中使用的 SQL 命令是
USE [AdventureWorksDW2014]
GO
SELECT FirstName,
LastName,
YearlyIncome
FROM DimCustomer
点击“列”选项卡以验证字段。在此选项卡中,我们还可以取消勾选不需要的列。

提示:如果我们不需要任何列,那么添加它到 SQL 命令就没有意义。
点击“确定”,然后将蓝色箭头从 OLE DB 源拖到 SSIS 中的派生列转换。它允许转换使用源数据。
表达式
双击或右键单击派生列转换进行编辑

- 派生列名称:提供任何唯一的名称。与 T-SQL 中的别名列相同。
- 派生列:此派生列提供两个选项。是添加为新的,还是用此列替换任何现有列。
- 表达式:在此处,我们将通过组合内置函数、变量和列来编写自定义表达式。
- 精度:当我们添加任何新字段时,派生列转换会根据数据类型自动设置数值数据的精度。此值是只读的。
- 小数位数:当我们添加任何新字段时,派生列转换会根据数据类型自动设置数值数据的小数位数。此值是只读的。
- 代码页:添加新列时,它会自动为 DT_STR 数据类型设置代码页。
- 配置错误输出:指定如何处理错误。

- 姓氏大写:UPPER(FirstName)- 它将 [FirstName] 列中的数据转换为大写。
- 全名:FirstName +“ ”+ LastName – 它将组合 [FirstName] 和 [LastName] 列以显示全名。
- 税款:SQRT([YearlyIncome])- 它将计算 [YearlyIncome] 列的平方根并将其分配给 Tax 列。
- 变动薪资:5000 – 我们将常量值 5000 分配给新列 Variable pay。
- 年收入:REPLACENULL([YearlyIncome],0)- 我们使用 REPLACENULL 内置函数将 Null 值替换为零。
点击“确定”完成 SSIS 中派生列转换的配置。接下来,将蓝色箭头拖到 ADO.NET 目标。
现在,我们需要提供目标的服务器、数据库和表详细信息。因此,双击 ADO.NET 目标并提供所需信息。

单击“映射”选项卡以检查源列是否已正确映射到目标列。

点击“确定”完成 SSIS 派生列转换包的设计。让我们运行该包。

让我们打开 Management Studio 并检查派生列转换的结果。
