【问题标题】:How to create a data model for invoices in a large data warehouse?如何在大型数据仓库中为发票创建数据模型?
【发布时间】:2013-11-03 15:49:52
【问题描述】:

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

以下显示了典型发票上的字段:


以下是迄今为止我为发票建模而制定的数据模型:

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

【问题讨论】:

  • 它通常有助于定义您首先尝试分析的过程或事件。它是什么?发票需要多长时间才能收到付款?
  • 另外,您不需要 Invoice Fact。只需使用 Invoice Detail Fact 并将发票编号放在那里。

标签: data-modeling data-warehouse star-schema


【解决方案1】:

我建议您尽可能避免使用多个粒度事实表。

由于 Invoice Fact 包含 Total ShippingTotal Tax,将其归结为 Invoice Detail Fact,我可以想到两个基本选项:

  1. 在您的发票明细事实中创建税和运费列并在您的项目中分配。这个 Kimball Tip 正好表明:http://www.kimballgroup.com/2001/07/01/design-tip-25-designing-dimensional-models-for-parent-child-applications/

  2. 对我来说效果很好的另一种方法是在您的产品维度中创建两个新成员。一份税费,一份运费。然后将这两个行项目添加到事实中,就像具有适当值的普通产品一样。

当您按发票 ID 进行分析时,您会得到包括税费和运费在内的总额。当您按单个产品进行分析时,您不会得到具有误导性的运费或税金数据。

【讨论】:

  • +1,良好的链接。在链接中,我发现“我们不能按产品汇总业务!如果我们受特定产品限制”这句话有点不清楚 - 为什么用 Sum() 连接不起作用?谢谢。
猜你喜欢
  • 2014-02-25
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 2010-10-26
  • 1970-01-01
  • 1970-01-01
  • 2011-10-18
相关资源
最近更新 更多