数据仓库中缓慢变化的维度之间的关系



我正在设计一个数据仓库,并正在努力找出应该如何建模这个场景。我把用户存储在一个缓慢变化的维度类型2表中,如下所示:

语言生效日期到期日期IsCurrent>YN2022-01-06Y
UserKey UserID
1 1001 EN 2021-01-019999-12-3
2 1002 EN 2021-07-31 2022-01-06
3 1002 FR9999-12-31

订阅是事实,因此应该存储在事实表中——尽管您可能还有一个订阅维度,它包含订阅的属性,如名称。您通过事实表关联维度,因此您的订阅事实将具有与subscription、User、Date等维度的FK。

将尺寸直接关联在一起被称为雪花,通常是一种糟糕的设计。

BTW对于SCD2表来说,将一行的到期日期与下一行的生效日期相同不是一个好的设计。在您的示例中,您需要业务逻辑来定义哪一行在2022-01-06处于活动状态,而如果一行在2022年2月1日到期,下一行在2021年2月2日开始,则不会出现混淆。

根据您的示例,最后一个表看起来更接近SLCD类型4,而不是类型1。

事实上,我同意订阅可能是一个事实表,并且有一个维度表。也许,SLCD类型2可能是订阅维度表的最佳选项,但添加一个标志列以设置当前/活动订阅及其相关的生效日期。

最新更新