`
hugh.wangp
  • 浏览: 289172 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

ETL过程的数据测试

阅读更多

 

1.记录数对比
在两种情况下必须要做如此的验证:
a. 数据迁移
这个场景主要是DW环境从一种迁移到另一种,比如RAC迁到HIVE之类的,记录数对比是首要的,迁移的数据量都不对,具体的数据内容对不对就不用考虑了。
b. ETL转换
这种场景是更常见的,毕竟数据研发,ETL过程是必不可少的。那么,记录数对比主要涉及如下几类:
1). 从操作型数据库抽取数据到数据仓库,这个过程由于字符集、字段类型、系统软硬件等原因,不可避免数据会丢失,这个时刻不关注记录数的差异,后续如何能正确利用数据
2). 根据数据模型做数据处理和应用,这个过程任何做数据研发,数据分析的,都不陌生,在这个过程中估计也不可能没有人没有遇到过记录数不一致的情况。此过程,如果能解决记录数一致问题,其实顺带解决了很多数据逻辑问题,以关系型数据为例,任何数据的转换,都是从N张表关联得到M张表的过程,我们解决记录数一致问题其实就是解决:1.数据粒度验证;2.数据筛选过滤验证;3.关联错误产生数据重复等问题
2.度量平衡验证
此类验证是局部和整体的关系,局部要服从整体,也就是验证执行结果中可累加度量的总量。比如,一张反映网站访问量的表,此表每天的数据量是1个亿,如果我们按性别维度做汇总聚合,男性访问量是5千万,女性访问量是4千万,5千万+4千万 != 1个亿。很明显,这个数据肯定有问题,我的1千万流量去哪儿了?我们通过度量平衡验证找到了问题的现象,那引起问题的原因呢?这就要结合其他几类测试方法,针对这个例子,第一反应可能是性别字段为空,这1千万可能就是这样。
3.数据抽样检测
此类测试是最出力不讨好的体力活,抽样的成本比较高,但很多时候还发现不了问题。不过这类测试是最不能忽略的,因为真正能通过此类测试发现问题的,这个问题就比较隐晦,有时候搞不灵清到底是不是问题。
这类测试更重要的是有个提前判断,划定一个标准,比如,一个字段必须是非空的,我们抽样就是验证非空;一个字段必须是双精度数字类型,但是表结构定义为整型数字类型,精度丢失就会导致数据的异常,如果我们是算钱的,1.6块变成1块,当有1个亿这样的数据,你就真亏大发了。这类是值自身的问题。
还有类数据抽样可能和数据分析关系更深一点,而且这个会更隐晦了。比如一个指标在以往一个月的趋势里都平稳在500万左右,但是突然今天这个指标变成100万了,你就要怀疑是否存在问题,这种情况很有可能有人动了你刷新数据的代码。这类测试对我们数据研发人员有更高的要求,有的人总把自己定位为数据开发,其实玩数据,开发是本职,但是不懂分析,有时候开发还真会存在很大的陷阱。建议我们的数据研发人员也多关注下业务,了解些分析的技能。
4.重跑测试,两次输入测试结果是否完全一致
此类测试主要是针对数据刷新代码开发完毕,开始自测这个过程,以后可能不用太关心这类测试。
我们不能避免我们永远不会犯错误,如果数据错了就要重新来过,但是我们的代码不支持重新跑,修正数据错误就比较麻烦,有时候可能就没办法修正。
首先,我们要在设计时,考虑如何写代码保证可以支持重跑,其次,就算我们设计的代码是支持重跑的,我们也要在自测阶段,重复跑几次代码,比对数据和逻辑,真正保证重跑是没有问题的
5.唯一性检查
此类测试导致的影响可大可小,一般在越底层出现,问题越严重,绝对是蝴蝶效应的威力。如果一份数据的关联字段不一致,生成的数据就会产生笛卡尔积的数量效果,我有个同事一个笛卡尔积把整个系统hang住了。
我个人非常注重粒度,每个数据表是什么粒度的,一旦我知道这个表是什么粒度的,我就能知道这个表的唯一性是什么,对非表粒度级别的维度,我会很慎重,因为它不代表唯一性。所以,唯一性检查对我而言是水到渠成的事情,就是因为我首要关注粒度,理解粒度后就不会犯唯一性的错误。
6.重复记录检查
此类测试和唯一性检查时对称的,非唯一,那肯定有重复。所以此检查和唯一性检查是如此的相辅相成。
7.空值检查
数据处理的重要工作之一就包括空值的过滤或者默认化处理。当我不知道我利用的数据对空值是过滤、默认化处理还是不处理,在利用这些数据关联生成我想要的数据时就会产生不一样的结果。
a. 过滤:太好了,你不用考虑空值了
b. 默认化处理:如果你用表A和B关联得到C,如果A表做了默认化处理,B表没做默认化处理,你觉得你能得到正确的数据吗
c. 不处理:类似默认化处理,不处理也是一种默认化处理,默认的口径不一致,根本的不到正确的数据
所以空值检查首先要知道空值的处理方式,保证处理的N处数据源的空值处理方式是一致的,其次要知道空值的处理是否会影响数据处理效率和数据处理结果
分享到:
评论

相关推荐

    大数据采集及ETL数据清洗实现(全套视频+课件讲义+代码)

    常见网站日志生成过程业务详解 企业数据采集方案介绍 Flume拦截器、channel选择器、sink 处理器回顾 Flume实现日志采集到HDFS并自动分区 定时调度Shell脚本实现日志数据分区上传HDFS ...ETL程序打包测试

    BI ETL ELT Kettle 基础知识中文文档汇总

    ETL流程、数据流图及ETL过程解决方案.pdf ETL流程、数据流图及ETL过程解决方案.ppt ETL的主要步骤.pdf ETL的本质.pdf ETL知识.pdf ETL规范.pdf ETL设计说明书.pdf ETL面试题.pdf 一种标准的ETL_的设计思想...

    数据仓库ETL工具箱(中文版)

    本书作者是由Ralph Kimball博士所著,抽取-转换-加载(ETL)系统是数据仓库的基础。从本书中,你将可以学到:(1)规划... (5)为ETL过程建立开发/测试/生产环境 (6)理解不同的后台数据结构,包括平面文件等 等等,

    datalake-etl-pipeline:使用Apache Spark的Hadoop中简化的ETL过程。 具有用于datalake的完整ETL管道。 SparkSession扩展,DataFrame验证,列扩展,SQL函数和DataFrame转换

    Features:该软件包具有完整的ETL过程- 使用元数据,转换和数据模型信息来设计ETL管道建立目标转换SparkSQL和Spark Dataframes 构建源和目标Hive DDL 验证DataFrames,扩展核心类,定义DataFrame转换并提供UDF SQL...

    shipments-etl:ETL流程从CSV获取数据并将其加载到PostgreSQL数据库中

    ETL过程从CSV数据集中获取数据并加载到PostgreSQL数据库中 要求 PostgreSQL 13.2或更高版本。 使用的配置: 用户:postgres(具有创建,删除和修改模式,数据库和表的权限;具有修改数据的权限(INSERT,READ,...

    大数据软件测试.pptx

    3.ETL(抽取(extract)、转换(transform)、加载(load))过程为联机分析处理、数据挖掘提供决策支持的数据。 大数据概念最初起源于美国,是由思科、威睿、甲骨文、IBM 等公司倡议发展起来的。大约从2009年始,...

    BI数据中心搭建流程.doc

    目录 一、前言 3 二、总体架构 3 自顶向下搭建 3 自底向上搭建 3 三、数据中心搭建具体流程(架构角度) 3 1、 数据源整合 ETL 3 2、 ODS 或 DWH 搭建 3 3、 多维分析模型建立 3 4、 数据展现平台搭建 3 5、 Protal ...

    大数据应用测试经验总结.pdf

    ⼤数据应⽤测试经验总结 ⼤数据应⽤测试经验总结 ⼤数据应⽤测试过程与传统的web系统有较⼤的不同,⼤数据应⽤测试通常会分为web侧和ETL侧测试,web侧基本就是功能测试,⽽ETL(Extracting-Transfroming- Loading)...

    Cloudera-数据云-一站式DataOps自助开发.pdf

    义和ETL开发,实现“按需做 规划,未来可扩展”的数据仓 库模型。 多源数据快速对接 规范的数据建模 一站式的在线数据开发平 台,实现数据抽取、加工、 分析、挖掘等处理,从而 发现数据的价值。 提供灵活可扩展的...

    ETL_with_Luigi:用Luigi建立ETL管道

    该存储库是关于使用Luigi使用本地数据并将其存储到本地数据仓库中来构建ETL管道的 什么是路易吉? 在页面上, Luigi是一个Python(经过3.6、3.7、3.8、3.9测试)软件包,可帮助您构建复杂的批处理作业管道。 它处理...

    getl:使用ETL和ELT流程轻松开发项目的框架,该框架可用于Micro Focus Vertica平台上的数据源和数据仓库

    测试等过程的自动化; 自动化数据仓库中的数据运行状况监视; 在存储库中集中存储对数据源及其结构的描述的存储; 简化数据处理模式的开发。 支持的RDBMS IBM DB2,FireBird,H2数据库,Hadoop Hive,Cloudera ...

    数据规划集成总体设计方案.pptx

    例如,可以采用ETL(Extract-Transform-Load)工具进行数据抽取、转换和加载;也可以采用数据仓库技术,将不同来源的数据整合到一个统一的数据仓库中;还可以采用数据虚拟化技术,实现数据的实时集成和共享。 五、...

    dtspec:测试所有数据

    dtspec的目的是使针对ETL / ELT中通常遇到的非常复杂的数据转换的编写和运行测试变得更加容易。 使用dtspec,我们可以想象一个数据转换过程,该过程需要一组数据源并将它们转换为一组数据目标。 dtspec主要关注...

    Sybase交行客户信息分析系统解决方案

    交通银行根据IQ在测试中表现出的: 出色的数据压缩比,高性能的汇总和查询能力以及存储过程的灵活方便性选择IQ作为客户数据分析平台的数据库。根据技术测试的情况,重新规划的整体系统的构架如下:系统为集中访问的...

    大数据治理基础-Training.pdf

    21 三大分析之一:血缘分析 数据模型 ODS层 ETL过程 APP层及多个ETL过程 DW层 OLAP/报表 22 三大分析之二:影响度分析 23 三大分析之三:业务术语分析 24 议程 关于数据治理 1 解决方案探讨 2 过往案例分享 3 交流和...

    scrimshaw-recursion:Postgres数据建模

    档案: 等将ETL文件转换为表格的主要ETL过程eda.ipynb 对结果表进行探索性数据分析,绘制出前10位用户乙炔不在etl管道或数据库中使用; ETL开发过程的文档sql_queries.py 用于创建数据并将其插入postgres的sql字符串...

    DataManager:使用Web UI工具更好地组织数据湖中的数据并建立ETL管道

    它涵盖了使用Apache Spark进行批处理过程的数据团队的所有需求。但是,数据可视化和笔记本(如JupyterHub)未包含在Data Manager中。有关更多信息,请阅读 整体工作模式 支持平台 您可以设置自己的Apache Spark集群...

    AutosRUs_Statistical_Analysis:执行提取,转换,加载(ETL)过程,创建可视化效果并使用带有车辆数据的R解释统计测试

    AutosRUs_Statistical_Analysis

    KISETL v1.0.0.rar

    之前做过几年游戏开发,开发过程中需要大量的策划数据校验,测试数据分析,因此开发了这一个轻量级的ETL工具,现开源出来与有兴趣的码农一起分享,改进! ~_~感谢钉客提供网页存放空间。 KISETL特点 1、程序简单,...

    KISETL v1.0.0

    之前做过几年游戏开发,开发过程中需要大量的策划数据校验,测试数据分析,因此开发了这一个轻量级的ETL工具,现开源出来与有兴趣的码农一起分享,改进! ~_~感谢钉客提供网页存放空间。特点:1、程序简单,由PHP...

Global site tag (gtag.js) - Google Analytics