如何在大型数据仓库中为发票创建数据模型?

dav*_*jhp 4 data-modeling data-warehouse star-schema

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

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

在此处输入图片说明


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

在此处输入图片说明

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

Nic*_*aid 10

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

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

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

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

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