數據倉庫系列之數據品質管理
- 2019 年 10 月 3 日
- 筆記
數據品質一直是數據倉庫領域一個比較令人頭疼的問題,因為數據倉庫上層對接很多業務系統,業務系統的臟數據,業務系統變更,都會直接影響數據倉庫的數據品質。因此數據倉庫的數據品質建設是一些公司的重點工作。
一、數據品質
數據品質的高低代表了該數據滿足數據消費者期望的程度,這種程度基於他們對數據的使用預期。數據品質必須是可測量的,把測量的結果轉化為可以理解的和可重複的數字,使我們能夠在不同對象之間和跨越不同時間進行比較。 數據品質管理是通過計劃、實施和控制活動,運用品質管理技術度量、評估、改進和保證數據的恰當使用。
二、數據品質維度
1、準確性:數據不正確或描述對象過期
2、合規性:數據是否以非標準格式存儲
3、完備性:數據不存在
4、及時性:關鍵數據是否能夠及時傳遞到目標位置
5、一致性:數據衝突
6、重複性:記錄了重複數據
三、數據品質分析
數據品質分析的主要任務就是檢查數據中是否存在臟數據,臟數據一般是指不符合要求以及不能直接進行相關分析的數據。臟數據包括以下內容:
1、預設值
2、異常值
3、不一致的值
4、重複數據以及含有特殊符號(如#、¥、*)的數據
我們已經知道了臟數據有4個方面的內容,接下來我們逐一來看這些數據的產生原因,影響以及解決辦法。
第一、 預設值分析
產生原因:
1、有些資訊暫時無法獲取,或者獲取資訊的代價太大
2、有些資訊是被遺漏的,人為或者資訊採集機器故障
3、屬性值不存在,比如一個未婚者配偶的姓名、一個兒童的固定收入
影響:
1、會丟失大量的有用資訊
2、數據額挖掘模型表現出的不確定性更加顯著,模型中蘊含的規律更加難以把握
3、包含空值的數據回事建模過程陷入混亂,導致不可靠輸出
解決辦法:
通過簡單的統計分析,可以得到含有缺失值的屬性個數,以及每個屬性的未缺失數、缺失數和缺失率。刪除含有缺失值的記錄、對可能值進行插補和不處理三種情況。
第二、 異常值分析
產生原因:業務系統檢查不充分,導致異常數據輸入資料庫
影響:不對異常值進行處理會導致整個分析過程的結果出現很大偏差
解決辦法:可以先對變數做一個描述性統計,進而查看哪些數據是不合理的。最常用的統計量是最大值和最小值,用力啊判斷這個變數是否超出了合理的範圍。如果數據是符合正態分布,在原則下,異常值被定義為一組測定值中與平均值的偏差超過3倍標準差的值,如果不符合正態分布,也可以用原理平均值的多少倍標準差來描述。
第三、 不一致值分析
產生原因:不一致的數據產生主要發生在數據集成過程中,這可能是由於被挖掘的數據是來自不同的數據源、對於重複性存放的數據未能進行一致性更新造成。例如,兩張表中都存儲了用戶的電話號碼,但在用戶的號碼發生改變時只更新了一張表中的數據,那麼兩張表中就有了不一致的數據。
影響:直接對不一致的數據進行數據挖掘,可能會產生與實際相悖的數據挖掘結果。
解決辦法:注意數據抽取的規則,對於業務系統數據變動的控制應該保證數據倉庫中數據抽取最新數據
第四、 重複數據及特殊數據產生原因:
產生原因:業務系統中未進行檢查,用戶在錄入數據時多次保存。或者因為年度數據清理導致。特殊字元主要在輸入時攜帶進入資料庫系統。
影響:統計結果不準確,造成數據倉庫中無法統計數據
解決辦法:在ETL過程中過濾這一部分數據,特殊數據進行數據轉換。
四、數據品質管理
大多數企業都沒有一個很好的數據品質管理的機制,因為他們不理解其數據的價值,並且他們不認為數據是一個組織的資產,而把數據看作創建它的部門領域內的東西。缺乏數據品質管理將導致臟數據、冗餘數據、不一致數據、無法整合、性能底下、可用性差、責任缺失、使用系統用戶日益不滿意IT的性能。
在做數據分析之前一般都應該初步對數據進行評估。初步數據評估通過數據報告來完成的,數據報告通常在準備把數據存入數據倉庫是做一次,它是全面跨數據集的,它描述了數據結構、內容、規則、和關係的概況。通過應用統計方法返回一組關於數據的標準特徵,包括數據類型、欄位長度、列基數、粒度、值、格式、模式、規則、跨列和跨表的數據關係,以及這些關係的基數。初步評估報告的目的是獲得對數據和環境的了解,並對數據的狀況進行描述。數據報告應該如下:
編號 |
數據品質維度 |
檢查對象 |
檢查項 |
檢查項說明 |
1 |
有效性 |
數據行數 |
有效性檢查,單欄位、詳細結果 |
將輸入數據的值與一個既定的值域作比較 |
2 |
有效性 |
匯總數據 |
有效性檢查,卷積匯總 |
匯總有效性檢查的詳細結果,將卷積的有效/無效值計數和百分比與歷史水平作比較 |
3 |
重複性 |
數據行數 |
重複性檢查,單欄位、詳細結果 |
將輸入數據的值與一個既定的值域數據作比較,檢查數據是否重複 |
4 |
重複性 |
匯總數據 |
重複性檢查,卷積匯總 |
匯總重複性檢查的詳細結果,將卷積的重複數據計數和百分比與歷史水平作比較 |
5 |
一致性 |
數據行數 |
一致性剖析 |
合理性檢查,將記錄數據的分布,與國企填充相同的欄位的數據實例作比較 |
6 |
一致性 |
匯總數據 |
數據集內容的一致性,所表示的實體的不重複計數和記錄數比率 |
合理性檢查,將數據集內所表示的實體的不同值計數與閾值、歷史計數、或總記錄數作比較 |
7 |
一致性 |
匯總數據 |
數據集內容的一致性,二個所表示的實體的不重複計數的比率 |
合理性檢查,將重要欄位/實體的不同值計數的比率與閾值或歷史比率作比較 |
8 |
一致性 |
數據行數 |
一致性多列剖析 |
合理性檢查,為了測試業務規則,將跨多個欄位的值的記錄數分布和歷史百分比作比較 |
9 |
一致性 |
日期時間類型檢查 |
表內時序與業務規則的一致性 |
合理性檢查,將日期與時序的業務規則作比較 |
10 |
一致性 |
日期時間類型檢查 |
用時一致性 |
合理性檢查,將經過的時間與過去填充相同欄位的數據的實例作比較 |
11 |
一致性 |
數值類型檢查 |
數額欄位跨二級欄位計算結果的一致性 |
合理性檢查,將跨一個或多個二級欄位的數額列的計算結果、數量總和、佔總數的百分比和平均數量與歷史計數和百分比作比較,用限定符縮小比較結果 |
12 |
完整性/有效性 |
數據行數 |
有效性檢查,表內多列,詳細結果 |
將同一個表中相關列的值與映射關係或業務規則中的值作比較 |
13 |
完整性/完備性 |
接收數據狀態 |
數據集的完備性——重複記錄的合理性檢查 |
合理性檢查,將數據集中重複記錄佔總記錄的比例與數據集以前的實例的這個比例作比較 |
14 |
完備性 |
數據接收 |
數據集的完備性——將大小與過去的大小作比較 |
合理性檢查,將輸入的大小與以前運行同樣的過程時的輸入大小、文件記錄數據、消息的數目或速率、匯總數據等作比較 |
15 |
完備性 |
接收數據狀態 |
欄位內容的完備性——來自數據源的默認值 |
合理性檢查,將數據源提供的關鍵欄位的默認值記錄數據和百分比與一個既定的閾值或歷史數量和百分比作比較 |
16 |
完備性 |
接收數據狀態 |
基於日期標準的數據集的合理性 |
確保關鍵日期欄位的最小和最大日期符合某個合理性規則 |
17 |
完備性 |
數據處理 |
數據集的完備性——拒絕記錄的理由 |
合理性檢查,將出於特定原因而被刪除的記錄數據和百分比與一個既定的閾值或歷史數據和百分比作比較 |
18 |
完備性 |
數據處理 |
經過一個流程的數據集的完備性——輸入和輸出的利率 |
合理性檢查,將處理的輸入和輸出之間的比率與數據集以前的實例的這個比率作比較 |
19 |
完備性 |
數值類型檢查 |
欄位內容的完備性——匯總的數額欄位數的比率 |
數額欄位合理性檢查,將輸入和輸出數額欄位匯總數的比率與數據集以前的實例的比率作比較,用於不完全平衡 |
20 |
完備性 |
數據處理 |
欄位內容的完備性——推導的默認值 |
合理性檢查,將推導欄位的默認值記錄數和百分比與一個既定的閾值或歷史數量和百分比作比較 |
21 |
及時性 |
流程處理檢查 |
用於處理的數據的交付及及時性 |
把數據交付的實際時間與計劃數據交付時間作比較 |
22 |
及時性 |
數據處理 |
數據處理用時 |
合理性檢查,將處理用時和歷史處理用時或一個既定的時間限制作比較 |
23 |
及時性 |
流程處理檢查情況 |
供訪問的數據的及時可用性 |
將數據實際可供數據的消費者訪問的時間與計劃的數據可用時間作比較 |
24 |
一致性 |
數據模型 |
一個欄位內的格式一致性 |
評估列屬性和數據在欄位內數據格式一致性 |
25 |
一致性 |
數據模型 |
一個欄位默認值使用的一致性 |
評估列屬性和數據在可被賦予默認值的每個欄位中的默認值 |
26 |
完整性/一致性 |
數據模型 |
跨表的格式一致性 |
評估列屬性和數據在整個資料庫中相同數據類型的欄位內數據格式的一致性 |
27 |
完整性/一致性 |
數據模型 |
跨表的默認值使用的一致性 |
評估列屬性和數據在相同數據類型的欄位默認值上的一致性 |
28 |
完備性 |
總體資料庫內容 |
數據集的完備性——元數據和參考數據的充分性 |
評估元數據和參考數據的充分性 |
29 |
一致性 |
匯總數據日期檢查 |
按聚合日期匯總的記錄數的一致性 |
合理性檢查,把與某個聚合日期關聯的記錄數和百分比與歷史記錄數和百分比作比較 |
30 |
一致性 |
匯總數據日期檢查 |
按聚合日期匯總的數額欄位數據的一致性 |
合理性檢查,把按聚合日期匯總的數額欄位數據總計和百分比與歷史總計和百分比 |
31 |
一致性 |
總體資料庫內容 |
與外部基準比較的一致性 |
把數據品質測量結果與一組基準,如行業或國家為類似的數據建立的外部測量基準作比較 |
32 |
一致性 |
總體資料庫內容 |
數據集的完備性——針對特定目的的總體充分性 |
把宏觀資料庫內容(例如:數據域、記錄數、數據的歷史廣度、表示的實體)與特定數據用途的需求作比較 |
33 |
一致性 |
總體資料庫內容 |
數據集的完備性——測量和控制的總體充分性 |
評估測量和控制的成效 |
34 |
完整性/有效性 |
跨庫跨表數據檢查 |
有效性檢查,跨表,詳細結果 |
比較跨表的映射或業務規則的關係中的值,以保證數據關聯一致性 |
35 |
完整性/一致性 |
跨庫跨表數據檢查 |
跨表多列剖析一致性 |
跨表合理性檢查,將跨相關表的欄位的值的記錄數據分布於歷史百分比作比較,用於測試遵從業務規則的情況 |
36 |
完整性/一致性 |
跨庫跨表時序檢查 |
跨表的時序與業務規則的一致性 |
跨表合理性檢查,對日期值與跨表的業務規則進行時序比較 |
37 |
完整性/一致性 |
跨表的數值類型檢查 |
跨表數額列計算結果的一致性 |
跨表合理性檢查,比較相關表的匯總數額欄位總計,佔總計百分比、平均值或它們之間的比率 |
38 |
完整性/一致性 |
跨表的匯總數據日期檢查 |
按聚合日期匯總跨表數額列的一致性 |
跨表合理性檢查,比較相關表的按聚合日期匯總的數額欄位總計、佔總計百分比 |
39 |
完整性/完備性 |
跨庫跨表數據檢查 |
父/子參考完整性 |
確定父表/子表之間的參考完整性,以找出無父記錄的子記錄和值 |
40 |
完整性/完備性 |
跨庫跨表數據檢查 |
子/父參考完整性 |
確定父表/子表之間的參考完整性,以找出無子記錄的父記錄和值 |
41 |
完整性/完備性 |
接收數據狀態 |
數據集的完備性——重複數據刪除 |
確定並刪除重複記錄 |
42 |
完備性 |
數據接收 |
數據集的完備性——對於處理的可用性 |
對於文件,確認要處理的所有文件都可用 |
43 |
完備性 |
數據接收 |
數據集的完備性——記錄數與控制記錄相比 |
對於文件,對文件中的記錄數據和在一個控制記錄中記載的記錄數作比較 |
44 |
完備性 |
數據接收 |
數據集的完備性——匯總數額欄位數據 |
對於文件,對數額欄位的匯總值和在一個控制記錄中的匯總值作比較 |
45 |
完備性 |
接收數據狀態 |
記錄的完備性——長度 |
確保記錄的長度滿足已定義的期望 |
46 |
完備性 |
接收數據狀態 |
欄位的完備性——不可為空的欄位 |
確保所有不可為空的欄位都被填充 |
47 |
完備性 |
接收數據狀態 |
基於日期標準的數據集的完備性 |
確保關鍵日期欄位的最小和最大日期符合確定載入數據參數的規定範圍 |
48 |
完備性 |
接收數據狀態 |
欄位內容的完備性——接收到的數據缺少要處理的關鍵欄位 |
在處理記錄前檢測欄位的填充情況 |
49 |
完備性 |
數據處理 |
數據集的完備性——經過一個流程的記錄數據的平衡 |
整個數據處理過程的記錄數、被拒絕的記錄數據平衡,包括重複記錄數平衡,用於完全平衡的情況 |
50 |
完備性 |
數據處理 |
經過一個流程的數據集的完備性—— 數額欄位的平衡 |
整個過程中的數額欄位內容平衡,用於完全平衡的情況 |
五、總結
數據報告中列出了很多的檢查項都是圍繞數據品質管理相關的檢查,所以做一個數據分析項目前一定要知道客戶的數據品質情況。如果數據品質很糟糕,最終影響的是項目分析的實際效果。例如,用戶業務系統中客戶資訊只輸入了客戶名稱,要分析客戶類型就會存在預設值。當然有一些維度屬性我們可以通過事實表反算數據進入維度表來補充維度屬性。個人建議在數據分析項目中一定要對維度屬性進行評估,在項目處理前利用簡單的模型告訴客戶能夠出具的效果。
本文就講到這裡,文章中如有錯誤或誤導的地方歡迎大家指出糾正。 希望這篇文章能夠給大家帶來幫助,最後感謝大家的閱讀。下一篇數據倉庫系列之關於數據倉庫自動化技術。
歡迎大家關注我的公眾號:小黎子數據分析