SSIS 中的排序转换用于按升序或降序对源数据进行排序,这类似于 T-SQL 命令 ORDER BY 语句。
SSIS 中的排序转换使用 Sort Order 属性来指定优先级。
- 如果 Sort Order 值为正数,则排序转换按升序对数据进行排序。
- 如果 Sort Order 值为负数,SSIS 排序转换将按降序对数据进行排序。
某些转换,例如合并转换和合并联接转换,在使用它们之前需要对数据进行排序。在这些情况下,我们使用 SSIS 排序转换来对数据进行排序。
例如,如果“员工姓名”列的排序顺序为 1,“薪水”列的排序顺序为 2。排序转换将首先按员工姓名排序数据,然后按城市排序。
SSIS 排序转换示例
步骤 1:从工具箱将数据流任务拖放到控制流中,并将其重命名为 SSIS 中的排序转换。

双击它,它将打开数据流选项卡。有关更多转换>> 单击此处。
步骤 2:将 OLE DB 源、排序转换和 OLE DB 目标从工具箱拖放到数据流区域

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

我们在上面截图中使用的 SQL 命令是
SELECT [Color]
,[EnglishProductName]
,[ListPrice]
,[DealerPrice]
,[EnglishDescription]
,[StartDate]
,[EndDate]
FROM [AdventureWorksDW2014].[dbo].[DimProduct]
WHERE [DealerPrice] IS NOT NULL
步骤 4:单击列选项卡以验证列。在此选项卡中,我们还可以取消选中不需要的列。

单击确定,然后将蓝色箭头从 OLE DB 源拖到排序转换,以对源数据执行转换(排序)。
步骤 5:双击 SSIS 排序转换进行配置。
检查我们要排序的列,并且不要忘记“传递”其余的列。如果您忘记选择“传递”,它们将不会出现在输出列中。

为了理解 SSIS 中的排序转换,我们将一列按升序排序,另一列按降序排序。从上面可以看出,我们按颜色排序数据,然后按“英文产品名称”排序,因为我们是这样指定排序顺序的。
- 首先,按颜色升序对数据进行排序,然后
- 其次,按英文产品名称降序对数据进行排序。

从上面的截图,您可以看到 SSIS 中的排序转换还有一个重要的属性叫做比较标志。
- 忽略大小写:指定您是否要区分大写和小写字母。如果我们选中此选项,则 XYZ 和 xyz 相同。
- 忽略假名类型:指定您是否要区分日语:平假名和片假名字母。如果我们选中此选项,它将忽略假名类型。
- 忽略非间距字符:如果您不想区分普通字符和附加符号,请选中此选项。
- 忽略字符宽度:指定您是否要区分相同字符的单字节和双字节表示。如果我们选中此选项,SSIS 排序转换将忽略该差异。
- 忽略符号:指定您是否要将普通字母和带符号的字母(如空格、货币符号、运算符等)视为相同。如果我们选中此选项,则 %xyz 和 xyz 相同。
- 将标点符号作为符号排序:如果我们选中此选项,所有标点符号(连字符和撇号除外)将排在实际字母之前。例如,SSIS 排序转换将 ? xyz 排在 x 之前。
删除具有重复排序值的行:如果选中此选项,则排序转换将删除重复的列。否则,此转换将复制所有列,包括重复行。
步骤 6:将蓝色箭头从排序转换拖到 OLE DB 目标。
现在,我们需要提供目标的服务器、数据库和表详细信息。因此,双击 OLE DB 目标并提供所需信息。

从上面的截图,我们选择了数据库中的 [SSIS 中的排序转换] 表
步骤 7:单击“映射”选项卡以检查源列是否与目标列精确映射。

单击确定以完成 SSIS 排序转换包的设计。让我们运行该包。

让我们打开 SQL Server Management Studio 并检查 Order by 结果

评论已关闭。