FactLoanVolume - 一个或多个事实表

FactLoanVolume - One or Many Fact Tables

我正在设计一个 Fact table 来报告贷款量。 grain 是每笔贷款交易的一行。贷款有几个我们报告的主要里程碑:按顺序排列,这些是锁定量、贷款资金量和贷款销售量。

我在事实 table 中将锁定日期、贷款资金日期和贷款销售日期作为 FK(除此之外还有其他维度)到我的 DimDate table 之外的角色扮演维度。

我的问题是,我应该创建单独的 Fact Table 来报告每个主要里程碑的数量,还是应该将所有这些都放在一个 Fact Table 中并使用 "far in the future"尚未达到贷款里程碑的日期(例如 12/31/2099)?

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

谢谢

您可以从 immutable 设计中获益,将粒度设置得更精细到 里程碑 级别。

这为您提供了列

 transaction_id
 milestone_type  
 milestone_date

事实上table。事务的实际里程碑是来自最后(最近)记录的里程碑。

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

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

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

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

你宁愿只有一个事实 Table。

下面的问题及其对话很好地回答了“One or multiple fact tables?”的一般问题,但可能无法回答您的具体日期问题。