數據質量監控背景
當我們把數據導入數據倉庫時,ETL中的每個步驟中都可能會遇到數據質量錯誤。比如與源系統的連接錯誤,抽取數據可能會失敗。由於記錄類型沖突,數據轉換可能會失敗。即使的ETL任務成功,提取的記錄中也會出現異常值,導致后續過程報錯。
那么如何主動捕獲這些錯誤,並確保數據倉庫中的數據質量?
接下來,我們來總結5條規則,在做ETL的過程中,使用這些規則來確保數據倉庫中的數據質量。
數據質量監控方法
1、校驗每天的記錄數
分析師遇到的最常見數據異常是其報告的輸出突然降至0。
我們通常會發現最后的罪魁禍首是當天沒有將新記錄添加到相應的表中。
一種簡單的檢查方法是確保每天一個表中的新記錄數>0
2、NULL和0值校驗
分析師常遇到的第二個問題是NULL或0值。我們要保證每天增量數據中的NULL或0值不能超過新增數據的99%。要檢查這一點,只需將一個循環腳本設置為每天用NULL或0計數一個表中的新記錄數。如果看到記錄數急劇增加,則可能存在轉換錯誤或源業務系統就存在異常。
3、每天新增的記錄數波動范圍
某一天你發現數據量出現大幅增長或下降,而規則1和2都已校驗通過。這種波動可能是正常的,比如電商行業某天的大促活動,或者社交軟件的營銷活動。但是也可能這就是異常的,是因為從源系統抽取了重復的記錄。所以針對此種情況,我們也要制定數據質量規則,檢查這些波動何時發生,並主動進行診斷。比如自動執行的一個簡單的SQL過程,每天檢查COUNT個新記錄是否在7天跟蹤平均值的誤差范圍內。閾值和誤差范圍可能因公司和產品而異,經驗值一般是加減25%。當然,你可也可以直接和前一天的數據對比,增量不超過前一天的1倍。
4、重復記錄數據校驗
不管是電商系統或者是社交系統或者是物聯網設備上報的數據,正常情況下都不會出現兩條完全一樣的記錄(包括ID,時間,值都一樣)。筆者曾遇到一個終端上報的兩條數據完全一樣的場景,導致我在做時間分段時候,划分不正確。所以,對數據值唯一性校驗是有必要的。
5、數據時間校驗
一般我們業務系統的數據都是帶有時間戳的,這個時間戳肯定比當前的時間要小。但是由於采集數據設備異常(業務系統異常),我們會碰到“未來時間”的數據,那如果我們以時間作為分區,后期可能就會出現異常的分析結果。當然,如果你的公司業務是跨國的,你需要考慮時差因素。
總結
這些只是我們維護數據倉庫時遇到的最常見的5個錯誤。可以將上述規則作一個checklist,做成任務每天例行檢查。出現以上問題是對ETL任務進行告警,並人工干預。每周或者沒有匯總質量報告,和團隊小伙伴或者業務側一起制定解決方案,不斷完善監控體系,只有這樣才能保證我們的業務分析結果是准確的,才能指導公司做出正確的決策。
當然,對於企業級數據質量監控系統,這些事遠遠不夠的,不同公司面臨的困難不一樣,方法也不一樣,可以參考業務的一些建議,制定自己的一套數據質量監控方案,這樣才能更好的落地實施。