首页 > 其他分享 >SSIS_数据流转换(Union All&合并联接&合并)

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

时间:2023-01-10 12:00:50浏览次数:54  
标签:多播 语文 Union 张三 合并 SSIS 李四 排序



Union All : 与sql语言 Union All 一样,不用排序,上下合并多个表。Union All转换替代合并转换:输入输出无需排序,合并超过两个表

合并联接 : 有左连接、内连接、完全连接,只能关联两个表,连接前先排序。

合并 : 与sql语言 Union 一样,合并前先排序,上下合并两个表


在数据库中创建一个表。并创建3个TXT文件,分别用于保存结果。

姓名 

课程

分数

张三

语文

90

张三

数学

83

李四

语文

74

李四

数学

84

李四

物理

94

SSIS_数据流转换(Union All&合并联接&合并)_数据排序


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

SSIS_数据流转换(Union All&合并联接&合并)_数据结构_02


说明:

数据源【OLE DB 源】取出的数据为:

姓名 

课程

分数

张三

语文

90

张三

数学

83

李四

语文

74

李四

数学

84

李四

物理

94

组件【多播】的功能是:将其输入分发到一个或多个输出,每个输出都与输入一样。

因此第一个多播名称【多播 张三李四】分发出去的内容与上表一样。

每个组件我都用数据表中的姓名(张三、李四)做名称,方便查看。


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

SSIS_数据流转换(Union All&合并联接&合并)_数据结构_03


其中,组件【多播 只有张三】的内容为:

姓名 

课程

分数

张三

语文

90

张三

数学

83


组件【多播 只有李四】的内容为:

姓名 

课程

分数

李四

语文

74

李四

数学

84

李四

物理

94


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

姓名

课程 

分数

张三

语文

90

张三

数学

83

李四

语文

74

李四

数学

84

李四

物理

94

张三

语文

90

张三

数学

83


B. 再看组件【合并联接】,是【排序_张三李四】和【排序_李四】两个表数据排序后合并连接。合并方式如图:

连接类型为:左外部连接。左边为【排序_张三李四】,为第一个输入。

条件为(相当于): ON A.名称=B.名称 AND A.课程=B.课程

输出名称重新定义。

SSIS_数据流转换(Union All&合并联接&合并)_数据_04


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

姓名左

课程左

分数左

姓名右

课程右

分数右

李四

语文

74

李四

语文

74

李四

数学

84

李四

数学

84

李四

物理

94

李四

物理

94

张三

语文

90

null

null

null

张三

数学

83

null

null

null


C. 最后为组件【合并】,合并是【合并联接】后与【多播 只有张三】排序后的合并。

第一输入为【排序_张三李四左连接】,因为其有多列(5行6列),以此数据结构为准。

第二输入为【排序_张三】(2行3列)

合并转换如图:

SSIS_数据流转换(Union All&合并联接&合并)_数据排序_05


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

姓名左

课程左

分数左

姓名右

课程右

分数右

李四

数学

84

李四

数学

84

李四

物理

94

李四

物理

94

李四

语文

74

李四

语文

74

张三

数学

83

null

null

null

张三

数学

83

null

null

null

张三

语文

90

null

null

null

张三

语文

90

null

null

null


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

SSIS_数据流转换(Union All&合并联接&合并)_数据结构_06

SSIS_数据流转换(Union All&合并联接&合并)_数据_07













标签:多播,语文,Union,张三,合并,SSIS,李四,排序
From: https://blog.51cto.com/hzc2012/6000185

相关文章

  • SSIS_数据流转换(查找)
    查找转换通过联接输入列中的数据和引用数据集中的列来执行查找。是完全匹配查找。本章功能:在源表中查找与字表能关联的所有源表记录。1.准备数据。源表tb_Main:字表tb_Sub:数......
  • Python 合并多张图片至一张图片
    PDF有多页,一次性转成JPG图片,JAVA报内存溢出,现改为,每一页存成一张图片,然后再将多张图片合成一张图片。安装库pip3installImage-ihttps://pypi.tuna.tsinghua.edu.......
  • VS2022 Visual Assist 小番茄 设置强调色透明度
    这个估计你们找不到位置小番茄的RGBA其实是RGB~A也就是不透明度所以正常要设定为FFRRGGBB即可字体透明但是正常不可设置懒得逆向VAX代码...建议everything直接搜A......
  • mysql 合并数据集union
    在mysql中,可以利用UNION操作符来合并查询结果,该操作符用于将两个以上的SELECT语句的查询结果合并到一起,然后去除掉相同的记录;语法“查询语句1union查询语句2union..........
  • 【优先队列】LeetCode 23. 合并K个升序链表
    题目链接23.合并K个升序链表思路把全部结点放入优先队列中,然后再依次组成新链表代码classSolution{publicListNodemergeKLists(ListNode[]lists){......
  • MySQL13 - UNION 合并结果集
    UNION合并查询结果集例子:查询工作岗位是MANAGER和SALESMAN的员工SELECTename,jobFROMempwherejob='manager'orjob='salesman';SELECTename,jobFROMe......
  • SSIS工具的ETL过程,全量ETL和增量ETL过程教程
    测试环境:SQLSERVER2012MicrosoftVisualStudio2012版本本教程为记录本人的学习关键部分,故如果看不懂可以联系博主,只讲关键ETL操作部分 1.全量ETL过程示例:(1)项目创建完......
  • IDE committ规范及要求——多次提交的committ通过rebase合并
    第一步:切换到待上库分支 第二步:点击Git-->rebase  第三步:选择需要上库的分支以及rebase参数,点击REBASE:  第四步:squash多次修改成一次,全选多次修改-->点......
  • C++实现有序表--链表的合并操作代码
    #include<iostream>#include<cstdlib>usingnamespacestd;#defineMAXSIZE100#defineOK1#defineERROR0typedefintElemtype;typedefintStatus;typedefstructLNo......
  • Unity 模型合并时纹理有缝隙的问题
    解决方式一:加载模型时,将纹理贴图的WrapMode设置为Clamp,FilterMode设置为Point解决方案二:模型合并时将UV往里缩几个像素,产生缝隙的原因是,纹理贴图做了线性插值这是Filter......