如何使用 Multicast Task 将数据同时写入多个目标表
运行下面的 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 一下。 这里取到数据流中的行数以及最大的 OrderDate 值。 下面添加一个 Derived Column,写入 Table Name 和 Column Name,如果有 Process 或者其它的表的话,也可以添加其它表的信息。 (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |