有几种方法可以处理 DimCustomer 和 FactOrders 之间的关系,因此这取决于您如何对数据进行建模......
如果 FactOrders 有 3 个字段,每个字段都链接回 DimCustomer,如下所示...
FactOrder
ShipperKey (FK)
ConsigneeKey (FK)
BillToKey (FK)
DimCustomer
CustomerKey (PK)
...那么您最终将在 SSAS 数据库中为客户提供 3 个维度。您可以通过角色扮演(将 1 个维度添加到您的多维数据集 3 次)或作为 3 个单独的维度来实现这些维度。后者允许更用户友好的命名约定。
另一方面,如果您的 FactOrders 表只有一个链接到 DimCustomer 的字段,如下所示...
FactOrder
CustomerKey (FK)
DimCustomer
CustomerKey (PK)
...然后您需要使用两种方法中的一种来区分“客户类型”(发货人、收货人、BillTo)...
方法 1:在您的 DimCustomer 表中创建一个 CustomerType 字段,并使其成为您 SSAS 项目中客户维度中的属性...
FactOrder
CustomerKey (FK)
DimCustomer
CustomerKey (PK)
CustomerType
方法 2:创建一个新的维度表 (DimCustomerType) 并将其添加到您的多维数据集...
FactOrder
CustomerKey (FK)
CustomerTypeKey (FK)
DimCustomer
CustomerKey (PK)
DimCustomerType
CustomerTypeKey (PK)