首页 | 新闻 | 交流 | 问吧 | 文档 | 手册 | 下载 | 博客

SQL Server BI Step by step 4-1 合并数据 Merge和Merge Join组件

作者:  时间: 2011-05-30

 

合并数据1   Merge和Merge Join组件

引入本章的目的:前几章我们已经实现了把Excel中的数据导入到数据库中,实现了不重复数据的插入,也就是都只插入数据库中不存在的数据.那么如果数据流源Excel中的数据和数据库中的数据的主键相同的情况下,再进行插入操作就会出现异常,怎么才能实现自动的更新操作呢?也就是自动的判断数据源的数据,如果数据库中存在就执行更新,不存在就执行插入呢?
可能叫做合并数据会有些误解,这里的合并数据与运用Merge组件和Merge Join组件直接实现的效果是有差别的,首先我们看看这两个组件.

 

Merge组件 配置
1. 新建一个包,命名为MergeData.
2. 在控制流中从工具箱拖一个数据流任务。编辑进入数据流,拖二个Excel源,编辑Excel源,选择Product.xls文件。
3. 再分别拖二个Sort组件进行排序 
 


按照ProductNumber字段排序


 4. 再添加Merge进行数据合并。

 
5. 拖一个Audit组件。完成数据流配置后,分别添加三个数据查看器。 

 配置好的数据流图


6. 调试。查看运行效果。
 

 

可以看到,Merge数据仅仅合并了两个数据源的数据,包括重复数据。注意到Merge有以下特点:
    1.使用Merge转换之前必须对数据进行排序,可能通过如上面那样使用Sort转换,或者直接在源连接中指定ORDER BY直接完成. (需要试验)
    2.合并数据的两个路径之间的元数据必须相同. (需要试验)
    3.只能应用于两个数据的合并,如要两个以上,可考虑选择Union All转换(需要试验)

 

Merge Join 组件 配置
1. 再新建一个包,命名为MergeData2.
2. 拖两个OLE DB源,两个数据源分别连接到Product表和ProductInventory表.
3. 拖入两个Sort组件,分别按ProductID字段进行升序排序。Product是左侧输入。
 

Product排序


4. 拖一个Merge Join组件,设置连接类型为“左外部连接”(左连接,外部,内部连接和SQL一样),并选择需要输出传递到路径的列:
 


5. 添加三个数据查看器。完成所有配置
 
6. 运行

 

可以看到,Merge Join 组件的作用就是把两个表通过外键连接起来,并且通过合并时设置所需要输出列,显示合并表数据。它的作用相当于SQL中的INNER或者OUTER连接。
可以看到和SQL的连接一下, ,当然,如果两路输入位于同一个数据库中,你直接使用OLE DB数据级别的join操作会更快,但是当你希望合并两个不同的数据源时,Merge Join就可以派上用场了.(不是很明白?)

p.s :需要补习下,SQL中连接的知识