当前余额属于事实还是维度table?
Does current balance belong in a fact or a dimension table?
我正着手构建一个数据仓库,我正在努力弄清楚余额是事实还是维度。
我有一个'Customer'table,我觉得应该是一个维度。它具有客户姓名等属性。
对我来说,创建一个名为 'Customer Account' 的事实 table 似乎很有意义,它包含帐户余额等信息,link 'Customer'维度。
然而,'Customer' 将是一个一致的维度,因为几乎每个事实 table 都会被 link 编辑到它。我知道人们想要对数据进行切片和切块的一种常见方式是按当前余额(例如,告诉我有多少 X 客户余额超过 500 英镑的欠款)。所以这表明余额应该存储在维度中。但这 'feels' 对我来说是错误的。
我想如果有人想要一份按余额过滤或分组的报告,那么他们可以深入了解 'Customer Account' 事实 table - 但这似乎不是很用户友好.
也许我需要创建一个'Customer Account'事实table,并且还将余额添加到'Customer'维度。
欢迎提出建议!
你几乎回答了你自己的问题:两者都用。
- 在维度中,允许根据当前余额进行过滤;每笔交易或至少每天必须更新余额;
- 作为快照事实 table,使用半加性度量余额,例如,允许对账户余额进行时间序列分析。
我正着手构建一个数据仓库,我正在努力弄清楚余额是事实还是维度。
我有一个'Customer'table,我觉得应该是一个维度。它具有客户姓名等属性。
对我来说,创建一个名为 'Customer Account' 的事实 table 似乎很有意义,它包含帐户余额等信息,link 'Customer'维度。
然而,'Customer' 将是一个一致的维度,因为几乎每个事实 table 都会被 link 编辑到它。我知道人们想要对数据进行切片和切块的一种常见方式是按当前余额(例如,告诉我有多少 X 客户余额超过 500 英镑的欠款)。所以这表明余额应该存储在维度中。但这 'feels' 对我来说是错误的。
我想如果有人想要一份按余额过滤或分组的报告,那么他们可以深入了解 'Customer Account' 事实 table - 但这似乎不是很用户友好.
也许我需要创建一个'Customer Account'事实table,并且还将余额添加到'Customer'维度。
欢迎提出建议!
你几乎回答了你自己的问题:两者都用。
- 在维度中,允许根据当前余额进行过滤;每笔交易或至少每天必须更新余额;
- 作为快照事实 table,使用半加性度量余额,例如,允许对账户余额进行时间序列分析。