父子维度缓慢变化如何处理

0
比如销售企业 主管A 下属为B,C,D 。B的下属为 E.F.D。如果B经过一段时间后万为A1的下属了。那么应该处理处理。生成一条新的B1为A1的下属。那B原来下属EFD怎么处理。
已邀请:
0

BIWORK - 热衷于微软BI技术,技术架构和解决方案! 2015-10-27 回答

缓慢渐变维度有很多种类型,你要的是哪一种?数据仓库系列 - 缓慢渐变维度 (Slowly Changing Dimension) 常见的三种类型及原型设计

个人建议像这类父子结构的关系变化,直接采用覆盖的形式即可。
QQ图片20151027181857.jpg

比如上图中, B 的上级原来是 A (P_ID=2),现在变为 A1,那么直接更改为 A1 (P_ID=8)即可。

如果你需要保留历史纪录,你需要看看这篇缓慢渐变维度就会提到如何保留历史,这样的改变就意味着:自 B 和 B 以下的 E,F,G 以及 E,F,G 它们的子子孙孙都需要做的一件事情就是结束旧的一条历史纪录,插入一条新的记录表明这是当前最新的维度,这样的 UPDATE 语句和 INSERT 语句我感觉处理起来很麻烦了。

所以建议你认真考虑一下这种情况下是否有保留历史纪录的必要,这种分析场景是否存在,如果这种情况不能避免要么就是这种最原始的方式,要么就需要考虑

 
0

BAO胖子 - 15年BI经验,涉足电力,快消品,医药,信息服务等行业的BI老兵。 2015-10-27 回答

有两种需求需要考虑,一是历史数据的保存,以确定在某个时间点,当时具体组织架构可以重现。这种就是用拉链表来实现即可解决,但这很多时候都不是报表分析所需要的需求。

分析的需求通常是要求某个时间点,到一个时间点,求取固定的时间周期(比如月份/季度),这和人员的业绩考虑的规则息息相关,如果你能提供更多的信息,可以做出更为准确的模型。下面只是一个例子,以为借鉴:这种情况可以考虑父子维度表中增加一个时间周期字段,大概的模型如下图:

Capture.PNG


--------------------------------------------
至于你提出的
比如销售企业 主管A 下属为B,C,D 。B的下属为 E.F.D。如果B经过一段时间后万为A1的下属了。那么应该处理处理。生成一条新的B1为A1的下属。那B原来下属EFD怎么处理

这个是你应该在提问里写清楚的啊。实际场景中,他们是否还Report给B吗?如果还是Report给B,上面的方案自然可以解决,如果不是,你就需要更详细的描述需求了。

要回复问题请先登录注册