文档章节

数据测试常用的 Data Profiling 方法

大数据之路
 大数据之路
发布于 2015/06/01 00:56
字数 1189
阅读 416
收藏 3
点赞 0
评论 0

    现在对数据质量的要求越来越高,面对一个动辄上亿条数据的报表如何快速对它的数据质量做出分析呢?给大家分享下我们测试时用到的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

© 著作权归作者所有

共有 人打赏支持
大数据之路
粉丝 1475
博文 501
码字总数 342513
作品 0
武汉
架构师
常用Java性能测试工具的分析与对比

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

lanmeimei ⋅ 2014/03/18 ⋅ 0

常用 Java Profiling 工具的分析与比较

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

红薯 ⋅ 2010/08/16 ⋅ 7

PgSQL · 案例分享 · PostgreSQL 性能诊断指南

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

阿里云RDS-数据库内核组 ⋅ 2016/12/08 ⋅ 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

gprof和oprofile

GNU gprof能够打印出程序运行中各个函数消耗的时间,可以帮助程序员找出众多函数中耗时最多的函数。产生程序运行时候的函数调用关系,包括调用次数,可以 帮助程序员分析程序的运行流程。有 ...

AlphaJay ⋅ 2012/03/26 ⋅ 0

让你了解 instruments 模版

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

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

用profile和oprofile监视视linux性能

profile使用: profile功能是架构无关的,可以用来监视linux内核的4项功能,即: 11 #define CPUPROFILING 1 12 #define SCHEDPROFILING 2 13 #define SLEEPPROFILING 3 14 #define KVMPROF......

有些服务器 ⋅ 2015/07/15 ⋅ 0

统计mysql里每条SQL语句执行的时间

概述 通常为了测试一些工具的性能,不得不用数据说话。数据可以客观地证实一些东西。例如关于一些数据库中间件的性能,对于一个初学者来说只会看到表面上的夸词。我们不得不去证实,那就用具...

buglife ⋅ 2014/09/19 ⋅ 3

python nose(二)

Testing with nose Writing tests is easier nose collects tests from subclasses, of course. Butyou can also write simple test functions, as well as test classes that are not subcl......

人生如梦19 ⋅ 2016/04/06 ⋅ 0

使用gprof和oprofile查找性能瓶颈

【转】有些时候,我们特别关注程序的性能,特别是底层软件,比如驱动程序,OS等。为了更好的优化程序性能,我们必须找到性能瓶颈点,“好钢用在刀刃上”才能取得好的效果,否则可能白做工作。...

彼得 ⋅ 2012/09/17 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JavaScript零基础入门——(八)JavaScript的数组

JavaScript零基础入门——(八)JavaScript的数组 欢迎大家回到我们的JavaScript零基础入门,上一节课我们讲了有关JavaScript正则表达式的相关知识点,便于大家更好的对字符串进行处理。这一...

JandenMa ⋅ 今天 ⋅ 0

sbt网络问题解决方案

转自:http://dblab.xmu.edu.cn/blog/maven-network-problem/ cd ~/.sbt/launchers/0.13.9unzip -q ./sbt-launch.jar 修改 vi sbt/sbt.boot.properties 增加一个oschina库地址: [reposit......

狐狸老侠 ⋅ 今天 ⋅ 0

大数据,必须掌握的10项顶级安全技术

我们看到越来越多的数据泄漏事故、勒索软件和其他类型的网络攻击,这使得安全成为一个热门话题。 去年,企业IT面临的威胁仍然处于非常高的水平,每天都会看到媒体报道大量数据泄漏事故和攻击...

p柯西 ⋅ 今天 ⋅ 0

Linux下安装配置Hadoop2.7.6

前提 安装jdk 下载 wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.7.6/hadoop-2.7.6.tar.gz 解压 配置 vim /etc/profile # 配置java环境变量 export JAVA_HOME=/opt/jdk1......

晨猫 ⋅ 今天 ⋅ 0

crontab工具介绍

crontab crontab 是一个用于设置周期性被执行的任务工具。 周期性执行的任务列表称为Cron Table crontab(选项)(参数) -e:编辑该用户的计时器设置; -l:列出该用户的计时器设置; -r:删除该...

Linux学习笔记 ⋅ 今天 ⋅ 0

深入Java多线程——Java内存模型深入(2)

5. final域的内存语义 5.1 final域的重排序规则 1.对于final域,编译器和处理器要遵守两个重排序规则: (1)在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用...

江左煤郎 ⋅ 今天 ⋅ 0

面试-正向代理和反向代理

面试-正向代理和反向代理 Nginx 是一个高性能的反向代理服务器,但同时也支持正向代理方式的配置。

秋日芒草 ⋅ 今天 ⋅ 0

Spring 依赖注入(DI)

1、Setter方法注入: 通过设置方法注入依赖。这种方法既简单又常用。 类中定义set()方法: public class HelloWorldOutput{ HelloWorld helloWorld; public void setHelloWorld...

霍淇滨 ⋅ 昨天 ⋅ 0

马氏距离与欧氏距离

马氏距离 马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为Σ的随机变量之间的差异程度。 如果协方差矩阵为单位矩阵,那么马氏距离就简化为欧氏距离,如果协方差矩阵为对角阵,则其也...

漫步当下 ⋅ 昨天 ⋅ 0

聊聊spring cloud的RequestRateLimiterGatewayFilter

序 本文主要研究一下spring cloud的RequestRateLimiterGatewayFilter GatewayAutoConfiguration @Configuration@ConditionalOnProperty(name = "spring.cloud.gateway.enabled", matchIfMi......

go4it ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部