现在对数据质量的要求越来越高,面对一个动辄上亿条数据的报表如何快速对它的数据质量做出分析呢?给大家分享下我们测试时用到的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值个数、平均数和中位数、针对字段的枚举和分布频率外,还包括相关性分析、主键相关分析和血缘分析等,将之分别做了一下分类如下图:
  下面对它们分别进行详细介绍:
  值域分析:
  对于所有字段都适合,分析字段的值是否满足指定阀值、分析字段值的统计量(最大、最小、中位数、均值、方差等)
  常见BUG:最大、最小值越界、发现有NULL值;
  基数分析:
  分析字段中不同值的个数,这种方法更适合于维度类指标
  常见BUG: 对于度量类指标数据比较集中,基数下记录个数过大或过小等
  类型监测:
  分析字段真实值是否符合定义的数据类型 ,一般在数据预览时对数据内容做下评估
  数据分布:
  分析各个维度值在总体数据中分布情况,根据经验值能从总体上看出数据的质量情况
  常见BUG: 数据分布不符合预期;度量类指标数据过分集中,发现有NULL值过多
  波动监测:
  分析检测值在一定周期内的数值波动是否在指定阀值内,这个更多用在线上数据监控中,可分析检测值在一定周期内的数值波动是否在指定阀值内,如出现大幅波动需要关注。
  异常值监测:
  分析字段中是否包含异常数据,例如空、NULL,另外一些约定异常值的数据的数量
  常见BUG:col存在异常值,约定异常值数据过多,如-99,-1,NULL等
  功能相关性分析:
  分析字段或字段之间是否满足指定的业务规则,这个需要理解本表内字段间的业务逻辑关系,如pv>=uv
  常见BUG:字段间的业务逻辑未满足预期
  主键唯一性分析:
  分析表数据中主键是否唯一,这个非常重要,如果主键不唯一会给下游表的计算带来无穷的困扰。
  常见BUG:主键不唯一;主键为NULL
  表基础分析:
  分析表的基础统计量如分区、行数、大小,如果有对照表,最好参考对照表,如无对照表这个更多是靠经验值,分析此表的业务对于表的基础统计量是否符合预期进行判断。
  常见BUG:表基础统计量不符合预期
  外键分析:
  分析事实表中的外键是否都能在维表中关联到
  常见bug:表里的外键没有在对应维表中找到对应,外键本身为NULL或异常值
  血缘分析:
  分析表和字段的从数据源到当前表的血缘路径,以及血缘字段之间存在的关系是否满足,关注的数据的一致性以及表设计的合理性。

[转载] 数据测试常用的Data Profiling方法的更多相关文章

  1. 【转载】改善数据质量从数据剖析(Data Profiling)开始

    市场研究公司Forrester副总裁Erin Kinikin曾经把低劣的数据质量做了一个形象的比喻“用更好的方法访问劣质的数据,结果类似于把已经腐烂了的桃子用更快的卡车,走更好的路线运输到达市场时,桃 ...

  2. 『转载』hadoop2.x常用端口、定义方法及默认端口

    『转载』hadoop2.x常用端口.定义方法及默认端口 1.问题导读 DataNode的http服务的端口.ipc服务的端口分别是哪个? NameNode的http服务的端口.ipc服务的端口分别是哪 ...

  3. 浅谈MySQL中优化sql语句查询常用的30种方法 - 转载

    浅谈MySQL中优化sql语句查询常用的30种方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使 ...

  4. 自动化测试常用断言的使用方法(python)-(转载@zhuquan0814

    自动化测试中寻找元素并进行操作,如果在元素好找的情况下,相信大家都可以较熟练地编写用例脚本了,但光进行操作可能还不够,有时候也需要对预期结果进行判断. 这里介绍几个常用断言的使用方法,可以一定程度上帮 ...

  5. C#开发中常用的加密解密方法

    转载自:https://www.cnblogs.com/bj981/p/11203711.html C#开发中常用的加密解密方法 相信很多人在开发过程中经常会遇到需要对一些重要的信息进行加密处理,今天 ...

  6. python常用数据类型内置方法介绍

    熟练掌握python常用数据类型内置方法是每个初学者必须具备的内功. 下面介绍了python常用的集中数据类型及其方法,点开源代码,其中对主要方法都进行了中文注释. 一.整型 a = 100 a.xx ...

  7. ASP.NET(C#)常用数据加密和解密方法汇总

    一.            数据加密的概念 1.  基本概念 2.  基本功能 3.  加密形式 二.            数据加密的项目应用和学习 1.  媒体加密:DRM 2.  文件加密:文本 ...

  8. VUE-005-axios常用请求参数设置方法

    在前后端分离的开发过程中,经常使用 axios 进行后端接口的访问. 个人习惯常用的请求参数设置方法如下所示: // POST方法:data在请求体中 addRow(data) { return th ...

  9. JAVA基础(二)—— 常用的类与方法

    JAVA基础(二)-- 常用的类与方法 1 Math类 abs ceil floor 绝对值 大于等于该浮点数的最小整数 小于等于该浮点数的最大整数 max min round 两参数中较大的 两参数 ...

随机推荐

  1. 【HTML5】Canvas 实现放大镜效果

    图片放大镜 效果 在线演示    源码 原理 首先选择图片的一块区域,然后将这块区域放大,然后再绘制到原先的图片上,保证两块区域的中心点一致, 如下图所示: 初始化 <canvas id=&qu ...

  2. JAVA魔法堂:折腾Mybatis操作SQLite的SQLException:NYI异常

    一.坑爹 在使用Mybatis3.2.7+sqlite-jdbc3.3时,在执行查询操作,不管returnType和parameterType传什么值均报位于mapper.xml文件中的java.sq ...

  3. Angular系列----AngularJS入门教程00:引导程序(转载)

    我们现在开始准备编写AngularJS应用——phonecat.这一步骤(步骤0),您将会熟悉重要的源代码文件,学习启动包含AngularJS种子项目的开发环境,并在浏览器端运行应用. 进入angul ...

  4. IOS开发UI基础UISlide属性

    UISlide属性 •    minimumValue  : 当值可以改变时,滑块可以滑动到最小位置的值,默认为0.0_slider.minimumValue = 10.0; •    maximum ...

  5. [ASP.NET] 下一代ASP.NET开发规范:OWIN

    今天投简历 准备面试了... 本节目录: OWIN简介 OWIN规范 Katana Hello World(3种Host) 自定义Middleware OWIN简介 OWIN(Open Web Int ...

  6. Linq专题之Linq查询from子句

    Linq查询表达式包含8个常用的子句:from.where.select.join.into.orderby.group.let.我们来看看详细的说明.      from:      指定查询操作的 ...

  7. SQL Server 性能调优(一)——从等待状态判断系统资源瓶颈【转】

    转载自:http://blog.csdn.net/dba_huangzj/article/details/7607844#comments 通过DMV查看当时SQL SERVER所有任务的状态(sle ...

  8. CSS代码重构

    CSS代码重构的目的 我们写CSS代码时,不仅仅只是完成页面设计的效果,还应该让CSS代码易于管理,维护.我们对CSS代码重构主要有两个目的:1.提高代码性能2.提高代码的可维护性 提高代码性能 提高 ...

  9. shape和selector的结合

    去掉gridview本身的点击效果:android:listSelector="@color/de_transparent": 添加两个selector,灰色的press和norm ...

  10. [PHP] 读取大文件并显示

    使用PHP读取日志文件,当文件比较大的时候,会报内存不足,因此应该部分读取,读取指定的行数的数据 PHP代码: <?php class Test{ //日志路径 const LOG_PATH=& ...