一、排序转换(Sort)
排序转换功能是按升序或降序对输入流中的数据进行排序.并将排序后的数据复制到转换输出中.它类似于T-SQL中的order by 语句。下面以数据库AdventureWorks为例来介绍一下排序转换的使用。
1.新建名为”SortDemo”的包,在控制流中拖放一个数据流任务,然后在连接管理器中建立一个OLE DB连接器,用于连接AdventureWorks数据库。
2.在BIDS界面左边的变量工具箱中设置一个变量Count 类型是Int32。
3.在数据流选项卡中拖放一个OLE DB数据源,连接AdventureWorks,选择Production.product.如图:
4.拖放一个排序转换任务。按如下图设置:
下面详细介绍一下该图中各个属性的使用方法:
属性 |
说明 |
可用输入列 |
使用此复选框可以指定要排序的列 |
名称 |
可用输入列的名称 |
传递 |
指示是否在排序输出中包含该列 |
输入列 |
选择需要排序的列,也可以通过可用输入列中选择 |
输出别名 |
为要排序的输入列设置一个输出别名,默认为输入列名称 |
排序类型 |
指示是按升序还是按降序排序 |
排序顺序 |
指示列的排序顺序。必须是手动设置此项,而且设置时按初始值为1的递增数据 |
上图中理解为先按Name降序,再按ProductName升序排序。
5.拖放一个行计数转换,将排序与之连接,箭头指向行计数转换。并设置
其中变量User::Count在变量工具箱中创建。
6.在排序转换与行计数转换中的绿色连线上建立一个带有Grid网格的查看器。然后执行包。如下图:
我们发现Name和ProductName列按我们在排序转换中的设置输出到数据管道中。
二、合并转换(Merge)
合并转换是将两个排序后的数据集合合并为一个数据集。根据每个数据集中的行的键列的值,将这些行插入到输出中。合并转换功能类似于T-sql语句中的Union All子句。
合并转换要求输入列具有匹配的源数据。在SSIS设计器中,合并转换的用户界面会自动映射映射具有元数据的列。然后你可以手动映射具有兼容数据类型的其他列。
下面我们以AdventureWorks数据库中的Production.Product表为例介绍如何使用合并转换。
1.创建一个名为“MergerDemo”的包,然后在控制流中拖放一个DataFlow任务,在连接管理器中创建一个OLE DB连接器,用于连接AdventureWorks数据库。
2.在BIDS中的变量工具箱中创建一个变量Count,类型为Int32。
3.在数据流中拖放两个OLE DB数据源。连接器连接AdventureWorks数据库,两个数据源的访问模式都选择sql命令。Sql语句分别为:
select top 5 * from Production.Product
select top 6 * from Production.Product
4.在数据流中拖放两个排序转换功能。分别对两个数据源数据的列ProductNumber按升序排序。
5.拖放一个合并转换,分别与两个排序转换连接。设置如下:
6.拖放一个行计数。与合并转换相连。设置VariableName=User::Count
7.在合并转换与行计数转换中间的连接创建一个数据查看器。然后执行包。结果如下:
8.在弹出框中可以看到我们合并的部分数据。可以持续单击绿色三角按钮来查看合并的数据。想让包执行完毕。可以关闭弹出框即可。
到此,合并转换功能的使用已介绍完毕。其中一些注意的事项我们将与合并联接转换一起介绍。
三、合并联接转换(Merge Join)
合并联接转换功能是将两个已排序的输入列的数据通过使用FULL JOIN、Left JOIN或INNERR JOIN联接形成一个输出数据集。它类似于T-SQL语句中的连接查询语句。但又与之有所区别。
-
使用合并联接要求输入已排序的数据。而T-SQL中的连接查询不需要
-
如果两个输入列关联的列是字符类型。则需要对它进行大小写转换或去除空格等操作。而在T-sql的连接查询中不需要。
了解这些信息后,下面介绍如何使用。
1.创建一个名为“MergeJoinDemo”包,在控制流中拖放一个Data Flow 任务。在连接管理器中添加一个OLE DB连接器。用于连接AdventureWorks数据库。
2.在变量工具箱中创建一个如下图的变量
3.在数据流选项卡中拖放两个OLE DB数据源。都连接刚才创建的名为“LocalHost.AdventureWorks”连接器。数据访问模式使用sql命令。Sql语句分别如下
select ProductID,ProductModelID,Name from Production.Product
select ProductModelID,Name from Production.ProductModel
4.拖放两个排序转换到数据流选项卡中,分别对两个数据源数据的列ProductModelID按升序排序。
5.拖放一个合并联接转换,分别与两个排序转换连接,然后双击合并联接转换,弹出窗口根据窗口设置合并联转换属性。
在图中有一个联接类型选项,它包含三种类型:左外部联接、内部联接和完全外部联接,分别等同于T—SQL中的LEFT JOIN、INNER JOIN和FULL JOIN
6.拖放一个行计数。与合并联接转换相连。设置VariableName=User::Count
7.在合并转换与行计数转换中间的连接创建一个数据查看器。然后执行包。结果如下:
在弹出框中可以看到我们合并的部分数据。可以持续单击绿色三角按钮来查看合并的数据,想让包执行完毕,可以关闭弹出框即可