我可以在此维度模型中改进什么?

What can I improve in this dimensional model?

嗨,我是 Kimball 维度建模的新手。我想知道是否有人可以给我一些关于我可以在此星型模式模型中改进什么的反馈?这是一个模型,每个客户每次支付一行。它还将客户维度设置为渐变维度类型 2。谢谢!

总的来说,这是一个良好的开端,它可能工作得很好,具体取决于您的分析需要。我看到的唯一严重问题是您的模型中缺少日历尺寸。至少两个:一个用于到期日,一个用于付款日期。这些日期实际上应该是 FK table。

不太重要的是,我还会考虑将一些数字属性从贷款维度移到事实 table 中。例如,预付款金额可能属于客户付款 table。为了区分不同类型的付款,我会添加一个维度 "Payment Type",您可以在其中使用 "Downpayment"、"Installment Payment"、"Pre-Payment" 等值。这样的好处之一设计的优点是汇总所有相关的客户付款很容易。

有时很难决定一个数值是否应该是事实 table 或维度的一部分,或两者兼而有之。一个好的决策规则是考虑您打算如何使用该数字。如果您需要它进行计算(即 "show me all downpayments",或 "calculate total amount a customer paid to the loan, including downpayment")或时间序列图表,那么它属于事实 table。如果您需要它进行过滤(即 "show me customer payments by the size of their downpayment"),那么它应该是一个维度属性。

就您而言,我认为您不太可能按首付金额、利率或特定比率进行过滤。因此,这些数字属于事实 tables - 它们是定量事实,而不是过滤器。

设计人员通常不会在维度中保留特定数字,而是将它们分组并从组中创建维度属性。例如,您可以创建属性 "Downpayment Level",其值为“0 - 20%”、“20 - 50%”、“>50%”。这样的属性将有助于分类分析。另一方面,具体的首付金额应该属于一个事实table。

为什么重要:如果你在错误的地方建模数字,你会发现自己编写的计算代码越来越复杂。正确的设计会导致简单而优雅的查询。因此,如果在某个时候您发现您的查询变得过于复杂,这通常是一个事实被错误地建模为属性的症状。