微软BI 之SSIS 系列 - Union All 的使用

浏览: 2644

开篇介绍

在前两篇中讲解到了 Merge 和 Merge Join 的操作,今天这篇文章讲解的是关于 Union All 的操作。

Union All 

首先在什么时候需要使用到 Union All?

与 Merge 和 Merge Join 不同,使用 Union All 的最显著的特点就是:

  • 两个或者两个以上的输入源。
  • 不需要排序,输出结果也不需要排序。

 

测试数据

-- Merge demo table
IF OBJECT_ID(\'T038_CUSTOMER\',\'U\') IS NOT NULL
DROP TABLE T038_CUSTOMER
GO

CREATE TABLE T038_CUSTOMER
(
CustomerID
INT PRIMARY KEY,
CustomerCompany
NVARCHAR(255),
CustomerName
NVARCHAR(20),
CustomerAddress
NVARCHAR(255)
)

INSERT INTO T038_CUSTOMER VALUES
(
1,\'HFBZG\',\'Allen,Michael\',\'Obere Str. 0123\'),
(
2,\'MLTDN\',\'Hassall, Mark\',\'Avda. de la Constitución 5678\'),
(
3,\'KBUDE\',\'Peoples, John\',\'Mataderos 1000\'),
(
6,\'HFBZG\',\'Allen,Michael\',\'Obere Str. 0123\')

SELECT * FROM T038_CUSTOMER

源文件 1的 ID 5 两条数据是相同的。

源文件 2 的第 1 条和源文件 1 的第 1 条是完全一样的。

下面要合并的是这三个数据源的数据,因此需要使用到 UNION ALL。

合并数据的时候也要求合并列的数据类型要一致,否则就会出现下列错误。

执行包可以看到各自合并之前的条数。

可以看到所有的数据都合并在一起往下输出了,保留了重复记录的同时,输出结果也未排序。

总结 Union All 的使用特点

  • 数据源可以由 2 个或者 2个以上的输入源组成。
  • 数据源可以是表,也可以是文件。
  • 合并列的数据类型要求相同。
  • 合并前不需要排序操作。
  • 合并后的输出也非已排序输出。
  • 保留重复数据,类似于 SQL Server 中的 Union All。

Merge,Merge Join 和 Union All 的异同

推荐 0
本文由 BIWORK 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册