举例来说,假设我有一个包含两个维度和一个度量的事实表
FactMoney表
ProjectKey int
PersonKey int
现金金额
这两个维度的定义如下:
DimProject(类型0尺寸-即静态)
项目名称varchar(50)
DimPerson(类型2缓慢变化的尺寸)
PersonNaturalKey int
PersonName varchar(50)
EffectiveStartDate日期时间
EffectiveEndDate日期时间
IsCurrent位
到目前为止非常简单。现在,我将介绍“人员类别”概念。
点心类别
CategoryKey整数
CategoryName varchar(50)
并在DimPerson和DimCategory之间建立M2M关系
BridgePerson类别
所以-人们可以有1..n个类别。
我的问题是- 由于Person是一个缓慢变化的维度,当一个人的名字更改时,我们添加一个新的person行并更新我们的生效日期,并且它是当前标记,没什么大不了的。
但是,我们如何处理此人的类别?每当出现新的人员版本时,我们是否需要向桥表添加更多行?
作为推论,如果一个人的类别发生变化,这是否意味着我们需要在person表中创建一个新行?
关于您的主要问题:我想说您需要在类别表中添加类别(可能是从老人行中复制它们)。因此,您可以继续对处于新(更改)状态的人员进行分类。
关于类别更改:我宁愿不添加人员行,而是在类别表中添加初始有效期和到期日期。这样,每个类别都可以单独更改。但是您需要注意不要进行时间点查询,因为这样会使类别过多