2015-01-13 32 views
1

我開始構建一個數據倉庫,並且我正在努力讓它在我的腦海中平衡是一個事實還是一個維度。當前餘額是屬於事實還是維度表?

我有一個'客戶'表,我認爲這應該是一個維度。它具有諸如客戶名稱之類的屬性。

對於我來說,創建一個名爲「客戶賬戶」的事實表似乎很有意義,它包含諸如賬戶餘額等信息,並將「客戶」維與其相關聯。

但是,'客戶'將是一個符合的維度,因爲幾乎每個事實表都將與其相關聯。而且我知道,人們想要分割和剔除數據的一種常見方式是通過當前的餘額(例如,向我顯示客戶餘額超過500英鎊的X)。所以這表明平衡應該存儲在維度中。但那對我來說「感覺」是錯誤的。

我想如果有人想要一個按照餘額篩選或分組的報告,那麼他們可以鑽取到「客戶賬戶」事實表 - 但這看起來不太方便用戶。

也許我需要創建一個'客戶賬戶'事實表,也將餘額添加到'客戶'維度。

建議歡迎!

回答

1

你幾乎回答了你自己的問題:使用兩者。

  • 在維度中,允許基於當前餘額進行篩選;必須爲每筆交易或至少每天更新餘額;
  • 作爲一個快照事實表,使用半兼容性度量餘額來允許對賬戶餘額進行時間序列分析。
+0

好的,謝謝你的回答。大聲思考......如果我採取這種方法,那麼每次餘額改變時都需要向維度添加一個新行(以允許時間點報告),或者我會更好地簡單地每次都覆蓋餘額並且只允許通過鑽取到事實表的時間點報告?如果我採取第一種方法,我想知道是否從事實表中獲得任何好處。如果我採取第二種方法,那麼用戶必須採用完全不同的方法來生成時間點報告,而不是當前報告。 – paulH

+0

我不建議將餘額視爲SCD II屬性,因爲這會導致您的客戶維度具有與事實表幾乎相同的基數。我只是每次更新到最後一個已知的餘額,而沒有記錄歷史。這就是賬戶餘額快照事實表的目的,爲餘額提供時間序列數據。 – nsousa

相關問題