2013-10-24 156 views
1

我正在为大型数据仓库中的客户发票创建数据模型。如何在大型数据仓库中为发票创建数据模型?

下面显示了一个典型的发票中的字段:

enter image description here


以下是数据模型我摸索出这么远的发票型号:

enter image description here

传统的观点认为,大型数据仓库应该使用星型模式,这意味着一个事实表,但似乎是模拟一个inv oice我需要两个事实表,如上所示。使用两个事实表是否正确?

+0

它通常有助于定义您首先要分析的过程或事件。它是什么?发票需要多长时间才能获得报酬? –

+0

另外,您不需要发票事实。只需使用发票明细事实并将发票号码放在那里。 –

回答

3

我建议你尽可能避免多个粮食事实表。

由于发票事实包含Total ShippingTotal Tax,熬下来到发票明细事实,有我能想到的两种基本的选择:

  1. 在你的发票明细实际上创建税和运费列分发您的项目。这Kimball提示完全建议:http://www.kimballgroup.com/2001/07/01/design-tip-25-designing-dimensional-models-for-parent-child-applications/

  2. 对我来说运行良好的替代方法是在您的产品维度中创建两个新成员。一个是税和一个是运费。然后将这两行项目添加到事实中,就像具有适当值的正常产品一样。

当您通过发票ID进行分析时,您会得到总计,包括税金&运费。当您通过个别产品进行分析时,您不会收到误导性的货运或税收数字。

+1

+1,很好的链接。在链接中,我发现“我们无法按产品展开我们的业务!如果我们限制某个特定产品”这个词有点不清楚 - 为什么与Sum()的连接不起作用?谢谢。 – NoChance