[英]Data warehouse updating data
我目前正在設計一個基於星型模式的倉庫,並且對處理未來和過去數據的技術有一些疑問。
源系統中的某些事件也可以用於未來。 例如,一名員工正在為未來申請休假。 企業希望看到用於規划的未來數據,但本質上這可能會改變。
同樣,如果過去的數據發生變化,例如幾天后由於錯誤而修改了銷售,您在倉庫中如何處理?
將其視為“過去”和“未來”數據有點誤導 - 因為正如您所說,有充分的理由在初始上傳到數據倉庫后可能需要更新這兩種類型的數據。
我建議將這些數據視為“計划的”和“實際的”休假。 希望通過這樣做,這兩種類型都可能與數據倉庫中的加載和更新相關變得更加清晰。
這是因為計划休假和實際休假都可能需要報告和分析(因此將這兩種類型都加載到 DW 中是相關的)。 此外,您的計划休假可能會更改,並且您的實際休假可能需要在初始上傳后在源系統中更正(因此更新 DW 中的兩種類型也很重要)。
計划休假數據是否應該進入數據倉庫?
這是主觀的,完全取決於您的用例。
從廣義上講,數據倉庫的目的是有效地存儲和查詢大量數據。 在實踐中,這通常用於業務報告(例如月末、年末)和分析。
因此,計划休假數據是否與上述相關取決於您的組織和用戶的上下文,以及對在數據倉庫中存儲該數據有(或沒有)什么業務價值的理解。
當源數據發生變化時,您如何管理更新?
閱讀James Serra的這篇博文。 雖然它有點過時(發布於 2011 年),但總體而言,這些概念仍然是最新的,並且它很好地解釋了一些關鍵概念。
從文章中,有兩種方法可以將數據加載到數據倉庫中:
- 完全提取:所有數據完全從源系統中提取。 由於此提取反映了源系統上當前可用的所有數據,因此無需跟蹤自上次成功提取以來對源數據的更改。
- 增量提取:僅提取從歷史特定時間點開始發生變化的數據。 該時間點可能是最后一次提取的時間,也可能是會計期間的最后一天等業務事件。 要識別此增量更改,必須有可能識別自此特定時間點以來發生的所有更改信息。
完全提取很簡單,但對於大量數據來說效率低下。
增量提取更有效,但需要一種方法來識別增量 - 即源數據中的新條目,或者自上次上傳以來已更改或刪除的條目。 James 的文章概述了一些方法。 這篇關於 SQL Server 中的更改跟蹤的文章也可能會有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.