【问题标题】:Does current balance belong in a fact or a dimension table?当前余额属于事实表还是维度表?
【发布时间】:2015-01-13 18:08:30
【问题描述】:

我正在开始构建一个数据仓库,我正在努力弄清楚余额是事实还是维度。

我有一个“客户”表,我认为它应该是一个维度。它具有客户姓名等属性。

对我来说,创建一个名为“客户帐户”的事实表似乎很有意义,其中包含帐户余额等信息,并将“客户”维度链接到该数据。

但是,“客户”将是一个符合标准的维度,因为几乎每个事实表都将链接到它。而且我知道人们想要对他们的数据进行切片和切块的一种常见方式是通过当前余额(例如,告诉我有多少 X 客户余额超过了 500 英镑的欠款)。所以这表明余额应该存储在维度中。但这对我来说“感觉”不对。

我想如果有人想要一份按余额过滤或分组的报告,那么他们可以钻取到“客户帐户”事实表 - 但这似乎对用户不太友好。

也许我需要创建一个“客户帐户”事实表,并且还将余额添加到“客户”维度。

欢迎提出建议!

【问题讨论】:

    标签: data-warehouse business-intelligence


    【解决方案1】:

    你几乎回答了你自己的问题:两者都用。

    • 在维度中,允许根据当前余额进行过滤;每笔交易或至少每天都必须更新余额;
    • 作为快照事实表,使用半累加度量余额,例如允许对帐户余额进行时间序列分析。

    【讨论】:

    • 好的,谢谢您的回答。大声思考......如果我采用这种方法,那么我是否需要在每次余额更改时向维度添加一个新行(以允许时间点报告),或者我会更好地每次都覆盖余额并且只允许通过钻取事实表进行时间点报告?如果我采用第一种方法,我想知道我是否从拥有事实表中获得任何好处。如果我采用第二种方法,那么用户必须采用与当前报告完全不同的方法来生成时间点报告。
    • 我不建议将余额视为 SCD II 属性,因为这将导致您的客户维度与事实表具有几乎相同的基数。我每次都会更新到最后一个已知的余额,而不是跟踪历史。这就是账户余额快照事实表的用途,为余额提供时间序列数据。
    猜你喜欢
    • 1970-01-01
    • 2018-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多