星型架构下SCD2事实表历史变更展示及缓慢变化事实处理方案咨询
星型架构下SCD2事实表历史变更展示及缓慢变化事实处理方案咨询
大家好,我目前在星型架构建模时遇到了一个头疼的问题,想请教下各位的思路:
现有模型情况
- 我有两个源表:
asset(资产表)和asset attributes(资产属性表),已经将它们建模为一张事实表 + 3-4个维度表的结构。 - 针对部分资产属性,我设计了一个SCD2类型的 junk维度,用来追踪属性的历史变化——比如某资产原本是2居室,后续变更为3居室,通过这个维度就能完整追溯到这个变化过程,这部分的设计我是比较满意的。
当前遇到的核心问题
- 现在的事实表中存储的是资产类型等维度的外键,每次ETL运行完成后,事实表只会保留最新的维度键值。
- 但客户的需求是要能看到事实的历史变更轨迹:比如2023年该资产对应的类型是A,到2024年变更为B,希望能清晰展示这个时间线的变化。
- 这看起来属于缓慢变化事实的场景,但我没办法采用快照表的方式来实现。我在考虑是不是应该拆分出
fact_asset和dim_asset来处理这类变更? - 我原本想尽量保留标准的星型架构,但现在感觉可能难以实现,除非对事实表做删除后重新加载?另外还有个限制:源表只有一个统一的更新日期字段,每次有变更发生时,我都得逐个检查所有维度的变化情况。
备注:内容来源于stack exchange,提问作者magicdotjs
相关产品推荐
相关产品推荐

