文档章节

数据测试常用的 Data Profiling 方法

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

共有 人打赏支持
大数据之路
粉丝 1492
博文 516
码字总数 342415
作品 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

没有更多内容

加载失败,请刷新页面

加载更多

下一页

弹性工作制的魔咒

简评:你找到了一份完美的工作 —— 可以提前离开公司,还可以在晚上从家里回复邮件。既然如此,你为什么还会有那么强的负罪感呢? 或许是弹性工作制魔咒在作祟。 很多享受弹性工作制的人会始...

极光推送
1分钟前
0
0
KAFKA介绍(分布式架构)

Kafka是一个分布式的、可分区的、可复制的消息系统。它提供了普通消息系统的功能,但具有自己独特的设计。这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语: Kafka将消息以...

明理萝
7分钟前
0
1
os::NodeHandle::subscribe回调函数绑定对象

void Foo::callback(const std_msgs::Empty::ConstPtr& message){}Foo foo_object;ros::Subscriber sub = handle.subscribe("my_topic", 1, &Foo::callback, &foo_object); 参考: ht......

itfanr
8分钟前
0
0
React16.4 开发简书项目 从零基础入门到实战

React16.4 开发简书项目 从零基础入门到实战 关注我的订阅号下载 React16.4 开发简书项目 从零基础入门到实战

蜗牛奔跑
11分钟前
0
0
day57-20180815-流利阅读笔记-待学习

社恐怎么办?这个漫画或许能治愈你 毛西 2018-08-15 1.今日导读 近日,芬兰漫画家卡罗利娜·科尔霍宁创作的绘本《芬兰人的噩梦》在中国大火。一时间书中的主人公马蒂成为了人们茶余饭后热议的...

aibinxiao
15分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部