加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

如何使用 Multicast Task 将数据同时写入多个目标表

发布时间:2016-09-12 13:43:16 所属栏目:MsSql教程 来源:站长网
导读:开篇介绍 在 SSIS Data Flow 中有一个 Multicast 组件,它的作用和 Merge, Merge Join 或者 Union All 等合并数据流组件对比起来作用正好相反。非常直观,它可

运行下面的 SQL 语句创建相关测试表 -

USE BIWORK_SSIS
GO

IF OBJECT_ID('dbo.SalesOrderSource','U') IS NOT NULL
DROP TABLE dbo.SalesOrderSource
GO

SELECT *
INTO dbo.SalesOrderSource
FROM TSQL2012.Sales.Orders
WHERE orderdate < '2006-08-01'

SELECT * FROM dbo.SalesOrderSource

IF OBJECT_ID('dbo.OrderShipStaging','U') IS NOT NULL
DROP TABLE dbo.OrderShipStaging

IF OBJECT_ID('dbo.StagingAudit','U') IS NOT NULL
DROP TABLE dbo.StagingAudit

CREATE TABLE dbo.OrderShipStaging
(
    OrderID INT,
    OrderDate DATETIME,
    ShippedDate DATETIME,
    Shipperid INT,
    freight MONEY,
    shipname NVARCHAR(40),
    CreateDate DATETIME DEFAULT(GETDATE())
)

CREATE TABLE dbo.StagingAudit
(
    ProcessLogID INT PRIMARY KEY IDENTITY(1,1),
    TableName NVARCHAR(50),
    TrackColumnName NVARCHAR(50),
    TotalCount INT,
    LastLoadingDate DATETIME
)

SELECT * FROM dbo.StagingAudit
SELECT * FROM dbo.OrderShipStaging 

StagingAudit 表可以用来跟踪很多有 Fact 表特征的数据表加载信息,因为类似于 Dimension 信息一般在 Staging 阶段每次都是全部重新加载,数据量本身不大。但是对于有 Fact 事实特征的历史数据,每次都重新加载是非常浪费时间的,所以这些表都是要 Track 的。

StagingAudit 表中的 ProcessLogID 只是用来模拟一下 ProcessLog,实际开发当中还会用到其它的列信息,在这里就都省略了。包括每次加载的时候还有检查上一次加载是否成功,上一次加载的时间戳等检查逻辑在这里也省略掉。

把上一个例子中的 Data Flow Task 复制一份,然后删除掉 Multicast 下 Order Destination 的 Task,新添一个 Aggregate 组,OLE_DST_Ship 中的目标表现在换成 dbo.OrderShipStaging 并重新 Mapping 一下。

如何使用 Multicast Task 将数据同时写入多个目标表

这里取到数据流中的行数以及最大的 OrderDate 值。

如何使用 Multicast Task 将数据同时写入多个目标表

下面添加一个 Derived Column,写入 Table Name 和 Column Name,如果有 Process 或者其它的表的话,也可以添加其它表的信息。

如何使用 Multicast Task 将数据同时写入多个目标表

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读