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. django 错误分类及解决办法汇总

    问题1:启动服务器后浏览器无法访问http://localhost:8000,访问被拒绝

  2. mysql concat

    CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式. 第一个参数是其它参数的分隔符.分隔符的位置放在要连接的两个字符串之间. 分隔符可以是一个字符 ...

  3. Java语言基本数据类型

    ■Java是一种强类型语言,每个变量都必须声明其类型.■Java的数据类型分为两大类:基本类型和引用类型(引用数据类型的大小统一为4个字节,记录的是其引用对象的地址).■Java中定义了3类8种基本数 ...

  4. .Net Core 使用EF Core方法

    新建项目后,使用NuGet安装包: Install-Package Microsoft.EntityFrameworkCore Install-Package Microsoft.EntityFram ...

  5. poj_3468 伸展树

    题目大意 一个数列,每次操作可以是将某区间数字都加上一个相同的整数,也可以是询问一个区间中所有数字的和.(这里区间指的是数列中连续的若干个数)对每次询问给出结果. 思路 1. 伸展树的一般规律 对于区 ...

  6. MQTT的学习研究(十四) MQTT moquette 的 Callback API 消息发布订阅的实现

    在moquette-mqtt中提供了回调callback模式的发布和订阅但是在订阅之后没有发现有消息接收的方法,参看moquette-mqtt中Block,Future式的发布订阅基础是callbac ...

  7. UVa 130 - Roman Roulette

    模拟约瑟夫环  Roman Roulette  The historian Flavius Josephus relates how, in the Romano-Jewish conflict  o ...

  8. SNMP信息泄露漏洞

    SNMP协议简介 名称:SNMP(Simple Network Management Protocol)简单网络管理协议 端口:161 协议:UDP 用途:SNMP代理者以变量呈现管理资料.管理系统透 ...

  9. WEB安全第四篇--与数据库的亲密接触:SQL注入攻击

    零.前言 最近做专心web安全有一段时间了,但是目测后面的活会有些复杂,涉及到更多的中间件.底层安全.漏洞研究与安全建设等越来越复杂的东东,所以在这里想写一个系列关于web安全基础以及一些讨巧的pay ...

  10. ios 图片拉伸不变形的方法

    如果一个椭圆图片,原图大小为30*30,而我们让它显示100*30,那么这个图片就会被拉伸,而且效果很难看.用下边的方法可以创建一个局部不被拉伸的图片. UIImage * buttonBg = [[ ...