2013-10-24 80 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