數據質量一直是數據倉庫領域一個比較令人頭疼的問題,因為數據倉庫上層對接很多業務系統,業務系統的臟數據,業務系統變更,都會直接影響數據倉庫的數據質量。因此數據倉庫的數據質量建設是一些公司的重點工作。
一、數據質量
數據質量的高低代表了該數據滿足數據消費者期望的程度,這種程度基於他們對數據的使用預期。數據質量必須是可測量的,把測量的結果轉化為可以理解的和可重復的數字,使我們能夠在不同對象之間和跨越不同時間進行比較。 數據質量管理是通過計划、實施和控制活動,運用質量管理技術度量、評估、改進和保證數據的恰當使用。
二、數據質量維度
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 |
完備性 |
數據處理 |
經過一個流程的數據集的完備性—— 數額字段的平衡 |
整個過程中的數額字段內容平衡,用於完全平衡的情況 |
五、總結
數據報告中列出了很多的檢查項都是圍繞數據質量管理相關的檢查,所以做一個數據分析項目前一定要知道客戶的數據質量情況。如果數據質量很糟糕,最終影響的是項目分析的實際效果。例如,用戶業務系統中客戶信息只輸入了客戶名稱,要分析客戶類型就會存在缺省值。當然有一些維度屬性我們可以通過事實表反算數據進入維度表來補充維度屬性。個人建議在數據分析項目中一定要對維度屬性進行評估,在項目處理前利用簡單的模型告訴客戶能夠出具的效果。
本文就講到這里,文章中如有錯誤或誤導的地方歡迎大家指出糾正。 希望這篇文章能夠給大家帶來幫助,最后感謝大家的閱讀。下一篇數據倉庫系列之關於數據倉庫自動化技術。
歡迎大家關注我的公眾號:小黎子數據分析