建立测试数据:

CREATE TABLE FactResults
(
Name VARCHAR(50) ,
Course VARCHAR(50) ,
Score INT
) INSERT INTO FactResults
( Name ,
Course ,
Score
)
SELECT '张三' ,
'语文' ,
90
UNION ALL
SELECT '张三' ,
'数学' ,
83
UNION ALL
SELECT '李四' ,
'语文' ,
74
UNION ALL
SELECT '李四' ,
'数学' ,
84
UNION ALL
SELECT '李四' ,
'物理' ,
94 SELECT *
FROM FactResults

多播:将数据集分发到多个输出的转换。

如同它的名字一样多点传送可以将一个路径中的数据输出到多个路径,你可能会使用这种转换将数据输出到多个路径中。编辑这种task,将它和输入源连接,然后将它和多个Destination连接,除了task的名字之外,它没有特别的编辑选项。
注意:多点传送类似于Split 转换,不同的是多点传送把所有的行都输出,Split将有条件地输出部分行。

Union All:合并多个数据集的转换。

联合所有task的功能和合并正好相反,它将多个数据源中的合并成一个结果集。例如,将两个XML数据源中的数据合并成一个输出然后将数据送入到关键词抽取任务中。
编辑这种转换,首先将第一个数据源连接到task然后将其他数据源连接到这个task。打开编辑界面,保证列被正确映射,DDIS将会自动适应是否正确映射。例如,一个输入字符是20个字符,另一个是50,出书将会是一个多于50个字符的列。

合并:合并两个已排序数据集的转换。

合并转换可以将两个路径中的输入数据合并成一个输出。这种转换类似于Union All转换,它有一些限制:

  • 合并之前数据必须排序,可以在此之前使用排序转换或者在数据源中使用ORDER BY语句
  • 合并的元数据类型必须相同,例如CustomerID不能在一个路径中是数字型的但是在另一个路径中是字符类型的
  • 如果有多于两个路径,需要选择Union All转换

编辑这种task,确保在两个路径中的数据时一致的,选择列的时候会弹出对话框提示数据合并到路径1还是路径2,如果选择合并到路径1,然后连接路径2。这样选择之后最终将会从一个路径映射到另一个路径,有些路径的数据也可以忽略。

合并联接:使用 FULL、LEFT 或 INNER 联接将两个数据集联接起来的转换。

SSIS的一个目标就是使用任务,尽量保证不写任何代码,一个典型的例子就是连接合并。这种合并可以将两个输入进行内连接或者外连接然后选择性地输出。例如,在一个数据流中存储着包含EmployeeID的人力资源信息,在另一个数据流中存储着工资清单信息,可以对这两个路径进行连接,从人力资源信息中取得姓名,从工资清单信息中取得员工工资,然后从一个路径中输出。
注意:如果两个输入路径在同一个数据库,在OLE DB数据源中进行数据连接操作可能效率更高,如果在不同的数据库中可能效率后受到影响。这种连接合并在两个数据不是同一个数据库中或者不想编写代码时会很有用。

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

组件【多播】的功能是:将其输入分发到一个或多个输出,每个输出都与输入一样。
因此第一个多播名称【多播 张三李四】分发出去的内容与上表一样。
每个组件我都用数据表中的姓名(张三、李四)做名称,方便查看。

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

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

再看组件【合并联接】,是【排序_张三李四】和【排序_李四】两个表数据排序后合并连接。合并方式如图:
连接类型为:左外部连接。左边为【排序_张三李四】,为第一个输入。
条件为(相当于): ON A.Name=B.Name AND A.Course=B.Course
输出名称重新定义。

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

最后为组件【合并】,合并是【合并联接】后与【多播 只有张三】排序后的合并。
第一输入为【排序_张三李四左连接】,因为其有多列(5行6列),以此数据结构为准。
第二输入为【排序_张三】(2行3列)
合并转换如图:

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

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

《BI那点儿事》数据流转换——多播、Union All、合并、合并联接的更多相关文章

  1. (转)SSIS_数据流转换(Union All&合并联接&合并)

    Union All : 与sql语言 Union All 一样,不用排序,上下合并多个表.Union All转换替代合并转换:输入输出无需排序,合并超过两个表 合并联接 : 有左连接.内连接.完全连接 ...

  2. 《BI那点儿事—数据的艺术》目录索引

    原创·<BI那点儿事—数据的艺术>教程免费发布 各位园友,大家好,我是Bobby,在学习BI和开发的项目的过程中有一些感悟和想法,整理和编写了一些学习资料,本来只是内部学习使用,但为了方便 ...

  3. 微软BI 之SSIS 系列 - Merge, Merge Join, Union All 合并组件的使用以及Sort 排序组件同步异步的问题

    开篇介绍 SSIS Data Flow 中有几个组件可以实现不同数据源的数据合并功能,比如 Merger, Merge Join 和 Union All.它们的功能比较类似,同时也比较容易混淆,下面是 ...

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

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

  5. UNION操作用于合并两个或多个 SELECT 语句的结果集。

    UNION操作用于合并两个或多个 SELECT 语句的结果集. 大理石平台价格 使用示例: $Model->field('name') ->table('think_user_0') -& ...

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

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

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

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

  8. 《BI那点儿事》数据流转换——字符映射表

    特征映射转换如图展示数据流中列的特征,它的编辑界面很简单,只有一个标签界面,点击要进行映射的列,可以选择需要添加新列或需要更新的列.可以在Output Alias列中给原来的列一个别名,选择要进行的操 ...

  9. 《BI那点儿事》数据流转换——排序

    排序转换允许对数据流中的数据按照某一列进行排序.这是五个常用的转换之一.连接数据源打开编辑界面,编辑这种任务.不想设置为排序列的字段不要选中,默认情况下所有列都会选中.如图所示,按照TotalSuga ...

随机推荐

  1. HDU 2222 Keywords Search(AC自动机模版题)

    Keywords Search Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others ...

  2. Objective-C基础语法快速入门

    Objective-C基础语法快速入门 2010-11-04 16:32 折酷吧 zheku8 字号:T | T 假如我们对面向对象的思维已经C语言都很熟悉的话,对于我们学习Objective-C将会 ...

  3. c#组元(Tuple)的使用

    组元(Tuple)是C# 4.0引入的一个新特性,可以在.NET Framework 4.0或更高版本中使用.组元使用泛型来简化类的定义,多用于方法的返回值.在函数需要返回多个类型的时候,就不必使用o ...

  4. android 一个简单的服务例子

    public class MessageService extends Service { // 获取消息线程 private MessageThread messageThread = null; ...

  5. PHP多台服务器跨域SESSION共享

    网站业务规模和访问量的逐步发展,原本由单台服务器.单个域名的迷你网站架构已经无法满足发展需要. 此时我们可能会购买更多服务器,并且启用多个二级子域名以频道化的方式,根据业务功能将网站分布部署在独立的服 ...

  6. jquery实现nav的下拉

    <script type="text/javascript"> $(function(){ //tab_flag 根据此标记判断是否由父级nav指向了nav_list ...

  7. MVC下载文件方式

    MVC下载文件方式 http://www.cnblogs.com/liang--liang/archive/2012/10/20/2732745.html 方式一: public FileStream ...

  8. jQuery 中 attr() 和 prop() 方法的区别

    前几天,有人给 Multiple Select 插件 提了问题: setSelects doesn't work in Firefox when using jquery 1.9.0 一直都在用 jQ ...

  9. Windwos服务器远程桌面不能复制粘贴的解决方法

    今天使用远程桌面连接登陆服务器,发现不能在本地电脑和远程服务器之间复制粘贴文件了,复制粘贴文本也不行. 网上搜了一下,主要有两种情况: 1.复制粘贴功能原本可以用,突然失灵了2.从头到尾都无法使用这个 ...

  10. WWDC 2013 Session笔记 - iOS7中的多任务

    这是我的WWDC2013系列笔记中的一篇,完整的笔记列表请参看这篇总览.本文仅作为个人记录使用,也欢迎在许可协议范围内转载或使用,但是还烦请保留原文链接,谢谢您的理解合作.如果您觉得本站对您能有帮助, ...