對於每種情況,事實表的注意事項是什麼? 維度中的更改如何影響事實表以及它們如何在事實表中處理?爲數據倉庫選擇SCD類型時,您需要考慮哪些事項?
0
A
回答
2
答案的最簡單部分是關於事實表。沒有更改,無論維度類型如何。這是因爲事實和維度之間的關係是維度的替代關鍵。
對於維度,您需要確定哪些列可以更改,以及是否需要知道其以前的值。
如果沒有列可以更改,那麼SCD0通常是最合適的。你可能會用它來表示日曆,也許這裏的數據是不變的,除非我們恢復到中世紀的教皇而不是原子鐘:)
有時你不在乎以前的值,只有當前的值無論事實的年齡如何,價值都很重要。這裏的一個例子可能是客戶的電話號碼。我說「可能」,因爲這個意義取決於商業規則。這些是SCD1維度。
如果我們關心之前的歷史,我們需要在SCD2和SCD3之間做出選擇。
每次維度數據更改時,SCD2都會創建一個新行。業務關鍵保持不變,但與新時間段有關的事實將具有新的行替代關鍵。一個例子可能是客戶地址,其中客戶始終由業務密鑰C12345標識,但事實表指向ID 13,987和2465,表示該客戶轉移房屋,城鎮等時的地址變化。
SCD3在當前行中保持「前一個」值。如果我們需要知道的是一個字段的當前值及其以前的值,那麼每次該值發生更改時,我們不需要創建一個新行。更新SCD3維度需要將「當前」值轉換爲「先前」值,然後將新值寫入「當前」值。
現在,術語會變得有點混亂,因爲維度實際上可以將所有這些類型合併爲一個。考慮理論上的銀行賬戶尺寸:
- ID(代理鍵)
- 數(業務鍵)
- 帳戶名稱(SCD1,根據業務規則)
- 期初餘額(SCD0)
- 授權簽字人(SCD2,我們希望記錄誰在某個時間點被授權)
- 客戶關係經理(SCD3,我想要當前和以前的)
SCD類型告訴我在這些列中的任何一列發生變化時需要更新哪些內容。
- SCD0:該值永遠不會改變,不需要更新。
- SCD1:更新商業密鑰的所有行。
- SCD2:創建一個新的行每當這個值改變
- SCD3:更新所有以前和當前值業務鍵
金博爾進一步定義SCD4-6,但這些都是更常用。我不會深入細節,這個答案已經夠長:)
最後,還有基數的問題需要考慮。如果您的事實一次可能與多個維度行相關,那麼您可能需要一個Bridge表來處理關係。
總結:
- 事實表包含外鍵維度表的
- 尺寸行是通過代理鍵確定
- 有可能是給定的業務重點多維度行,取決於歷史要求。
相關問題
- 1. 在爲30 TB數據選擇Graph DB時需要考慮哪些因素
- 2. NSUserDefaults與CFPreferences,需要考慮的事項
- 3. 當需要記錄時,您會考慮哪種設計模式?
- 4. 數據倉庫設計(考慮到SSAS)
- 5. 數據倉庫類型2 scd員工維度和HR事實(Kimball's)
- 6. 在使用Microsoft Sync Framework時需要考慮哪些因素
- 7. 在開發SMTP客戶端時需要考慮哪些RFC?
- 8. 編碼時我需要考慮哪些安全問題?
- 9. 實施IDisposable時需要考慮哪些風險?
- 10. 使用HTML5shiv時需要考慮哪些問題?
- 11. 在開發IMAP客戶端時需要考慮哪些RFC?
- 12. 在開發POP3客戶端時需要考慮哪些RFC?
- 13. 從數據庫中加載海量數據 - 考慮哪些?
- 14. codeignitor - 您尚未選擇要連接的數據庫類型
- 15. 當從rails 1.x移植到rails 2時,需要考慮哪些主要事項2.x
- 16. 製作網站時需要考慮的事項?
- 17. 構建框架時需要考慮的事項
- 18. 更改Java文件的編碼時需要考慮的事項
- 19. 在Rails中使用會話時需要考慮的事項
- 20. 實施共享內存時需要考慮的事項
- 21. 爲安卓遊戲製作圖片需要考慮哪些分辨率參考?
- 22. 需要考慮w/microsoft technologies的事情?
- 23. 選擇大數據倉庫
- 24. Apache Shiro需要哪些數據庫表?
- 25. 開始構建數據訪問層。需要考慮的事情?
- 26. 您在設計tinyurl網站時需要考慮什麼?
- 27. 在GeneXus KBs中選擇.NET或Java生成器時需要考慮哪些優勢?
- 28. 選擇數據庫類型
- 29. 選擇合適的jQuery AJAX超時長度時應考慮哪些因素?
- 30. C++:數據類型,要使用哪些?