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

    什么是web前端? 在以前,通俗的讲是网页制作,在现在,哼哼,可以参考这篇文章 http://tieba.baidu.com/p/4817153404 那么如果高效优雅的学习web呢? 注:以下纯属个 ...

  2. Java中基本数据类型的存储方式和相关内存的处理方式(java程序员必读经典)

    1.java是如何管理内存的 java的内存管理就是对象的分配和释放问题.(其中包括两部分) 分配:内存的分配是由程序完成的,程序员需要通过关键字new为每个对象申请内存空间(基本类型除外),所有的对 ...

  3. 初涉SQL Server性能问题(1/4):服务器概况

    当你作为DBA时,很多人会向你抱怨:“这个程序数据加载和蜗牛一样,你看看是不是服务器出问题了?”造成这个问题的原因有很多.可能是程序应用服务器问题,网络问题,程序实现方式问题,数据库服务器负荷过重.不 ...

  4. IOS开发UI基础文本属性Attributes

    文本属性Attributes 1.NSKernAttributeName: @10 调整字句 kerning 字句调整 2.NSFontAttributeName : [UIFont systemFo ...

  5. mac ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

    好久不用mysql,今天突然想用的时候, mysql -uroot -p 直接报了下面的错误 ERROR 2002 (HY000): Can't connect to local MySQL serv ...

  6. AndroidStudio-OSX 常用快捷键整理

    整理完OSX的快捷键后自然少不了开发环境的快捷键了,暂时整理了些自己常用的 其实AS很多可能用得比较多的快捷键完全是跟MAC的文本编辑快捷键重复的,比如光标跳转和选择文本,这部分去那边参考就好   C ...

  7. Linux下修改PATH路径

    1.#PATH=$PATH:/opt/lamp/mysql/bin       使用这种方法,只对当前会话有效,也就是说每当登出或注销系统以后,PATH 设置就会失效 2.#vi /etc/profi ...

  8. SCRUM:第一天任务实现情况

    我认领了我们团队“广商百货”应用平台的密码提示功能,任务暂时还在进行中.虽然建立了数据库,但是数据库里要存放什么数据,我们的小组还在讨论中.因为android的知识还在自学过程中,所以做起来比较慢,也 ...

  9. Python入门笔记(10):字典

    一.映射类型 我理解中的映射类型是:键值对的关系,键(key)映射值(value),且它们是一对多的关系.字典是Python唯一的映射类型. 扩展1:哈希表一种数据结构,值是根据相关的键进行数据存储的 ...

  10. NopCommerce中的单例

    项目中经常会遇到单例的情况.大部分的单例代码都差不多像这样定义: internal class SingletonOne { private static SingletonOne _singleto ...