码迷,mamicode.com
首页 > 其他好文 > 详细

《BI那点儿事》数据流转换——多播、Union All、合并、合并联接

时间:2014-10-29 14:30:35      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   io   color   ar   使用   sp   数据   

建立测试数据:

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

多播:将数据集分发到多个输出的转换。
Union All:合并多个数据集的转换。
合并:合并两个已排序数据集的转换。
合并联接:使用 FULL、LEFT 或 INNER 联接将两个数据集联接起来的转换。
在项目中创建一个【数据流任务】,数据流如下:
bubuko.com,布布扣

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

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

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

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

最后为组件【合并】,合并是【合并联接】后与【多播 只有张三】排序后的合并。
第一输入为【排序_张三李四左连接】,因为其有多列(5行6列),以此数据结构为准。
第二输入为【排序_张三】(2行3列)
合并转换如图:
bubuko.com,布布扣
可以看出,【排序_张三】列数不够,所以与上表合并时<忽略>,即无任何值。Union是排序合并,理论结果为:
bubuko.com,布布扣
至此,设计完成,现在编译!可看到数据流传递的行数。结果如图:
bubuko.com,布布扣



《BI那点儿事》数据流转换——多播、Union All、合并、合并联接

标签:style   blog   http   io   color   ar   使用   sp   数据   

原文地址:http://www.cnblogs.com/Bobby0322/p/4059270.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!