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

SSIS: Lookup组件高级用法,生成推断成员(inferred member)

时间:2015-05-21 01:14:30      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

将数据导入事实表如果无法匹配维度表的记录一般有两种处理方式。 一是将不匹配记录输出到一个表中待后续处理,然后重新导入.二是先生成维度Key,后续再完善维度key,本文指导各位使用第二种方式。

背景

比如下图StoreID为1的经销商不存在于我们经销商维度表中,我们现在要使用lookup组件进行匹配,并生成维度key.

技术分享

操作步骤

1. 先添加一个派生列组件,将StoreID转为字符,等会儿生成键值会用到。

技术分享

技术分享

2. 先进行匹配一次,然后把无法匹配到的记录传到下一个Lookup 组件  Insert  Inferred Reseller

技术分享

3 .注意Insert  Inferred Reseller匹配模式要选择 Partial cache

技术分享

技术分享

StoreIDstr 与 ReselletAltemateKey(也就是我们的StoreID) 做关联.

技术分享

高级选项中,我们执行一个存储来代替前面Connection里面的输出.将StoreIDstr 传入改存储.来生成推断成员,并且返回键值,具体实现请看存储代码
技术分享

USE [BIHell_demo]
GO
/****** Object:  StoredProcedure [dbo].[Generate_ResellerKey]    Script Date: 5/20/2015 10:37:44 PM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[Generate_ResellerKey]
  @Store NVARCHAR(15) -- Business key
AS 
SET NOCOUNT ON

/* Prevent race conditions */ 
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE

/* Ensure key does not exist */
DECLARE @ResellerKey INT 
SELECT @ResellerKey = ResellerKEy
FROM dw.DimReseller 
WHERE ResellerAlternateKey = @Store

/* Generate new surrogate key for inferred member */ 
IF @ResellerKey IS NULL BEGIN 
  

  INSERT [dw].[DimReseller]
           ([ResellerAlternateKey]
           ,[BusinessType]
           ,[ResellerName]
           ,[NumberEmployees]
           ,[FirstOrderYear]
           ,[LastOrderYear]
           ,[ProductLine]
           ,[AddressLine1]
           ,[AddressLine2]
           ,[City]
           ,[StateProvinceCode]
           ,[PostalCode]
           ,[AnnualSales]
           ,[BankName]
           ,[AnnualRevenue]
           ,[YearOpened]
           ,[Current]
           ,[Inferred])
     VALUES
           (@Store
           ,Unknown
           ,Unknown
           ,null
           ,null
           ,null
           ,null
           ,null
           ,null
           ,null
           ,null
           ,null
           ,null
           ,null
           ,null
           ,null
           ,1
           ,1)
  SET @ResellerKey = SCOPE_IDENTITY() 
END

/* Return surrogate and business key */ 
SELECT @ResellerKey AS ResellerKey, @Store AS ResellerAlternateKey

5. 执行完毕以后可以看到经销商维度表新增了一行记录,并且inferred被标记为1. 后续我们可以完善这条维度记录
技术分享

而事实表已经关联到ResellerKey  702

技术分享

SSIS: Lookup组件高级用法,生成推断成员(inferred member)

标签:

原文地址:http://www.cnblogs.com/haseo/p/4518575.html

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