文档章节

数据测试常用的 Data Profiling 方法

大数据之路
 大数据之路
发布于 2015/06/01 00:56
字数 1189
阅读 477
收藏 3

    现在对数据质量的要求越来越高,面对一个动辄上亿条数据的报表如何快速对它的数据质量做出分析呢?给大家分享下我们测试时用到的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值个数、平均数和中位数、针对字段的枚举和分布频率外,还包括相关性分析、主键相关分析和血缘分析等,将之分别做了一下分类如下图:

下面对它们分别进行详细介绍:

1、值域分析:

对于所有字段都适合,分析字段的值是否满足指定阀值、分析字段值的统计量(最大、最小、中位数、均值、方差等)

常见BUG:最大、最小值越界、发现有NULL值;

2、基数分析:

分析字段中不同值的个数(比如 UV),这种方法更适合于维度类指标

常见BUG: 对于度量类指标数据比较集中,基数下记录个数过大或过小等

3、类型监测:

分析字段真实值是否符合定义的数据类型 ,一般在数据预览时对数据内容做下评估

4、数据分布:

分析各个维度值在总体数据中分布情况,根据经验值能从总体上看出数据的质量情况

常见BUG: 数据分布不符合预期;度量类指标数据过分集中,发现有NULL值过多

5、波动监测:

分析检测值在一定周期内的数值波动是否在指定阀值内(如日环比,周同比),这个更多用在线上数据监控中,可分析检测值在一定周期内的数值波动是否在指定阀值内,如出现大幅波动需要关注。

6、异常值监测:

分析字段中是否包含异常数据,例如空、NULL,另外一些约定异常值的数据的数量

常见BUG:col存在异常值,约定异常值数据过多,如-99,-1,NULL等

7、功能相关性分析:

分析字段或字段之间是否满足指定的业务规则,这个需要理解本表内字段间的业务逻辑关系,如pv>=uv

常见BUG:字段间的业务逻辑未满足预期

8、主键唯一性分析:

分析表数据中主键是否唯一,这个非常重要,如果主键不唯一会给下游表的计算带来无穷的困扰。

常见BUG:主键不唯一;主键为NULL

9、表基础分析:

分析表的基础统计量如分区、行数、大小,如果有对照表,最好参考对照表,如无对照表这个更多是靠经验值,分析此表的业务对于表的基础统计量是否符合预期进行判断。

常见BUG:表基础统计量不符合预期

10、外键分析:

分析事实表中的外键是否都能在维表中关联到

常见bug:表里的外键没有在对应维表中找到对应,外键本身为NULL或异常值

11、血缘分析:

分析表和字段从数据源到当前表的血缘路径,以及血缘字段之间存在的关系是否满足,关注的数据的一致性以及表设计的合理性。

12、题外话:怎样通过数据分析辨别渠道作弊?

13、Refer

[1] 【笔记】怎么辨别渠道作弊 ——数据分析篇

http://www.jianshu.com/p/aad683390662

[2] 怎样辨别渠道作弊—数据分析篇

http://t.cn/R26hUXi

[3] 【大数据】数据测试常用的Data Profiling方法

http://www.taobaotest.com/blogs/2552

本文转载自:http://www.taobaotest.com/blogs/2552

共有 人打赏支持
大数据之路
粉丝 1542
博文 516
码字总数 343694
作品 0
武汉
架构师
私信 提问
PgSQL · 案例分享 · PostgreSQL 性能诊断指南

背景 数据库的性能优化是一个非常经典的话题,数据库的优化手段以及优化的角度也各不相同。 例如,可以从OS内核、网络、块设备、编译器、文件系统、SQL、数据库参数、业务逻辑、源码等各个方...

阿里云RDS-数据库内核组
2016/12/08
0
0
常用Java性能测试工具的分析与对比

虽然市场上的 Java Profiler 工具有不少,但是基本功能大多相似,本节首先对这些基本功能进行介绍。 遥测(Telemetry):遥测是一种用来查看应用程序运行行为的最简单的方法。通常会有多个视...

lanmeimei
2014/03/18
0
0
Xcode有四种build for。。。

Xcode有四种build for 分别是: build for Running build for Testing build for Profiling build for Archiving Running最常用的一种,在模拟器或者设备上运行 Testing单元测试所用 Profilin...

Redding
2013/01/07
0
0
常用 Java Profiling 工具的分析与比较

在 Java 程序的开发过程中,不可避免地会遇到内存使用、性能瓶颈等问题。Java Profiler 工具能帮助开发人员快速、有效地定位这些问题,因此成为了 Java 开发过程中的一个重要工具。目前市场上...

红薯
2010/08/16
4.8K
7
PostgreSQL PostGIS point join polygon (by ST_xxxx) - pglz_decompress 性能优化

背景 在空间数据中,通常会有轨迹、点、面的数据,假设有两张表,一张为面的表,一张为点的表,使用包含 ST_xxxx(c.geom, p.geom) 来进行JOIN(例如以面为单位,聚合统计点的数量)。 pic 本...

pg小助手
10/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

CentOS配置Tomcat监听80端口,虚拟主机

Tomcat更改默认端口为80 更改的配置文件是: /usr/local/tomcat/conf/server.xml [root@test-a ~]# vim /usr/local/tomcat/conf/server.xml # 找到 Connector port="8080" protocol="HTTP/1......

野雪球
今天
5
0
《稻盛和夫经营学》读后感心得体会3180字范文

《稻盛和夫经营学》读后感心得体会3180字范文: 一代日本经营之圣稻盛和夫凭借刻苦勤奋的精神以及深植于佛教的商业道德准则,成为了“佛系”企业家的代表人物。在《稻盛和夫经营学》“领导人...

原创小博客
今天
3
0
java框架学习日志-5(常见的依赖注入)

依赖注入(dependency injection) 之前提到控制反转(Inversion of Control)也叫依赖注入,它们其实是一个东西,只是看的角度不同,这章详细说一下依赖注入。 依赖——指bean对象创建依赖于...

白话
今天
4
0
红外接收器驱动开发

背景:使用系统的红外遥控软件没有反应,然后以为自己接线错误,反复测试,结果烧坏了一个红外接收器,信号主板没有问题。所以自己开发了一个红外接收器的python驱动。接线参见https://my.os...

mbzhong
今天
2
0
ActiveMQ消息传送机制以及ACK机制详解

AcitveMQ是作为一种消息存储和分发组件,涉及到client与broker端数据交互的方方面面,它不仅要担保消息的存储安全性,还要提供额外的手段来确保消息的分发是可靠的。 一. ActiveMQ消息传送机...

watermelon11
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部