文档章节

数据测试常用的 Data Profiling 方法

大数据之路
 大数据之路
发布于 2015/06/01 00:56
字数 1189
阅读 459
收藏 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

共有 人打赏支持
大数据之路
粉丝 1521
博文 516
码字总数 342870
作品 0
武汉
架构师
常用 Java Profiling 工具的分析与比较

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

红薯
2010/08/16
4.5K
7
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
让你了解 instruments 模版

在Instruments中,您将使用分析模板来分析您的应用程序(图:1-1)。性能分析模板是一个已经预先配置了仪器和设置的跟踪文档,用于执行常见的跟踪。在启动instruments,创建新文档或从Xcode...

夜空下最亮的亮点
01/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Docker Compose 原理

Docker 的优势非常明显,尤其是对于开发者来说,它提供了一种全新的软件发布机制。也就是说使用 docker 镜像作为软件产品的载体,使用 docker 容器提供独立的软件运行上下文环境,使用 dock...

Java干货分享
28分钟前
0
0
解决过滤器中设置cookie无效的问题

解决过滤器中设置cookie无效的问题 代码现场 filterChain.doFilter(sessionSyncRequestWrapper, response);Cookie emailCook = WebServletUtil.getSelectedCookie(request.getCookies(), ......

黄威
39分钟前
0
0
Hbase Schema 设计注意事项及最佳实践总结

一个列族的所有列在硬盘上存放在一起,使用这个特性可以把不同访问模式的列放在不同列族,以便隔离它们。这也是HBase被称为面向列族的存储(column-family-oriented store)的原因。 1、RowKe...

PeakFang-BOK
51分钟前
1
0
t-io给群组成员内置排序

1、实现比较器Comparator<ChannelContext> package xxx;import java.util.Comparator;import java.util.Objects;import java.util.Set;import java.util.TreeSet;import or......

talent-tan
55分钟前
2
0
px、em、rem 区别及作用

原文 起因: 一开始是为了解决页面放大时,字体不跟着放大的 bug。现在多用用于统一规范。 概念: 任意浏览器的默认字体高都是16px。所有未经调整的浏览器都符合: 1em=16px。那么12px=0.75em...

lemos
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部