捕捉维度层次结构中级别之间变化的最简洁的方法是什么?
我有维度层次结构 [Area] > [Region] > [Location],其中 Area 是 Region 的父级,Region 是 Location 的父级。位置是层次结构的最低级别,并与事实表相关联。
业务规则是: 位置能够根据业务需要更改分配到的区域。此外,区域能够更改它们分配到的区域。
我们希望捕获这些变化,以便在进行历史分析时,我们可以比较位置更改其区域之前和之后的业务指标,以及区域更改其区域之前和之后的业务指标。
做这个的最好方式是什么?
我提出的四种方法似乎都有很大的缺点:
- 在层次结构级别之间使用桥接表需要您使用时间界限(有效的开始/结束日期)在您向上走层次结构时正确识别孩子属于哪个父级。这使得查询容易出错,尤其是对于具有多个级别的层次结构。
- 每当子记录与父记录的关系发生变化时,对子记录进行版本控制(例如,当区域 A 从区域 A 移动到区域 B 时对区域 A 进行版本控制),然后将更改一直沿层次向下级联(例如,创建与区域 A 相关联的位置的新版本以便它们与新的区域 A) 相关联。
- 更新子记录对父记录的引用,使您使用时间限制来重新组装正确的历史记录(容易出错)。
- 在向上查询层次结构时始终使用时间界限,以确保在分析事实时位置 A 与正确的区域相关联(同样,区域 A 与正确的区域相关联)。
这些对我来说似乎都不干净。
有没有更好的办法?
非常感谢