淺談數據質量管理
Part 01、 什么是數據質量管理
數據質量管理,是DAMA數據管理知識體系指南中數據治理領域非常重要的一部分(圖1 所示),主要是指對數據從計劃、獲取、存儲、共享、維護、應用、消亡生命周期的每個階段里可能引發的各類數據質量問題,進行識別、度量、監控、預警等一列管理活動,并通過改善和提高組織的管理水平使得數據質量獲得進一步提高。
Part 02、 數據質量問題原因及評價標準
數據在計劃、獲取、存儲、共享、維護等各個環節都有可能引發數據質量問題,主要原因分為幾下幾個方面:
數據不完整:由于企業信息系統的孤立使用,各個業務系統或模塊按照各自的需要錄入系統,沒有統一的錄入工具和數據出口,業務系統不需要的信息就不錄,造成同樣的數據有不同的信息屬性,再或者取數動作不規范,或許某個數據本身就是采集過來的,本來就是不完整的,數據完整性無法得到保障。
數據不合規:沒有統一的數據管理平臺和數據源頭,數據生命周期管理不完整,同時企業各信息系統的數據錄入環節過于簡單且手工參與較多,就數據本身而言,缺少是否重復、合法、對錯等校驗環節,導致各個信息系統的數據不夠準確,格式混亂,各類數據難以集成和統一,沒有質量控制導致海量數據因質量過低而難以被利用。
數據時效性差:大數據項目對數據的時效性要求是非常嚴格的,比如離線項目是每天計算前一天的數據,如果前一天的源數據因為某些原因沒有被及時的傳輸過來,這樣就會嚴重影響后面指標的計算以及報表的生成。
數據冗余:各個信息系統針對數據的標準規范不一、編碼規則不一、校驗標準不一、且部分業務系統針對數據的驗證標準缺失,造成了企業頂層視角的數據出現“一物多碼,一碼多物”等現象。
數據不精確:數據的精確性也是指數據的準確性,是指數據是否與目標值匹配;比如一個訂購金額,如果遠遠大于或低于常規的數值,那么我們就要懷疑這個的數據的精確性不夠。
那么如何判斷數據質量的優劣?從哪些方面可以評估數據質量?在實踐中,我們可以通過數據質量評估維度進行評估。數據質量評估維度是數據質量的特征之一,它們為度量和管理數據的質量提供了一種途徑和標準。在一個具體的數據質量項目中,要選擇最適用于業務需求的數據質量維度進行測量,以評價數據的質量。
在《GB/T36344-信息技術數據質量評價指標》中,國家標準化管理委員會明確了數據質量評價指標框架如圖2所示。
圖2
- 規范性:數據符合數據標準、數據模型、業務規則、元數據或權威參考數據的程度。
- 完整性:按照數據規則要求,數據元素被賦予數值的程度。
- 準確性:數據準確表示其所描述的真實實體(實際對象)真實值的程度。
- 一致性:數據與其他特定上下文中使用的數據無矛盾的程度。
- 時效性:數據在時間變化中的正確程度。
- 可訪問性:數據能被訪問的程度。
Part 03、目前常用的數據質量管理工具
3.1 Apache Griffin
Griffin是一個開源的大數據質量解決方案, 2016年12月07日進入 Apache 孵化,由eBay開源,它支持批處理和流模式兩種數據質量檢測方式,是一個基于Hadoop和Spark建立的數據質量服務平臺 (DQSP),如圖3所示。它提供了一個全面的框架來處理不同的任務,例如定義數據質量模型、執行數據質量測量、自動化數據分析和驗證,以及跨多個數據系統的統一數據質量可視化。
圖3
Griffin由Define、Measure、Analyze三大模塊組成,各個部分的職責如下:
Define:主要負責定義數據質量統計的維度,比如數據質量統計的時間跨度、統計的目標(源端和目標端的數據數量是否一致,數據源里某一字段的非空的數量、不重復值的數量、最大值、最小值、top5的值數量等)。
Measure:主要負責執行統計任務,生成統計結果。這一塊主要技術棧使用的是Livy+ Spark,Spark作為執行引擎,Apache Livy基于Spark的開源REST服務,它能夠通過REST的方式將代碼片段或是序列化的二進制代碼提交到Spark集群中去執行。
Analyze:主要負責保存與展示統計結果。
-現狀分析:
- Griffin的社區并不太活躍,現在最新版本還是0.6,網上技術文檔并不算太多, 擔心出了問題比較難找到解決方案。
- 從技術棧的角度Livy過于小眾,數據存儲方面ES的運維對于一個小團隊來說也比較麻煩。
- 針對數據檢查任務的調度和數據檢查結果的后續處理方面,Griffin一般還需要和現有的大數據調度平臺打通,也有一定的工作量。
3.2 Apache DolphinScheduler
在2022年4月22日,Apache DolphinScheduler 正式宣布 3.0.0 alpha 版本發布,此版本中用戶期待已久的數據質量校驗應用功能上線,實現了數據質量的原生支持,支持在工作流運行前進行數據質量的校驗,可由用戶自定義數據質量的校驗規則,實現了任務運行過程中對數據質量的嚴格控制和運行結果的監控,如圖4所示。
圖4
-現狀分析:
- DolphinScheduler作為一個任務調度系統,具備了執行任務的基礎,不需要引入新的組件來提交任務;
- 數據質量檢查可以作為一種任務類型無縫接入到工作流當中;
- 無需新增其他服務來增加運維的難度;
- 可以很好地與社區共建開源。
基于以上現狀,DolphinScheduler是一款比較適合與業務相結合進行二次開發的數據質量工具,但是目前僅適用于離線數據驗證。
3.3 Deequ
Deequ是一個來自AWS實驗室的開源工具,可以用來驗證許多大型生產數據集的質量。數據生產者可以通過添加和編輯數據質量約束,使得系統定期計算數據質量指標。當數據質量約束成功時將數據集發布給消費者,錯誤時可停止數據集的發布,并通知生產者采取行動,這樣數據質量問題就不會傳播到消費者的數據管道,從而減少它們的爆炸半徑。主要組件如圖5所示。
圖5
- 指標計算(Metrics Computation),Deequ 計算數據質量指標,即完整性、最大值或相關性等統計數據。Deequ 使用 Spark 從 Amazon S3 等源中讀取數據,并通過一組優化的聚合查詢計算指標。
- 約束驗證(Constraint Verification),作為用戶,可以專注于定義一組要驗證的數據質量約束,Deequ負責利用該約束在數據集上進行計算,進而生成數據質量報告,其中包含約束驗證的結果。
- 約束建議(Constraint Suggestion),可以選擇自定義所需的數據質量約束,或使用自動約束建議方法來分析數據以推斷有用的約束。
-現狀分析:
- Deequ和spark關聯密切,使用spark技術框架的可以考慮。
- 社區較為活躍,使用的較多。
3.4 Great Expectations
Great expectations是一個python的工具包,Python近幾年在數據分析領域大放異彩,而Python本身對于數據質量問題的解決一直是一個大問題。而Great expectations正好彌補了這方面的不足。對于一些對Python支持良好的公司,可以優先選擇Great expectations來進行數據質量的解決方案建設。
-現狀分析:
- 版本更新快,Bug修復也快。
- 社區非常活躍,值得長期關注。