【发布时间】:2019-06-27 14:07:53
【问题描述】:
阅读了有关事实表(事务、累积、定期)等的许多 Kimball 设计技巧。我仍然不清楚我应该如何处理我认为并不少见的更新事实表的情况。到案子。
我们正在处理来自客户的投诉,我们希望能够在数据仓库中反映投诉的当前状态。我们的投诉有一个他们经历的状态工作流程,不同的受让人按时处理他们,但对于我们的分析来说,这与现在无关。我们想回顾一下目前的投诉情况。
据我了解,事实表的粒度将是单一投诉,带有列(与此问题无关,是否应该是垃圾维度、退化等),例如:
- 投诉号码
- 当前状态
- 当前状态日期
- 当前受让人
- 投诉类型
据我了解,由于我们不想查看进程历史记录,而是查看进程的当前状态,因此为每个表示其状态的投诉存储多行是一种矫枉过正的做法,因此我们存储每个投诉只有一行,然后更新。
现在,我的推理正确吗?在上述情况下,投诉数量和投诉类型存储值不会更改,而“当前”列会更改,我们需要更新行,因此我们可以实现更改数据捕获机制(就像我们现在对维度所做的那样)将来自该事实的源系统的传入行与当前存储的事实行进行比较,以降低此类操作的时间成本。
老实说,对我来说,它看起来像一个混合 SCD 类型 0 和 1 的维度表,但它存储了接收投诉的事实。
发帖供参考:Fact table with information that is regularly updatable in source system
编辑
我知道我可以使用带有时间戳的累积事实表,这有点类似于 SCD 类型 2,但最终用户并不真正关心该过程的历史。稍后在分析中涉及更多事实,因此在这种情况下,将这种需求与数据仓库分开并不起作用。
【问题讨论】:
标签: sql-update data-warehouse fact