如今对数据质量的要求愈来愈高,面对一个动辄上亿条数据的报表如何快速对它的数据质量作出分析呢?给你们分享下咱们测试时用到的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] 企业如何提高数据质量,实现业务增加?