數據質量管理—1、數據概要(Data Profiling)

數據質量(Data Quality)是數據分析結論有效性和準確性的基礎也是最重要的前提和保障。數據質量保證(Data Quality Assurance)是數據倉庫架構中的重要環節,也是ETL的重要組成部分。

我們通常通過數據清洗(Data cleansing)來過濾髒數據,保證底層數據的有效性和準確性,數據清洗一般是數據進入數據倉庫的前置環節,一般來說數據一旦進入數據倉庫,那麼必須保證這些數據都是有效的,上層的統計聚合都會以這批數據作爲基礎數據集,上層不會再去做任何的校驗和過濾,同時使用穩定的底層基礎數據集也是爲了保證所有上層的彙總和多維聚合的結果是嚴格一致的。但當前我們在構建數據倉庫的時候一般不會把所有的數據清洗步驟放在入庫之前,一般會把部分數據清洗的工作放在入庫以後來執行,主要由於數據倉庫對數據處理方面有自身的優勢,部分的清洗工作在倉庫中進行會更加的簡單高效,而且只要數據清洗髮生在數據的統計和聚合之前,我們仍然可以保證使用的是清洗之後保留在數據倉庫的最終“乾淨”的基礎數據。

前段時間剛好跟同事討論數據質量保證的問題,之前做數據倉庫相關工作的時候也接觸過相關的內容,所以這裏準備系統地整理一下。之前構建數據倉庫基於Oracle,所以選擇的是Oracle提供的數據倉庫構建工具——OWB(Oracle Warehouse Builder),裏面提供了比較完整的保證數據質量的操作流程,主要包括三塊:

  1. Data Profiling
  2. Data Auditing
  3. Data Correcting

數據概要分析(Data Profiling)

Data Profiling,其實目前還沒找到非常恰當的翻譯,Oracle裏面用的是“數據概要分析”,但其實“Profiling”這個詞用概要分析無法體現它的意境,看過美劇Criminal Minds(犯罪心理)的同學應該都知道FBI的犯罪行爲分析小組(BAU)每集都會對罪犯做一個Criminal Profiling,以分析罪犯的身份背景、行爲模式、心理狀態等,所以Profiling更多的是一個剖析的過程。維基百科對Data Profiling的解釋如下:

Data profiling is the process of examining the data available in an existing data source and collecting statistics and information about that data.

這裏我們看到Data Profiling需要一個收集統計信息的過程(這也是犯罪心理中Garcia乾的活),那麼如何讓獲取數據的統計信息呢?

熟悉數據庫的同學應該知道數據庫會對每張表做Analyze,一方面是爲了讓優化器可以選擇合適的執行計劃,另一方面對於一些查詢可以直接使用分析得到的統計信息返回結果,比如COUNT(*)。這個其實就是簡單的Data Profiling,Oracle數據倉庫構建工具OWB中提供的Data Profiling的統計信息更加全面,針對建立Data Profile的表中的每個字段都有完整的統計信息,包括:

記錄數、最大值、最小值、最大長度、最小長度、唯一值個數、NULL值個數、平均數和中位數,另外OWB還提供了six-sigma值,取值1-6,越高數據質量越好,當six-sigma的值爲7的時候可以認爲數據質量近乎是完美的。同時針對字段的唯一值,統計信息中給出了每個唯一值的分佈頻率,這個對發現一些異常數據是非常有用的,後面會詳細介紹。

看到上面這些Data Profile的統計信息,我們可能會聯想到統計學上面的統計描述,統計學上會使用一些統計量來描述一些數據集或者樣本集的特徵,如果我們沒有類似OWB的這類ETL工具,我們同樣可以藉助統計學的這些知識來對數據進行簡單的Profiling,這裏不得不提一個非常實用的圖表工具——箱形圖(Box plot),也叫箱線圖、盒狀圖。我們可以嘗試用箱形圖來表現數據的分佈特徵:

box-plot

箱線圖有很多種表現形式,上面圖中的是比較常見的一種箱線圖。一般中間矩形箱的上下兩邊分別爲數據集的上四分位數(75%,Q3)和下四分位數(25%,Q1),中間的橫線代表數據集的中位數(50%,Media,Q2),同時有些箱線圖會用“+”來表示數據集的均值。箱形的上下分別延伸出兩條線,這兩條線的末端(也叫“觸鬚”)一般是距離箱形1.5個IQR(Q3-Q1,即箱形的長度),所以上端的觸鬚應該是Q3+1.5IQR,下端的觸鬚是Q1-1.5IQR;如果數據集的最小值大於Q1-1.5IQR,我們就會使用最小值替換Q1-1.5IQR作爲下方延伸線末端,同樣如果最大值小於Q3+1.5IQR,用最大值作爲上方延伸線的末端,如果最大或者最小值超出了Q1-1.5IQR到Q3+1.5IQR這個範圍,我們將這些超出的數據稱爲離羣點(Outlier),在圖中打印出來,即圖中在上方觸鬚之外的點。另外,有時候我們也會使用基於數據集的標準差σ,選擇上下3σ的範圍,或者使用置信水平爲95%的置信區間來確定上下邊界的末端值。

其實箱線圖沒有展現數據集的全貌,但通過對數據集幾個關鍵統計量的圖形化表現,可以讓我們看清數據的整體分佈和離散情況。

既然我們通過Data profiling已經可以得到如上的數據統計信息,那麼如何利用這些統計信息來審覈數據的質量,發現數據可能存在的異常和問題,並對數據進行有效的修正,或者清洗,進而得到“乾淨”的數據,這些內容就放到下一篇文章吧。

原文

http://webdataanalysis.net/data-collection-and-preprocessing/data-quality-1/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章