Union All : 与sql语言 Union All 一样,不用排序,上下合并多个表。Union All转换替代合并转换:输入输出无需排序,合并超过两个表

合并联接 : 有左连接、内连接、完全连接,只能关联两个表,连接前先排序。

合并 : 与sql语言 Union 一样,合并前先排序,上下合并两个表

在数据库中创建一个表。并创建3个TXT文件,分别用于保存结果。

姓名  课程 分数
张三 语文 90
张三 数学 83
李四 语文 74
李四 数学 84
李四 物理 94

在项目中创建一个【数据流任务】,数据流如下

说明:

数据源【OLE DB 源】取出的数据为:

姓名  课程 分数
张三 语文 90
张三 数学 83
李四 语文 74
李四 数学 84
李四 物理 94

组件【多播】的功能是:将其输入分发到一个或多个输出,每个输出都与输入一样。

因此第一个多播名称【多播 张三李四】分发出去的内容与上表一样。

每个组件我都用数据表中的姓名(张三、李四)做名称,方便查看。

组件【条件性拆分】设置如下,姓名等于“张三” 的和 姓名不等于“张三” 的分别输出到两个多播中。

其中,组件【多播 只有张三】的内容为:

姓名  课程 分数
张三 语文 90
张三 数学 83

组件【多播 只有李四】的内容为:

姓名  课程 分数
李四 语文 74
李四 数学 84
李四 物理 94

A . 接下来,先看组件【Union All】,是【多播 张三李四】和【多播 只有张三】两个数据的内容上下合并,理论结果

姓名 课程  分数
张三 语文 90
张三 数学 83
李四 语文 74
李四 数学 84
李四 物理 94
张三 语文 90
张三 数学 83

B. 再看组件【合并联接】,是【排序_张三李四】和【排序_李四】两个表数据排序后合并连接。合并方式如图:

连接类型为:左外部连接。左边为【排序_张三李四】,为第一个输入。

条件为(相当于): ON A.名称=B.名称 AND A.课程=B.课程

输出名称重新定义。

输出理论结果为:(排序是按组件【排序_张三李四】的排序结果)

姓名左 课程左 分数左 姓名右 课程右 分数右
李四 语文 74 李四 语文 74
李四 数学 84 李四 数学 84
李四 物理 94 李四 物理 94
张三 语文 90 null null null
张三 数学 83 null null null

C. 最后为组件【合并】,合并是【合并联接】后与【多播 只有张三】排序后的合并。

第一输入为【排序_张三李四左连接】,因为其有多列(5行6列),以此数据结构为准。

第二输入为【排序_张三】(2行3列)

合并转换如图:

可以看出,【排序_张三】列数不够,所以与上表合并时<忽略>,即无任何值。union是排序合并,理论结果为:

姓名左 课程左 分数左 姓名右 课程右 分数右
李四 数学 84 李四 数学 84
李四 物理 94 李四 物理 94
李四 语文 74 李四 语文 74
张三 数学 83 null null null
张三 数学 83 null null null
张三 语文 90 null null null
张三 语文 90 null null null

至此,设计完成,现在编译!可看到数据流传递的行数。结果如图:

转: http://blog.csdn.net/kk185800961/article/details/12378981

(转)SSIS_数据流转换(Union All&合并联接&合并)的更多相关文章

  1. 《BI那点儿事》数据流转换——多播、Union All、合并、合并联接

    建立测试数据: CREATE TABLE FactResults ( Name ) , Course ) , Score INT ) INSERT INTO FactResults ( Name , ...

  2. Linux xargs将输出数据流转换成命令参数

    200 ? "200px" : this.width)!important;} --> 介绍 我们可以利用管道将一个命令的“标准输出”作为另一个命令的“标准输入”:但是这里的 ...

  3. C# 合并DLL, 合并DLL进入EXE

    原文:C# 合并DLL, 合并DLL进入EXE 使用方法非常简单 在项目属性窗口中,选择"生成事件",在"生成后事件命令行"下的文本框中输入 ilmerge / ...

  4. 启发式合并&线段树合并/分裂&treap合并&splay合并

    启发式合并 有\(n\)个集合,每次让你合并两个集合,或询问一个集合中是否存在某个元素. ​ 我们可以用平衡树/set维护集合. ​ 对于合并两个\(A,B\),如果\(|A|<|B|\),那么 ...

  5. 关于table动态添加数据 单元格合并 数组合并

    var newArr = [ {"BranchID":1,"BranchName":"城二","BranchFullName&qu ...

  6. 线段树合并&&启发式合并笔记

    这俩东西听起来很高端,实际上很好写,应用也很多~ 线段树合并 线段树合并,顾名思义,就是建立一棵新的线段树保存原有的两颗线段树的信息. 考虑如何合并,对于一个结点,如果两颗线段树都有此位置的结点,则直 ...

  7. 《BI那点儿事》数据流转换——模糊查找转换

    BI项目中经常会有一些提取,转换,数据处理(ELT)的工作,其中最主要的是处理过赃数据.假设在项目中我们向数据库中注入了测试数据,但是通过一个外键从另外一个表中载入数据的时候没有对应的数据,那么这一行 ...

  8. 《BI那点儿事》数据流转换——查找转换

    查找转换通过联接输入列中的数据和引用数据集中的列来执行查找.是完全匹配查找.在源表中查找与字表能关联的所有源表记录.准备数据.源表 T_QualMoisture_Middle_Detail字典表 T_ ...

  9. 《BI那点儿事》数据流转换——字词查找转换

    字词查找转换将从转换输入列的文本中提取的字词与引用表中的字词进行匹配,然后计算出查找表中的字词在输入数据集中出现的次数,并将计数与引用表中的此字词一并写入转换输出的列中.此转换对于创建基于输入文本并带 ...

随机推荐

  1. Python 常见文件操作的函数示例(转)

    转自:http://www.cnblogs.com/txw1958/archive/2012/03/08/2385540.html # -*-coding:utf8 -*- ''''' Python常 ...

  2. vue 组件库

    iView https://www.iviewui.com/ Radon UI https://luojilab.github.io/radon-ui/#!/ Element http://eleme ...

  3. ZooKeeper(七)-- ZK原生API实现分布式锁

    一.使用场景 在分布式应用,往往存在多个进程提供同一服务.这些进程有可能在相同的机器上,也有可能分布在不同的机器上. 如果这些进程共享了一些资源,可能就需要分布式锁来锁定对这些资源的访问. 二.实现分 ...

  4. mysq对存在null值的字段排序

    1.建立学生表,建表sql如下: ),age int); 2.插入几条数据,包括id字段值为null的 ,),(,),(,),(),(); 3.我们查询下,可以看到存在id字段为空的值: 4.对学生表 ...

  5. VS添加命令行参数main(int argc, char** argv)

  6. Jquery checkbox选中问题

    checkbox中有.checked的写法,判断当前是否是选中状态,不过这种是针对[object HTMLInputElement]这种类型的,而对于[object Object]这种类型是不能使用的 ...

  7. spring aop 样例

    基于注解的AOP 方式 1.加入jar包 com.springsource.org.aopalliance-1.0.0.jar com.springsource.org.aspectj.weaver- ...

  8. 【Java nio】java nio笔记

    缓冲区操作:缓冲区,以及缓冲区如何工作,是所有I/O的基础.所谓“输入/输出”讲的无非就是把数据移出货移进缓冲区.进程执行I/O操作,归纳起来也就是向操作系统发出请求,让它要么把缓冲区里的数据排干,要 ...

  9. LeetCode——House Robber

    Description: You are a professional robber planning to rob houses along a street. Each house has a c ...

  10. Chrome浏览器下CSS字体大小设置小于12px无效问题

    当字体大小被设置小于12px时,IE.firefox可以起作用.但chrome中仍然显示为12px大小. 解决方法为: html, body {     -webkit-text-size-adjus ...