資料中臺 資料質量稽查的一些思考

2021-10-04 17:00:14 字數 2568 閱讀 7123

在日常工作中,我們經常會遇到各種資料問題。往往大專案會有專人去做持續的資料治理工作,而體量較小的專案其實也可以做一些輕資料治理-資料質量監控工作。

資料最終是要服務於業務價值的,那麼保證資料質量一定是資料分析和資料探勘結論有效性和準確性的基礎,也是資料驅動決策的前提。

資料質量,主要從四個方面進行評估,即完整性、準確性、一致性和及時性。

完整性:指資料的記錄和資訊是否完整,是否存在缺失的情況。資料的缺失主要包括記錄的缺失和記錄中某個字段資訊的缺失,兩者都會造成統計結果不準確,所以說完整性是資料質量最基礎的保障。簡單來講,如果要做監控,需要考慮兩個方面:一是,資料條數是否少了,二是,某些欄位的取值是否缺失。完整性的監控,多出現在日誌級別的監控上,一般會在資料接入的時候來做資料完整性校驗。

準確性:指資料中記錄的資訊和資料是否準確,是否存在異常或者錯誤資訊。一般準確性的監控多集中在對業務結果資料的監控,比如每週的來電量等。需要注意的是,資料準確性是建立在合理的業務口徑下,從口徑角度去統一才會獲得準確的結果。而不是僅僅認為從某個面去看這個資料是準確的就要做統一,不應從資料去逆推口徑

一致性:指同一指標在不同地方的結果是否一致,資料不一致的情況,多出現在資料系統達到一定的複雜度後,同一指標會在多處進行計算,由於計算口徑或者開發人員的不同,容易造成同一指標出現的不同的結果。

及時性:分離線與實時,離線方面主要考慮資料計算出來的速度是否夠快,監控可以體現在監控結果資料資料是否在指定時間點前計算完成。實時方面還需考慮資料是準時的,還是過時無效的。

資料質量監控之所以難做,主要是因為在資料的各個環節都會出現資料質量的問題。

拿脫機數倉舉乙個例子,將整個資料流程分為三個階段:

資料入庫階段,最容易出問題的就是完整性問題。一方面要特別注意數量是否陡增和陡降,另一方面,也要檢查不同欄位的的取值是否有丟失,比如來電時間和手機號字段是否出現大量空值等異常。

資料清洗加工階段,資料清洗的範圍侷限在資料倉儲的中間層(dwd至dws層)。在這一環節,最容易出現的是資料一致性和資料準確性的問題。資料中間層保障來資料是從統一出口而出,讓資料一起對或者一起錯。但是很難保證資料準確性的問題,因此在資料清洗階段需要盡量保障資料的準確性。

資料成果階段,主要是強調對外提供資料的過程,一般是從中間表中計算或直接取得的可展示資料。這裡是業務方和老闆最容易感知的到的地方,因此在這環節,主要關注的是資料準確性和資料及時性。

但由於資料質量問題是乙個持續治理的問題,又因為資料在各個階段都會出現問題,所以治理工作可以先從幾個主要的核心問題出發(如具體到指標口徑,核心字段)解決問題。

首先識別出業務核心資料,公司內外部的資料有很多,如果全部監控的話就會很浪費資源,所以首先需要篩選出對運營、服務、監管等應用場景成敗與否最至關重要的資料。

那如何識別出核心業務資料呢?

第一步:業務專家提出候選核心資料

業務專家為資料專家解釋業務過程中的商業邏輯,闡明該業務的輸入和輸出資料都有哪些。

第二步:業務評價標準為資料元素評分

進一步的篩選就需要乙個可以量化的科學體系,將標準的重要性得分和資料對於該標準的得分兩兩相乘再求和,便得到每個元素的總分,並根據這個總分把它們從高到低排序。

標準權重107

47評價標準

標準1標準2

標準3標準4

總分欄位1410

77187欄位2710

47205第四步:通過訊雜比分析,確定最終核心資料元素名單

根據訊雜比的定義說明訊雜比低的 cde 有更大的波動性。資料的波動性往往說明產生這個資料的業務過程有更大的不確定性、因此需要實時的監控。

接下來就是資料質量監測,簡單做的話,可以寫一些定時指令碼,掃錶出資料質量報告即可。

舉例一些比較常用的監控內容:

資料落地監控

資料掉0監控:實際擴充套件一下就是資料量閾值監控,少於某個量就告警

重複資料監控:很多表一定要監控重複資料的,這點至關重要。

資料量、指標值同比環比監控

重要枚值字段的離散值監控

業務規則監控

重要欄位的非空監控

資料對賬:體現到實時資料上,特別是kafka資料落地,必須要有乙個監控機制來知道我們的資料落地情況,離線資料同樣需要資料對賬,比如可以和業務庫來對比

可以利用hql,spark做乙個規則引擎,上面提到的都做到規則裡面,哪個表需要了就配一下就行了。

假設你的結果表要經過多層的中間表計算,你怎麼保證每個環節都是正確的,且最終結果是正確的?

從兩個點考慮

每一層**有 code review,保證**邏輯正常。

單獨一條計算流,對關鍵指標從原始資料直接計算結果,和日常的結果表做對比,發現不同則告警。這種方式也可以理解為是結果資料和源資料的對賬。

可以分為物理表級與字段級稽查方案。

表資料量監控

一張表的記錄數在乙個已知的範圍內,或者上下浮動不會超過某個閾值

跨表資料量對比

主要針對同步流程與數倉各層級之間,監控兩張表的資料量是否一致

字段空值數量檢測

某個欄位為空的記錄數在乙個範圍內,或者佔總量的百分比在某個閾值範圍內

字段值域檢測

某個欄位的值在乙個範圍內

字段重複值檢測

乙個或多個字段是否滿足某些規則

軟體內部質量的一些思考

內部質量指的是 的可讀性,可修改性,複雜度 圈複雜度,函式深度 可移植性等軟性質量。像bug率指的是外部質量 軟體的內部質量只對開發者有直接影響,對公司來說間接影響就是開發的維護成本。為什麼程式會有這麼多偶然複雜性呢?基本都會有這個問題,在傳統公司,每半年會有個大版本,質量改進可以放到乙個大版本中來...

資料分析的一些思考

是否可以從個體的金錢流動中發現社會執行機制,這是我感興趣的地方,此idea由集智百科的社群劃分演算法所引發。最近在試圖花大量時間讀懂ap算 文,大概半月到一月左右,之後看能否應用於二部圖聚類,避免聚類數目指定的問題。計畫先實現單機測試版,可行的話再分布式測試實際資料。金錢 物質等都可歸於資訊流動範疇...

資料字典的一些思考

資料字典適合只會增加或修改 包括啟用禁用 但資料量變動不大,且極少參與邏輯處理的簡單資料。例如 部門,只會根據部門篩選查詢的情況下,可以做到資料字典裡 但如果要根據部門不同,進不同的資料處理,或者需要儲存其他資訊的話,就不適合用資料字典了,因為我需要根據部門的code去特殊處理,而資料字典是可修改的...