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??????被设为”固定的属性“的游戏,没有发生变化 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |