如今對數據質量的要求愈來愈高,面對一個動輒上億條數據的報表如何快速對它的數據質量作出分析呢?給你們分享下咱們測試時用到的Data Profiling方法。測試
Data 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,個人理解就是經過對數據自身統計值分析來反映出數據質量問題。大數據
平常工做中,咱們拿到一個報表都會對每張表作Analyze,一方面是爲了讓優化器能夠選擇合適的執行計劃,另外一方面對於一些查詢能夠直接使用分析獲得的統計信息返回結果,好比COUNT(*)。這個其實就是簡單的Data Profiling。 Data Profiling實際上是對報表各方面信息的一個收集統計信息的過程,而後根據收集到的信息對報表的數據狀況作出斷定,找到問題點從而更好保證數據質量。優化
數據的統計信息除了基本的記錄條數、最大值、最小值、最大長度、最小長度、惟一值個數、NULL值個數、平均數和中位數、針對字段的枚舉和分佈頻率外,還包括相關性分析、主鍵相關分析和血緣分析等,將之分別作了一下分類以下圖:spa
下面對它們分別進行詳細介紹:.net
對於全部字段都適合,分析字段的值是否知足指定閥值、分析字段值的統計量(最大、最小、中位數、均值、方差等)翻譯
常見BUG:最大、最小值越界、發現有NULL值;設計
分析字段中不一樣值的個數(好比 UV),這種方法更適合於維度類指標orm
常見BUG: 對於度量類指標數據比較集中,基數下記錄個數過大或太小等blog
分析字段真實值是否符合定義的數據類型 ,通常在數據預覽時對數據內容作下評估get
分析各個維度值在整體數據中分佈狀況,根據經驗值能從整體上看出數據的質量狀況
常見BUG: 數據分佈不符合預期;度量類指標數據過度集中,發現有NULL值過多
分析檢測值在必定週期內的數值波動是否在指定閥值內(如日環比,周同比),這個更多用在線上數據監控中,可分析檢測值在必定週期內的數值波動是否在指定閥值內,如出現大幅波動須要關注。
分析字段中是否包含異常數據,例如空、NULL,另一些約定異常值的數據的數量
常見BUG:col存在異常值,約定異常值數據過多,如-99,-1,NULL等
分析字段或字段之間是否知足指定的業務規則,這個須要理解本表內字段間的業務邏輯關係,如pv>=uv
常見BUG:字段間的業務邏輯未知足預期
分析表數據中主鍵是否惟一,這個很是重要,若是主鍵不惟一會給下游表的計算帶來無窮的困擾。
常見BUG:主鍵不惟一;主鍵爲NULL
分析表的基礎統計量如分區、行數、大小,若是有對照表,最好參考對照表,如無對照表這個更可能是靠經驗值,分析此表的業務對於表的基礎統計量是否符合預期進行判斷。
常見BUG:表基礎統計量不符合預期
分析事實表中的外鍵是否都能在維表中關聯到
常見bug:表裏的外鍵沒有在對應維表中找到對應,外鍵自己爲NULL或異常值
分析表和字段從數據源到當前表的血緣路徑,以及血緣字段之間存在的關係是否知足,關注的數據的一致性以及表設計的合理性。
[1] 【筆記】怎麼辨別渠道做弊 ——數據分析篇
http://www.jianshu.com/p/aad683390662
[2] 怎樣辨別渠道做弊—數據分析篇
[3] 【大數據】數據測試經常使用的Data Profiling方法
http://www.taobaotest.com/blogs/2552
[4] 漫談數據質量監控
http://www.javashuo.com/article/p-wjfcqzfa-cs.html
[5] 企業如何提高數據質量,實現業務增加?