我正在构建一个DW,就像AdventureWorks的DW一样。我有一个称为FactSales的事实表,数据库中有一个名为SalesReason的表,该表告诉我们某个客户购买我们产品的原因。 问题是有两种类型的客户-转售商和在线客户-只有在线客户具有与他们相关的销售原因。
首先,我可以查看事实表中指向相同FK的Dimension表吗?就像我的情况一样-Sk_OnlineCustomer和SK_Resseler都指向FK_Customer。他们的ID号不重叠-
第二, 我是否应该建立一个原因维度,将其链接到事实并得到一个大多数时候为空或带有“虚假原因”的FK?
我是否应该仅将原因而不是关键问题放在事实销售中,就像可以作空的技术说明一样?
我应该将事实分为两个事实表,一个供分销商使用,一个供在线客户使用吗?但是即使在那种情况下,我也会有一些客户不回答这个原因,因此fk_reason在新的fact_Online_Customer中的某些出现将为空。
在我从冒险工作教程中看到的一个解决方案中,它创建了一个新的事实表,称为fact_reason。它将事实销售与DimReason联系起来。 看起来这是一个很好的解决方案,但我不知道它是如何工作的,因为我从来没有在课堂上坚持将事实与事实联系起来,因此我无法向老师证明我的选择。
如果您能解释一下,我将不胜感激。
谢谢!
答案 0 :(得分:1)
请针对您的问题找到我的评论
首先,我可以通过事实表访问指向相同FK的Dimension表吗?就像我的情况一样-Sk_OnlineCustomer和SK_Resseler都指向FK_Customer。他们的ID号不重叠-
是的,在这种情况下,维度将是Dim_Customer(例如),并且这可能是角色扮演维度。您可以公开报告视图以区分在线客户和转销商客户
然后,我是否应该建立一个原因维度,将其链接到事实并得到一个FK,大多数时候它为空或带有“虚拟原因”?
是的,建立原因维度很有意义。在这种情况下,您可以将事实记录标记为原因
我应该将事实分为两个事实表,一个供分销商使用,一个供在线客户使用吗?但是即使在那种情况下,我也会有一些客户不回答这个原因,因此fk_reason在新的fact_Online_Customer中的某些出现将为空。
我建议您保留一个事实,因为您的业务活动是销售,您可以使用自己的尺寸在网上或转销商中添加上下文。如果您愿意,可以使用单独的Dim_Sales维度来包含销售类型和其他您无法包含在销售记录中的销售明细
总而言之,您可能会因以下事实而过得很好:
事实销售链接至 Dim_Customer 点心销售 Dim_Reason(也可以转到Dim_Sales) Dim_Date(构建DWH解决方案时始终包括日期维度)
希望有帮助...