我是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改变谁是所有者?
答案 0 :(得分:2)
对客户建模的哪种方式更好取决于您将如何使用相应的维度。例如,如果您希望在销售时通过“CustomerType”汇总与“客户”维度相关联的某些销售,则只有将历史详细信息作为缓慢变化维度的一部分时才能执行此操作。 / p>
您可能会在该表上运行大量客户报告,这些报告代表了一个缓慢变化的“客户”维度。但是,如果您的客户数量达到数百万,那么最好为客户状态更改创建单独的事实表(或表)。
所以,总结一下:从一个缓慢变化的维度开始。如果客户数量增长过大且客户状态变化报告变得太慢,请为他们添加事实表,不要担心重复数据。