`
hugh.wangp
  • 浏览: 293442 次
  • 性别: 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测试的注意事项

    在ETL过程中,数据校验是确保数据质量的重要步骤。如果一个数据校验控件包含了多个校验规则,如姓名、性别、日期等,需要确保在修改其中一个规则后,其他规则同样被正确处理。如果未检查所有校验,可能导致某些规则...

    ETL-数据集成开发规范

    - 日志记录:详细记录ETL过程,便于问题排查和审计。 - 数据一致性:确保数据在转换过程中的一致性,避免数据污染。 - 性能调优:定期评估并优化ETL性能,减少资源消耗。 总之,遵循这些规范,可以构建出高效、稳定...

    主流ETL工具测试比较

    "主流ETL工具测试比较" ETL(Extract、Transform、Load)是一种常用的数据integration工具,用于从多个数据源中提取数据,转换为一种格式,然后加载到目标系统中。在实际应用中,选择合适的ETL工具是非常重要的。...

    《ETL数据整合与处理(Kettle)》教学教案 —02源数据获取.pdf

    总之,通过本章节的学习,学生将掌握Kettle在ETL过程中的源数据获取技巧,为后续的数据清洗和加载打下坚实基础。在这个过程中,理论与实践相结合,不仅提升了学生的理论知识,也锻炼了他们的动手能力。

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

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

    数据仓库ETl工具箱3.pdf

    ETL过程中的数据流规划需要遵循从需求/现状到架构设计,再到实现、测试发布的一系列步骤。数据流包括抽取、清洗、规格化和提交。每一个步骤都必须严格遵守,以保证数据仓库的数据质量。 ### 变化数据捕获 传统上,...

    数据仓库ETL资料(全)

    在这个“数据仓库ETL资料(全)”的压缩包中,我们可以期待获取到关于ETL过程的全面知识。 1. **ETL的定义与作用** ETL是数据仓库建设的关键环节,它确保了从不同源头收集的数据能够以一致、准确和可用的形式存储...

    数据仓库ETL建设宝典

    数据仓库ETL(Extract, Transform, Load)是构建和维护数据仓库的...通过本"数据仓库ETL建设宝典",你可以全面了解ETL过程,掌握构建高效、可靠数据仓库所需的技能和知识,为你的企业数据分析和决策支持提供强大支撑。

    ETL_data warehouse etl tookit 数据仓库工具箱中文翻译

    - 讨论了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

    ETL,全称为Extract, Transform, Load,是数据仓库领域中的关键过程,用于从不同的数据源提取数据(Extract),经过清洗、转换(Transform)后,加载(Load)到目标系统,如数据仓库或大数据平台。这个过程对于数据...

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

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

    etl-kettle讲稿

    然而,ETL过程中也面临诸多挑战,如如何有效地处理空值、确保数据格式的一致性、验证数据的正确性和处理数据源的多样性。解决这些问题需要对业务理解深入,选择合适的ETL工具,并进行精心设计和测试。 总结来说,...

    ETL工具,开源,使用需要配置

    emp.db3可能是用户的数据源,而SQLiteSpy则是一个用于查看和编辑SQLite数据库的工具,有助于ETL过程中数据的检查和调试。 3. **Oracle.ManagedDataAccess.dll** 和 **System.Data.SQLite.dll**:这些都是数据库驱动...

    数据仓库工具箱ETL

    - **ETL生成的元数据**:讨论了ETL过程中产生的元数据类型及其重要性。 #### 10. 职责 - **计划和领导**:阐述了ETL项目的计划和领导方面的最佳实践。 - **管理项目**:提供了项目管理的具体方法,包括进度跟踪、...

    ETL设计与开发实践

    ETL过程可以分为三个主要阶段: 1. 抽取(Extract):从源系统中提取数据,这些源可能包括数据库、文件、API接口等。 2. 转换(Transform):对提取的数据进行清洗、转换,以满足目标系统的结构和业务需求,例如数据...

    ETL开发宝典

    DW Automation在整个ETL过程中扮演着调度、控制和监视的角色,确保ETL作业按计划执行。 数据仓库自动化(DW Automation)部分强调了作业的调度和控制对于保证ETL流程顺畅的重要性。通过系统化的方法来启动和监控ETL...

    ETL课程全部笔记.pdf

    ETL工具如Kettle提供了丰富的功能,包括连接功能、平台独立性、数据规模支持、设计灵活性、复用性、扩展性、数据转换、测试和调试、血统与影响分析、以及日志和审计等。这些功能使得ETL工具能够高效地处理各种数据...

    ETL 解决方案介绍

    3. **测试**:验证ETL流程的正确性和性能,确保数据的准确无误。 **应用案例** XX集团利用DTS(SSIS的前一版本)处理来自用友、外部Excel等不同数据源的数据,实现BI系统的ETL功能。另一个案例中,XX集团整合了SAP...

Global site tag (gtag.js) - Google Analytics