一、排序转换(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.在合并转换与行计数转换中间的连接创建一个数据查看器。然后执行包。结果如下:

 

在弹出框中可以看到我们合并的部分数据。可以持续单击绿色三角按钮来查看合并的数据,想让包执行完毕,可以关闭弹出框即可

posted on 2012-07-17 10:16  guddujianxiao  阅读(5667)  评论(0编辑  收藏  举报