3

我是DW的菜鸟。我有一个 Customer 表,其中包含很少更改的基本列,例如 Name、JoinedOn 等。还有另一组可以随时间变化的列,例如“Status”、“CustomerType”、“PublishStatus”、“BusinessStatus”、“CurrentOwner”等。在没有历史的那一刻。在 DW 中,我想跟踪以下列何时更改“Status”、“CustomerType”、“PublishStatus”、“BusinessStatus”、“CurrentOwner”。我觉得如果我创建另一个表来跟踪这些会更好,该表将具有以下列:

“CustomerId”、“Status”、“CustomerType”、“PublishStatus”、“BusinessStatus”、“CurrentOwner”、“ExpiredOn”、“IsCurrent”

这是正确的方法吗?如果是,那么这个新表是一个事实还是一个缓慢变化的维度?我想运行查询,例如 CustomerType 何时从 A 更改为 B?什么时候出版的?当 BusinessStatus 更改时,谁是所有者?

4

1 回答 1

2

哪种方式更好地为客户建模实际上取决于您将如何使用相应的维度。例如,如果您希望在销售时通过“CustomerType”汇总与“Customer”维度关联的一些销售,则只有在将历史详细信息保留为缓慢变化维度的一部分时才能执行此操作。

您可能可以在代表缓慢变化的“客户”维度的表格上运行大量客户报告。但是,如果您的客户数量达到数百万,您最好为客户状态更改创建一个单独的事实表(或多个表)。

所以,总结一下:从一个缓慢变化的维度开始。如果客户数量增长过大,客户状态变化的报告变得太慢,为他们添加一个事实表,不用担心重复数据。

于 2013-08-12T14:21:52.783 回答