数据仓库中,缓慢渐变维度的设计及碰到的问题

缓慢渐变维度的设计,概念其实就是通过添加两个字段:有效开始时间,有效结束时间。设定对其某些特定列,记录住其历史状态。

比如拿部门表做例子,部门有其所属的一个部门组的关系。如下图:


我们的业务需求要求不记录部门名称变化,和部门组名称的变化。

所以该表中仅设置部门组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.寻找中...

图片都看不见了。。。。。我晕

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值