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. nagios监控mysql

    在nagios上部署check_mysql_health 监控mysql 博客分类: 架构   本监控为基于nagios服务器主动监控方法,利用check_mysql_health实现多种监控模式:  ...

  2. nohub和重定向文件

    1.如果使用远程连接的Linux的方式并想后台运行执行如下命令: 格式:nohup <程序名> & 比如:nohup /usr/local/collection/bin/start ...

  3. Python 流程控制:for

    for 循环用于对一个序列进行遍历,用法如下: In [4]: for i in 'abcd': ...: print(i) ...: a b c d In [13]: for i in range( ...

  4. docker nginx mysql

    docker run -p 9000:9000 --name myphp -v /docker/www/:/var/www/html/ -v /docker/php/php.ini:/usr/loca ...

  5. HTML实体大全

    HTML 4.01 支持 ISO 8859-1 (Latin-1) 字符集. ISO-8859-1 的较低部分(从 1 到 127 之间的代码)是最初的 7 比特 ASCII. ISO-8859-1 ...

  6. 如何使用vue的axios结合PHP去上传文件

    我们在做表单提交的时候,往往会碰到一些表单提交的需求,那vue的axios与上传文件碰撞后不会出现什么不一样的火花吗,听我一一道来: 首先,我们需要对写一个vue的axios的表单提交,由于本人用的是 ...

  7. 点击一个textView里的link导航至程序内可返回的自定义webView

    1,在AppDelegate.h里定义一个 id currentViewController; 在AppDelegate.m里 @implementation UIApplication (Priva ...

  8. 在 CSS 中使用特征查询

    原文地址:Using Feature Queries in CSS 原文作者:Jen Simmons 译文出自:掘金翻译计划 本文永久链接:github.com/xitu/gold-m… 译者:Che ...

  9. Docker源码分析(九):Docker镜像

    1.前言 回首过去的2014年,大家可以看到Docker在全球刮起了一阵又一阵的“容器风”,工业界对Docker的探索与实践更是一波高过一波.在如今的2015年以及未来,Docker似乎并不会像其他昙 ...

  10. 谈谈后台服务的RPC和路由管理

    版权声明:本文由廖念波原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/147 来源:腾云阁 https://www.qclo ...