(转)SSIS_数据流转换(Union All&合并联接&合并)
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&合并联接&合并)的更多相关文章
- 《BI那点儿事》数据流转换——多播、Union All、合并、合并联接
建立测试数据: CREATE TABLE FactResults ( Name ) , Course ) , Score INT ) INSERT INTO FactResults ( Name , ...
- Linux xargs将输出数据流转换成命令参数
200 ? "200px" : this.width)!important;} --> 介绍 我们可以利用管道将一个命令的“标准输出”作为另一个命令的“标准输入”:但是这里的 ...
- C# 合并DLL, 合并DLL进入EXE
原文:C# 合并DLL, 合并DLL进入EXE 使用方法非常简单 在项目属性窗口中,选择"生成事件",在"生成后事件命令行"下的文本框中输入 ilmerge / ...
- 启发式合并&线段树合并/分裂&treap合并&splay合并
启发式合并 有\(n\)个集合,每次让你合并两个集合,或询问一个集合中是否存在某个元素. 我们可以用平衡树/set维护集合. 对于合并两个\(A,B\),如果\(|A|<|B|\),那么 ...
- 关于table动态添加数据 单元格合并 数组合并
var newArr = [ {"BranchID":1,"BranchName":"城二","BranchFullName&qu ...
- 线段树合并&&启发式合并笔记
这俩东西听起来很高端,实际上很好写,应用也很多~ 线段树合并 线段树合并,顾名思义,就是建立一棵新的线段树保存原有的两颗线段树的信息. 考虑如何合并,对于一个结点,如果两颗线段树都有此位置的结点,则直 ...
- 《BI那点儿事》数据流转换——模糊查找转换
BI项目中经常会有一些提取,转换,数据处理(ELT)的工作,其中最主要的是处理过赃数据.假设在项目中我们向数据库中注入了测试数据,但是通过一个外键从另外一个表中载入数据的时候没有对应的数据,那么这一行 ...
- 《BI那点儿事》数据流转换——查找转换
查找转换通过联接输入列中的数据和引用数据集中的列来执行查找.是完全匹配查找.在源表中查找与字表能关联的所有源表记录.准备数据.源表 T_QualMoisture_Middle_Detail字典表 T_ ...
- 《BI那点儿事》数据流转换——字词查找转换
字词查找转换将从转换输入列的文本中提取的字词与引用表中的字词进行匹配,然后计算出查找表中的字词在输入数据集中出现的次数,并将计数与引用表中的此字词一并写入转换输出的列中.此转换对于创建基于输入文本并带 ...
随机推荐
- Linux环境PHP5.5以上连接SqlServer2008
linux版本:64位CentOS 6.4 Nginx版本:nginx1.8.0 php版本:php5.5.28 Sqlserver版本:2008 FreeTDS版本:0.95 关于Linux环境安装 ...
- 【RF库Collections测试】Get From Dictionary
Name:Get From DictionarySource:Collections <test library>Arguments:[ dictionary | key ]Returns ...
- Linux echo 命令
echo命令用于输出指定的字符串,常见用法如下: [root@localhost ~]$ echo # 输出一个空白行[root@localhost ~]$ echo "hello worl ...
- php学习十:继承
在php中,我们常常会定义许多类,当多个类里面的方法或者属性出现重复的时候,会常常造成代码重复和冗杂的弊端,这个时候,我们可以用到继承(extends) 继承的特性: * 1.子类可以扩充属性* 2. ...
- Runtime 应用(一)拦截系统自带的方法交换实现
动态的交换方法能够给项目中大量已经使用的方法 进行拦截增加操作 实践:利用运行时交换系统的ImageNamed:方法 应用背景 当系统需要适配ios7和ios8时可能会有显示不同图片的需求,但在老项目 ...
- 【转载】为ASP.NET MVC及WebApi添加路由优先级
路由方面的: 转载地址:http://www.jb51.net/article/73417.htm Author:lijiao 这是一个对Asp.Net Mvc的一个很小的功能拓展,小项目可能不太需要 ...
- MQTT-SN协议乱翻之消息格式
前言 紧接着上篇初步介绍,本文为第二篇,主要梳理MQTT-SN 1.2协议中定义的消息格式. 通用消息格式 消息头 其它可变部分 2/4字节表示 N字节组成 消息头部 长度 消息类型 1或3个字节 1 ...
- 图的建立(邻接矩阵)+深度优先遍历+广度优先遍历+Prim算法构造最小生成树(Java语言描述)
主要参考资料:数据结构(C语言版)严蔚敏 ,http://blog.chinaunix.net/uid-25324849-id-2182922.html 代码测试通过. package 图的建 ...
- struts2的s:iterator 标签 详解<转>
struts2的s:iterator 可以遍历 数据栈里面的任何数组,集合等等 以下几个简单的demo: s:iterator 标签有3个属性: value:被迭代的集合 id : ...
- select标签的onchange事件
/** @1.onchange事件 ==> select选择事件* @2.obj.options ==> 选择option集合* @3.obj.selectedIndex ==> 选 ...