1

我正在设计一个事实表来报告贷款量。每笔贷款交易一排粮食。我们报告的贷款有几个重要的里程碑:按顺序,这些是锁定量、贷款资金量和贷款销售量。

我在 Fact 表中将 Lock Date、Loan Funding Date 和 Loan Sale Date 作为 FK(除此之外还有其他维度),以便在我的 DimDate 表中扮演角色。

我的问题是,我应该创建单独的事实表来报告每个主要里程碑的数量,还是应该将所有这些都保存在一个事实表中并使用“遥远的未来”日期(例如,2099 年 12 月 31 日)作为里程碑在尚未偿还的贷款上?

我读过 Kimball 的书,但没有找到明确的答案(如果存在的话)。

谢谢

4

2 回答 2

0

通过将粒度更精细地设置为里程碑级别,您可以从不可变设计中受益。

这给你列

 transaction_id
 milestone_type  
 milestone_date

在你的事实表中。事务的实际里程碑是最后(最近)记录的里程碑。

一个优点是您将来可能会添加新的里程碑类型,但主要好处是您永远不会更新事实表 - 您只使用插入。

您可以安全地回滚错误的 ETL 加载,只需删除记录即可;这在使用更新时要复杂得多。

您还可以实现更复杂的状态图,例如,当某个里程碑被撤销并且事务回退到之前的状态时。

您是否使用一个或多个事实表的问题取决于您的里程碑是否同质这一事实。如果里程碑具有不同的属性,您可能会使用专用事实表获得更简洁的设计,但查询会变得复杂。

于 2018-08-07T17:04:40.190 回答
0

你宁愿只有一个事实表。

以下问题及其对话很好地回答了“一个或多个事实表? ”的一般问题,但可能不是如何处理您的具体日期问题。

于 2019-05-06T13:53:32.070 回答