3.21、BI之SSIS之数据流转换(渐变维度)

BI之SSIS之数据流转换(渐变维度)

 

 

1          渐变维度

1.1         维度中的某些属性会随着时间的变化而变化时,我们称该维度为渐变维度。比如,用户维度中的手机号、住址等信息会随着时间变化,那么用户维度就是渐变维度。

1.2         渐变维度需要新增两个字段,DimBeginTime和DimEndTime,来记录渐变的属性的有效时间段;或者增加一个标识字段,来标识该数据是否正在使用

 

2          新建SSIS包

 

3          连接管理器-》新建OLEDB连接“LocalHost.AdventureWorks2008.sa”

 

4          控制流-》拖入“执行SQL任务”

4.1         Connection“LocalHost.AdventureWorks2008.sa”

4.2         SqlStatement

IF not EXISTS(SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[DimProduct]')AND type in (N'U')) begin

      create table DimProduct

      (

               productKey int primary keyidentity(1,1),

               productAlternateKey int,

               productName nvarchar(100),

               productValue int,

               productType nvarchar(100),

               dimBeginTime datetime,

               dimEndTime datetime

      )

end

4.3         确定

 

5          控制流-》拖入“数据流任务-》将“执行SQL任务”的控制流指向“数据流任务”-》设计打开

 

6          新建一个文本文件“产品维度数据”,数据如下

1,手机-iphone,10,通讯

2,打印机,100,办公

3,鼠标,1000,游戏

 

7          连接管理器-》新建到“产品维度数据”的文件连接

 

8          数据流-》拖入“平面文件源”

8.1         连接管理器名称“产品维度数据连接”

8.2         文件名为上面新建的“产品维度数据”

8.3         预览下数据是否正确

8.4         确定

 

9          数据流-》拖入“数据转换”

9.1         将“平面文件源”的数据流指向“数据转换”

9.2         勾选所有列

9.3         输入列0-》别名“productId”-》数据类型“DT_I4”

9.4         输入列1-》别名“productName”-》数据类型“DT_WSTR”-》长度“100”

9.5         输入列2-》别名“productValue”-》数据类型“DT_I4”

9.6         输入列1-》别名“productType”-》数据类型“DT_WSTR”-》长度“100”

 

10      数据流-》拖入“渐变维度”

10.1      连接管理器“LocalHost.AdventureWorks2008.sa”

10.2      表或视图“DimProduct”,这里选择的是数据要导入的维度表

10.3      输入列的“productId”对应维度列的“productAlternamteKey”-》键类型“业务键”,这里的productId为OLTP系统的主键,目的是判断该键对应的列是否发生了变化-》其它的列以名称对应-》下一步

10.4      维度列“productName”-》更改类型“历史属性”,更改类型有三种

10.4.1 固定的属性,表示该属性为固定值,不能变更

10.4.2 变化的属性,表示该属性的值会被最新的值覆盖

10.4.3 历史属性,表示属性的值的所有变化都会被记录,记录的方式有两种,一种是添加时间段属性,一种是添加标识属性

10.5      维度列“productValue”-》更改类型“变化的属性”

10.6      维度列“productType”-》更改类型“固定的属性”

10.7      选择“使用开始日期和结束日期确定当前记录和过期记录”

10.7.1 开始日期“dimBeginTime”

10.7.2 结束日期“dimEndTime”

10.7.3 用来设置日期值的变量“system:startTime”

10.8      下一步-》下一步

10.9      渐变维度设置好后会生成一串的流程

 

11      执行包-》全绿-》成功-》查看数据,数据有导入,beginTime也有数据,endTime为null

 

12      修改“产品维度数据”的文件

12.1      “手机”为“手机-iphone”

12.2      ”100“改为“101“

12.3      “游戏“改为“配件”

 

13      再次执行包-》报错” 如果将FailOnFixedAttributeChange属性设置为TRUE,当检测到固定的属性更改时,转换将失败。要将行发送到“固定的属性”输出,请将FailOnFixedAttributeChange 属性设置为FALSE。“-》设置“渐变维度“的FailOnFixedAttributeChange为false

 

14      再次执行包-》全绿-》成功-》查看数据,发现

14.1      被设为”历史记录“的手机,新增了”手机-iphone“数据行,并且将”手机“行的endTime设置了值,这样就记录了属性生效的时间段

14.2      被设为”变化的属性“的100,更新成了101

14.3      被设为”固定的属性“的游戏,没有发生变化

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值