设计一个立方体

问题描述 投票:-1回答:2

我被问到创建我们的分析立方体并有一个设计问题。

我们出售'小部件'和'部件'来与这些小部件一起使用。每个订单都有许多小部件,有时还有几个部分。

我坚持的是 - 对我来说,订单是一个事实。但是,小部件是什么?它们是一个维度,度量中的每个事实都是订单的每个部分和小部件的条目。

那么,如果订单123有小部件1和小部件2以及第5部分,那么同一订单的度量中将有3个事实?那是对的吗?

ssas data-warehouse cube dimensional-modeling
2个回答
1
投票

在基本级别,您可以将大多数事实视为交易或交易行项目。因此,例如,您可能有一个“销售”事实表,其中每条记录代表该销售中的一个订单项。每个事实记录都有表示度量的数字列和连接到维表的其他列。这些维度的组合将描述该订单项。因此,在您的情况下,您可能会遇到以下情况:1)详细说明交易日期的“日期”维度2)详细说明在该交易中销售的小部件的“小部件”维度3)详细说明客户的“客户”维度购买该项目(几乎可以肯定,同一个客户会出现在此交易的每个项目上)4)...根据您拥有的信息以及您尝试解决的业务问题确定。

现在,维度表包含更多详细信息。例如,您的窗口小部件维度表可能包含窗口小部件名称,颜色,制造商等等。每当您的公司销售其中一个窗口小部件时,事实表中的记录将链接到该名称的相同维度记录,颜色,制造商等组合(即每次销售同一项目时都不创建新的维度记录 - 这是一对多的关系 - 每个维度记录可能有许多相关的事实记录)。

您的其他维度表将类似地描述其维度。例如,客户维度可能会给出客户的姓名,地址,......

所以,对你的问题的简短回答是,小部件可能是一个维度,项目和小部件可能(或可能不)实际上是相同的维度(在我怀疑它们的学校类中),并且你将有3个事实记录对于那一笔交易。


0
投票

这可能与之前的答案一致,但......

如果您尝试为每个订单设置“许多小部件”,那么您将遇到问题,因为您最终会遇到许多(订单事实)与许多(小部件)关系。在立方体/星型模式设计中,通常需要将多对多关系修改为以某种方式多对一。

所以你要做的就是尝试识别什么特殊的东西标识“订单”(而不是订单中的一堆小部件)。通常这只是订单日期,客户,订单号,税收等内容

建模的一个示例方法是:

如果您有一个包含五个小部件的单个订单,则将其建模为具有五个记录的事实表,这些记录恰好具有重复的小部件,客户,日期等。

然后,您必须弄清楚如何将订单表头税额分摊到五个记录上。两个明显的解决方案是:

  1. 创建一个代表税收的小部件,并将其添加为另一条记录
  2. 将税收分摊到五个记录上,无论是均匀还是加权

建模“零件”只是进一步采用这些概念。

重要的是要了解最终用户想要查看的内容,以及他们想要查看部件的原因。他们想要通过零件衡量什么,如何将更高级别的值(如税)分配到较低级别(如零件)。

© www.soinside.com 2019 - 2024. All rights reserved.