有人要求我创建我们的分析多维数据集并有一个设计问题。
我们出售与这些小部件配套的“小部件”和“零件”。每个订单都有许多小部件,有时有几个部分。
我要坚持的是–对我而言,订单在一定程度上是事实。但是,小部件是什么?它们是一个尺寸,度量中的每个事实都将是订单的每个零件和小部件的条目。
因此,如果订单123具有小部件1,小部件2和部件5,那么对于同一订单,度量中将存在3个事实吗?正确吗?
答案 0 :(得分:1)
在基本层次上,您可以将大多数事实视为交易或交易行项目。因此,例如,您可能有一个“销售”事实表,其中每个记录代表该销售中的一个订单项。每个事实记录将具有表示指标的数字列和连接到维表的其他列。这些维度的组合将描述该订单项。因此,在您的情况下,您可能会遇到以下情况: 1)详细说明交易日期的“日期”维度 2)一个“小部件”维度,详细说明了在该交易中出售的小部件 3)一个“客户”维度,其中详细说明了购买该商品的客户(几乎可以肯定,同一客户会出现在此交易的每个订单项上) 4)...由您拥有的信息和您要解决的业务问题决定。
现在,尺寸表包含更多详细信息。例如,小部件尺寸表可能包含小部件名称,颜色,制造商等信息。每次贵公司出售这些小部件之一时,事实表中的记录将链接至该名称的相同尺寸记录,颜色,制造商等组合(例如,每次销售相同商品时,您不会创建新的维度记录-这是一对多关系-每个维度记录可能都有许多相关的事实记录)。>
您其他维度表也会类似地描述其维度。例如,客户维度可以提供客户的姓名,地址,...
因此,对于您的问题的简短回答是,小部件可能是一个尺寸,项目和小部件可能(或可能不)实际上是相同的尺寸(在我怀疑是学校的课堂上),并且您将该笔交易有3个事实记录。
答案 1 :(得分:0)
这可能与先前的答案相同,但是....
如果您尝试对“每个订单中的许多小部件”进行建模,则会遇到问题,因为最终会遇到许多(订单事实)与许多(部件)的关系。在多维数据集/星型模式设计中,通常需要以某种方式将多对多关系修改为多对一关系。
因此,您要做的是尝试找出什么特殊的事物来标识“订单”(而不是订单中的一堆小部件)。通常这只是订单日期,客户,订单号,税项之类的东西
对此建模的示例方法是:
如果您有一个包含五个窗口小部件的订单,则可以将其建模为事实表,其中包含五个记录,其中恰好包含重复的窗口小部件,客户,日期等。
然后,您必须弄清楚如何在五个记录上分配订单抬头税额。两种明显的解决方案是:
对“零件”进行建模只会使这些概念更进一步。
重要的是要了解最终用户想要看什么,为什么他们要看零件。他们想按零件测量什么,如何将较高的值(如税)分配给较低的零件(如零件)。