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. Mac下,如何把项目托管到Github上(Github Desktop的使用)

    在上一篇中,详细讲解了使用X-code和终端配合上传代码的方法,这种方法比较传统,中间会有坑,英文看起来也费劲,不过Github官方提供了一个Mac版的客户端,如下图:

  2. Access数据操作-02

    数据库连接 MDB文件 :Provider=Microsoft.Jet.OLEDB.4.0;Data Source=*.mdb ;Persist Security Info=False; AccDB文 ...

  3. Linux wc 命令

    wc命令可以用来统计文件的行数 .单词数 .字符数,用法如下: [root@localhost ~]$ wc 1.txt # 统计文件的行数.单词数.字符数 2 4 24 1.txt [root@lo ...

  4. Keil MDK从未有过的详细使用讲解(转)

    这博主关于MDK 的使用的文章,写的得TM的好  TM的实用! 真心收藏! 熟悉Keil C 51的朋友对于Keil MDK上手应该比较容易,毕竟界面是很像的.但ARM内核毕竟不同于51内核,因此无论 ...

  5. 使用reduce的方法实现对象数组去重

    在开发中和面试当中,数组去重问题往往是受宠儿,那用最短的代码解决这个问题会使效率得到更大的提升.普通的数组,我们可以通过filter过滤方法进行去重,详情见本人博客:http://www.cnblog ...

  6. Runtime 运行时之一:消息转发

    解释一 上一篇文章咱们提到了Runtime的消息传递机制,主要围绕三个C语言API来展开进行的.这篇文章我将从另外三个方法来描述Runtime中另一个特性:消息转发机制. 一.消息转发机制 当向某个对 ...

  7. Docker源码分析(八):Docker Container网络(下)

    1.Docker Client配置容器网络模式 Docker目前支持4种网络模式,分别是bridge.host.container.none,Docker开发者可以根据自己的需求来确定最适合自己应用场 ...

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

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

  9. sql语句查询条件的不同表达方式对查询性能的影响

    今天操作数据库遇到一个问题 目标表RA_AD_DAILY_DATA的数据量大概有5千万左右,其中的BUSINESS_DATE字段为日期类型 我要查询8月20号导入的三条记录,刚开始用这种方式去查: S ...

  10. 【转载】国外程序员整理的Java资源大全

    以下转载自: 推荐!国外程序员整理的Java资源大全中文版    https://github.com/akullpp/awesome-java英文版 Java 几乎是许多程序员们的入门语言,并且也是 ...