在數據倉庫中,我們有一個緩慢變化的概念。我只是想知道爲什麼沒有'緩慢/快速變化的FACTs'的行話,因爲可以使用相同的Type1,Type 2度量來跟蹤FACT表中的變化。數據倉庫中是否存在緩慢變化的FACT概念
回答
按照DW神有3種類型的事實表
- 交易的:你有暗淡的參考基本測量。測量不捲起或彙總,大量的DIM關係
- 定期:在規定的時間段內彙總交易事實表的摘要。
- 累積快照:用2+定義的時間段
從這些相關的測量,我們至少有2個選項,這將導致非常類似於慢慢改變的事實桌上的東西。這完全取決於你的源系統的設置。
選項1:事務基於源系統
如果源系統跟蹤經由一系列交易(在值+變化值等,即,初始值+變化)的變化來測量,然後每個這些交易端在交易事實中。然後由週期性事實表使用,以反映「截至時間」措施。
例如,如果您的源系統追蹤賬戶內外的資金,您可能會擁有一個交易事實表,它幾乎反映了來源資金進/出表。您還將有一個週期性事實表,每個週期(本例中爲月份)都會更新以反映該期間帳戶的總價值。
週期性事實表是您的慢速變化事實表。
Source DW_Tansaction_Fact DW_Periodic_Fact --------------- -> ------------------- -> -------------------- Acnt1 Jan +10$ Acnt1 Jan +10$ Acnt1 Jan 10$ Acnt1 Feb -1 $ Acnt1 Feb -1 $ Acnt1 Feb 9$ Acnt1 Apr +2 $ Acnt1 Apr +2 $ Acnt1 Mar 9$ Acnt1 Apr 11$
選項2:CRUD /覆寫源系統
它更可能是你有一個源系統,可以讓用戶直接更新/更換業務度量。在任何時候,根據源系統,每個度量值都有且只有一個值。您可以在您的ETL過程中通過一些聰明的技巧來完成此交易,但您唯一會得到的ETL計劃限制的交易窗口。
在這種情況下,您可以使用週期事實表或累積事實表。
讓我們堅持使用我們的帳戶示例,但不是交易,表格只是針對每個帳戶存儲金額值。這根據源系統中的要求進行了更新,因此對於Acnt1,1月份的價格爲10 $,2月9日和4月11日$
堅持交易和期間事實表,我們最終會收到此數據4月底)。再次,週期性事實表是您慢慢變化的事實表。
DW_Tansaction_Fact DW_Periodic_Fact ------------------- -> -------------------- Acnt1 11$ Acnt1-Jan-10$ Acnt1-Feb-09$ Acnt1-Mar-09$ Acnt1-Apr-11$
但是我們也可以使用一個Accumulating Fact表,它可以包含給定年份的所有月份值。
DW_Accumlative_Fact_CrossTab Year Acnt Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec 2001 Acnt1 10 9 9 11 - - - - - - - -
或較3型十歲上下的版本
DW_Accumlative_Fact_CrossTab Acnt Year YearStartVal CurrentVal Acnt1 2001 10 9
Kindof相關
根據我的經驗,這種問題出現時,這個共同的業務場景:
- 有一個數據庫核心業務系統。
- 業務週期性問題核心業務系統按時間段彙總值的報表
- 核心業務系統允許追溯更新數據 - 這是通過覆蓋值來處理的。
- 業務要求知道爲什麼6月份同一報告中的1月數據與2月份報告中的1月數據不符。
注意,你現在要處理四套的時間(報告的初期,測量在初始階段,報告期,本期測量的日期),這將是努力不夠爲您講解更不用說您的最終用戶瞭解。
試着退後一步,向您的最終用戶解釋哪些業務量度會隨着時間而改變,傾聽他們想要的結果並據此建立您的事實。請注意,您最終可能會得到多個用於相同度量的事實數據表,即可以。
參考:
- 1. GWT緩存概念
- 2. 存儲過程概念是否存在於核心數據中?
- 3. 在數據倉庫中存儲變化緩慢的屬性的最佳方式是什麼?
- 4. Google Bigtable是否是多租戶數據庫的概念?
- 5. Git的本地倉庫和遠程倉庫 - 混淆概念
- 6. 數據庫設計概念
- 7. 關係數據庫概念
- 8. 數據庫編程概念
- 9. 選民是否存在優先概念?
- 10. MySQL是否具有「this」數據庫的概念?
- 11. 冷緩存和熱緩存概念是什麼意思?
- 12. 在Spring Hibernate中的「即時倉庫」概念JPA
- 13. JQuery Games中的場景變化概念
- 14. 數據倉庫ETL緩慢更改維度中的主鍵?
- 15. 瞭解Redis,一般緩存的概念
- 16. 內存數據庫的概念以及如何查看我的數據是否正在HSQL DB中填充?
- 17. 「通用概念」的數據庫設計
- 18. 在NSViewController中是否存在viewcontroller遏制的概念
- 19. 庫存概念 - 製作正確的數據庫
- 20. 數據倉庫的變化很小
- 21. 在SQL Server數據倉庫中的Dimension&Fact表之間是否有明確的最佳實踐?
- 22. 是否有可能在Realm移動數據庫中使用「Group by」概念
- 23. 用戶配置文件的概念是否存在於SonarQube中?
- 24. WInforms中是否存在會話管理的概念
- 25. php修飾符和緩存概念
- 26. JasperReports和數據庫設計概念
- 27. 基本關係數據庫概念
- 28. 將權限概念帶入數據庫
- 29. 數據視圖概念/庫/模式?
- 30. 概念:嘲諷數據庫python
我不'噸認爲這個概念將具有意義。 事實總是在變化,是某種測量的結果,某種結果。我們會自動跟蹤事實的變化。維度並非如此,(粗略地說)是標識事實的標籤。因此,標籤含義的變化可能是一個問題,所以我們可能需要跟蹤這些「變化的維度」。 – momobo
@momobo糾正如何?說更新的訂單數量和類似的 – Ronnis
糾正可以處理更新事實,當它是一個簡單的錯誤更正(可能是性能沉重)。或者添加一個糾正因子。保留修正歷史也是可能的(我現在看到你的觀點),但我從未做到過。我認爲另一個時間維度和糾正時間應該是要走的路。 – momobo