加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-14 02:15:56 所属栏目:大数据 来源:网络整理
导读:BI之SSIS之数据流转换(渐变维度) ? ? 1??????????渐变维度 1.1?????????维度中的某些属性会随着时间的变化而变化时,我们称该维度为渐变维度。比如,用户维度中的手机号、住址等信息会随着时间变化,那么用户维度就是渐变维度。 1.2?????????渐变维度需要

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??????被设为”固定的属性“的游戏,没有发生变化

(编辑:李大同)

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

    推荐文章
      热点阅读