微软BI 之SSIS 系列 - MultiCast 多播输出到多个目标文件

浏览: 5066

开篇介绍

MultiCast 多播转换可以将一个输入转换成一个或者多个向下的输出,但是它没有错误输出。简单总结,即一个输入多个输出无错误输出。

它主要用在的场景就是需要将一个输入流中的数据创建成不同的逻辑数据副本,对不同的多个目标表文件的时候,不同的文件或者目标表可以选择数据源中的不同列输出。比如有一个 Excel 数据源表,需要将 Excel 数据源中的 A,B,C 三列的数据输出到 STAGING A 表中;同时,需要将此数据源中的 A, E, F 列同时输出到另外一个文本文件中。如果按照以前的做法,可能会使用到两个 Data Flow Task 数据流任务,然后分别配置成 Excel -> 表 STAGING A , Excel -> .txt 文件。那么如果了解 MultiCast 控件的用法,就可以不需要这么处理了。

案例演示

这个案例使用一个平面文件作为数据源。

需求就是将这个平面文件输出到两个不同的目标表 - 

一个是 T30_STAGING_INTERNET_SALES,这张表只有 6 列。

另一个就是将这个平面文件中 SalesAmount > 1000 的输出到另外一个表、或者文件,这里的示例使用一张表 T030_STAGING_1000_SALESAMOUNT。表的结构和文件内容是一致的,这样演示起来要方便一些。

在完成平面数据源的配置之后,直接拖放一个 MultiCast 多播控件即可,可以注意到上图中,它是有一个输入和多个输出的。

在左侧的 OLD_DST_STAGING_INTERNET_SALES 源和目标关系配置中,由于目标只需要几列,因此配置中只匹配需要的列即可。

右侧 Conditional Split 控件中,只处理 SalesAmount > 1000 的数据,目标表只和 1000_SALESAMOUNT 输出源关联。

最后的输出可以看到两个目标最终接受数据的结果。

MultiCast 和 Conditional Split 的区别

在形状上,两者感觉差不多, 并且相同的地方都是有一个输入,一个或者多个输出。

但是不同的是:

  • MultiCast 可以将每一行定向到每一个输出,即往下输出的内容是一致的,副本数据的拷贝 ; Conditional Split 则是将一行只定位到一个输出,按条件走。
  • MultiCast 无法写表达式,也无法和系统变量,用户自定义变量交互;Conditional Split 则可以使用表达式访问变量,列,函数等。
  • MultiCast 不支持错误输出处理;Conditional Split 支持错误输出处理。
推荐 0
本文由 BIWORK 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册