数据仓库中,缓慢渐变维度的设计及碰到的问题
2013-04-28 17:21
295 查看
缓慢渐变维度的设计,概念其实就是通过添加两个字段:有效开始时间,有效结束时间。设定对其某些特定列,记录住其历史状态。
比如拿部门表做例子,部门有其所属的一个部门组的关系。如下图:
我们的业务需求要求不记录部门名称变化,和部门组名称的变化。
所以该表中仅设置部门组No为渐变字段,仅当其内容变化时,才会产生新的记录。如下图:
更新前:
更新后:
说明:当天津采购部,因业务需要调整到了2002为编号的,采购部2时,产生了新的记录。
同时修改旧记录的SCDActive=1 SCDEndDate=当时时间 GetItAt=当时时间。
这样设计的优点:
1. 记录部门间调整的变化,包括变化时间等。可以很方便的为事实表匹配出其所想要的历史部门状态值。
这样设计的缺点:
1.部门调整一般不会太多,但是如果是一个变更频繁的字段(比如部门负责人或其他吧,暂时也举不出好的例子),这种设计就会出现问题,导致数据量激增,超过10W,100W的维度表,查询效率是比较低的。
遇到的问题:
1.因部门组名称不渐变,导致部门组名称与部门No不一致。出现如下情况:
因为DepartGroupName并没有添加为渐变列,所以其每次更新内容都是所有10011部门的记录。把历史数据1001的名称也更新为了采购部2。
解决办法:
方法1.设置不渐变内容,仅更新Active=1的记录,但是缺点是当如下情况出现时,无法更新所有同部门组No的名称。
当报表查询历史趋势数据时,有可能吧这两条记录都查询出来,如果按照GroupNo,GroupName分组,则将1001分为了两个Group
方法2.在ELT Job之外,再添加一部分处理,匹配所有的GroupNo,与GroupName的关系,按照GroupNo匹配其所有记录的Name为最新。(但是这种方法又感觉不是很好,因为是在Job之外单独处理所有数据)
方法3.寻找中...
图片都看不见了。。。。。我晕
比如拿部门表做例子,部门有其所属的一个部门组的关系。如下图:
我们的业务需求要求不记录部门名称变化,和部门组名称的变化。
所以该表中仅设置部门组No为渐变字段,仅当其内容变化时,才会产生新的记录。如下图:
更新前:
更新后:
说明:当天津采购部,因业务需要调整到了2002为编号的,采购部2时,产生了新的记录。
同时修改旧记录的SCDActive=1 SCDEndDate=当时时间 GetItAt=当时时间。
这样设计的优点:
1. 记录部门间调整的变化,包括变化时间等。可以很方便的为事实表匹配出其所想要的历史部门状态值。
这样设计的缺点:
1.部门调整一般不会太多,但是如果是一个变更频繁的字段(比如部门负责人或其他吧,暂时也举不出好的例子),这种设计就会出现问题,导致数据量激增,超过10W,100W的维度表,查询效率是比较低的。
遇到的问题:
1.因部门组名称不渐变,导致部门组名称与部门No不一致。出现如下情况:
因为DepartGroupName并没有添加为渐变列,所以其每次更新内容都是所有10011部门的记录。把历史数据1001的名称也更新为了采购部2。
解决办法:
方法1.设置不渐变内容,仅更新Active=1的记录,但是缺点是当如下情况出现时,无法更新所有同部门组No的名称。
当报表查询历史趋势数据时,有可能吧这两条记录都查询出来,如果按照GroupNo,GroupName分组,则将1001分为了两个Group
方法2.在ELT Job之外,再添加一部分处理,匹配所有的GroupNo,与GroupName的关系,按照GroupNo匹配其所有记录的Name为最新。(但是这种方法又感觉不是很好,因为是在Job之外单独处理所有数据)
方法3.寻找中...
图片都看不见了。。。。。我晕
相关文章推荐
- 数据仓库系列 - 缓慢渐变维度 (Slowly Changing Dimension) 常见的三种类型及原型设计
- SSIS+数据仓库系列--- 缓慢渐变维度 (Slowly Changing Dimension) 常见的三种类型及原型设计
- 缓慢渐变维度 (Slowly Changing Dimension) 常见的三种类型及原型设计
- SequoiaDB在反范式化和缓慢渐变维度处理中的应用
- 缓慢渐变维度的处理方式
- 只有一个属性的维度设计问题
- SSIS--- 数据仓库中实现 Slowly Changing Dimension 缓慢渐变维度的三种方式
- 维度字段缓慢渐变维度的处理方式
- 微软BI 之SSIS 系列 - 数据仓库中实现 Slowly Changing Dimension 缓慢渐变维度的三种方式
- 学生宿舍管理系统 项目设计、实现以及碰到的问题
- 事实表维度表设计的有关问题
- Dao 泛型设计碰到的问题和一些心得。
- AIX 程序设计大赛---AIX正方形问题
- [设计原则] 通过机制解决问题 推荐
- ASP.NET设计中的性能优化问题
- 最近在使用swift写代码时碰到block引用循环的问题。记下一笔以免忘记。
- 如何解决Bluetooth系统设计的棘手问题
- 对EXCEL中分类汇总的数据进行复制碰到无法复制的问题
- 在Windows 2003下运行VMware碰到的问题
- xfire+spring+struts2+hibernate中碰到的问题