SSIS: Lookup组件高级用法,生成推断成员(inferred member)
将数据导入事实表如果无法匹配维度表的记录一般有两种处理方式。 一是将不匹配记录输出到一个表中待后续处理,然后重新导入.二是先生成维度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)的更多相关文章
- vue组件详解(五)——组件高级用法
一.递归组件 组件在它的模板内可以递归地调用自己, 只要给组件设置name 的选项就可以了. 示例如下: <div id="app19"> <my-compone ...
- vue 组件高级用法实例详解
一.递归组件 组件在它的模板内可以递归地调用自己, 只要给组件设置name 的选项就可以了. 示例如下: <div id="app19"> <my-compone ...
- vue 组件高级用法(递归组件,内联模板,动态组件,异步组件)
- Newtonsoft.Json高级用法 1.忽略某些属性 2.默认值的处理 3.空值的处理 4.支持非公共成员 5.日期处理 6.自定义序列化的字段名称
手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数 ...
- Android Data Binding高级用法-Observable、动态生成Binding Class(三)
设置View的id 虽然说Data Binding这种分层模式使得我们对数据的传递简单明了,一般情况下我们可以不设置View的id,不使用findViewById即可对View进行数据上一系列的操作, ...
- 微软BI 之SSIS 系列 - Lookup 组件的使用与它的几种缓存模式 - Full Cache, Partial Cache, NO Cache
开篇介绍 先简单的演示一下使用 Lookup 组件实现一个简单示例 - 从数据源表 A 中导出数据到目标数据表 B,如果 A 数据在 B 中不存在就插入新数据到B,如果存在就更新B 和 A 表数据保持 ...
- react第七单元(组件的高级用法-组件的组合(children的用法)-高阶组件-封装组件)
第七单元(组件的高级用法-组件的组合(children的用法)-高阶组件-封装组件) #受控组件 简而言之,就是受到状态state控制的表单,表单的值改变则state值也改变,受控组件必须要搭配onc ...
- 细说 ASP.NET Cache 及其高级用法
许多做过程序性能优化的人,或者关注过程程序性能的人,应该都使用过各类缓存技术. 而我今天所说的Cache是专指ASP.NET的Cache,我们可以使用HttpRuntime.Cache访问到的那个Ca ...
- 细说 ASP.NET Cache 及其高级用法【转】
阅读目录 开始 Cache的基本用途 Cache的定义 Cache常见用法 Cache类的特点 缓存项的过期时间 缓存项的依赖关系 - 依赖其它缓存项 缓存项的依赖关系 - 文件依赖 缓存项的移除优先 ...
随机推荐
- js计算时间差,包括计算,天,时,分,秒
收集两个计算时间差的计算方法代码片段: var date1=new Date(); //开始时间 var date2=new Date(); //结束时间 var date3=date2.getTim ...
- Mongodb 权限管理
- table+js实现网站左侧列表下拉隐藏
<script language="javascript"> function showHide(obj){ ...
- C#中的线程(一)入门 转
文章系参考转载,英文原文网址请参考:http://www.albahari.com/threading/ 作者 Joseph Albahari, 翻译 Swanky Wu 中文翻译作者把原文放在了& ...
- C# 懒人常用异步方法
Winform this.Invoke(new Action(() => { })); Wpf this.Dispatcher.Invoke(DispatcherPriority.Normal, ...
- 如何用SQL操作数据------告别标题党
额,首先跟大家道一个歉,由于本人上次利用标题来骗访问,对各位大哥大姐,叔叔阿姨,弟弟妹妹,and舅子老表的时间及流量造成了严重的浪费,本人深表歉意(好吧,其实本人内心还是有那么一丢丢的自豪的,毕竟是一 ...
- BZOJ 2707: [SDOI2012]走迷宫( tarjan + 高斯消元 )
数据范围太大不能直接高斯消元, tarjan缩点然后按拓扑逆序对每个强连通分量高斯消元就可以了. E(u) = 1 + Σ E(v) / degree(u) 对拍时发现网上2个程序的INF判断和我不一 ...
- leetcode Binary Tree Inorder Traversal python
# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val = ...
- HTML DOM 属性记录
将HTML DOM中几个容易常用的属性做下记录,需要的朋友可以参考下. nodeName.nodeValue 以及 nodeType 包含有关于节点的信息. nodeName 属性含有某个节点 ...
- PHP设计模式之工厂模式(权限分配)
// 抽象基类 User abstract class User{ protected $name = NULL; // 构造函数 function User($name){ $this->na ...