ETL之前,如何实现数据质量的检测? 举报 理由 举报 取消 在ETL抽数之前,数据质量参差不齐,有的缺少必填项,有的长度不合适,有的类型不一致,有没有什么好大方法能在ETL前对数据进行一次质量检测。 目前我的方法是,写个存储过程把质量问题分类进行筛选然后根据问题描述进行统计插入到一张表中,但是指标多了以后这种方法感觉不是很适用。 2018年2月2日 3 条回复 1331 次浏览 BI,ETL,商业,数据,智能
回复 ( 3 )
数据质量的问题在BI实施过程中占据了很大的工作量。主要两种思路:
1,源头控制。根据你的问题,你的数据应该不是一次性提供的,那么这个时候有必要去跟业务数据录入方去沟通,定义规则。或者直接在源头系统修改规则,保证下游数据是干净的。这个时候,你需要:
a,汇总各个系统的错误数据,梳理出错误规则。
b,取得各主要方责任人的支持,各个去沟通接口人,并定义正确的规则。
c,邮件给各方,并收集意见。确认。
d,定期汇报数据质量情况。
2,ETL抽数之后进行清洗。
源头控制不了,先把数据抽过来到ODS层,用工具或者其他方法做数据清洗。
最后,明确问题所在,是否可以梳理为流程化的处理方式。如果不行,那么就得每次都要费时费力去做清洗。
题主的方法是非常可行的。但是只是所有数据质量控制中方法之一。
题主描述的场景应该是在数据库与数据库之间做ETL。
在这种场景下,数据质量控制有以下解决思路:
一、统一结构
有以下三个参考方向:
1、以源库结构为标准(如业务库数据同步到数据仓库中的原始数据库)
2、以目标库结构为标准(如数据仓库中的原始数据库数据加工到汇总表中)
3、以其他结构为标准(如某部门提供数据到共享库供所有部门使用)
二、统一规则
包含单不限于以下应该考虑的规则:
1、定义那些数据是合格的,那些是不合格的
2、定义不合格数据的处理流程
3、定义数据获取成功的消息反馈机制
4、定义数据抽取的时间和频率
如同工业社会的螺丝一样,严格的数据结构和规则是ETL正常工作的保证。在理想状态下(所有的规范和规则都被严格执行),ETL程序只需要做搬运工即可,无需考虑鲁棒性。但是由于数据库结构变动、数据重复、抽取标示失效、传输问题、流程设计漏洞、调度顺序错误等各种原因,会造成ETL任务执行出错。
为了防止以上问题导致白抽了一晚上数据的恶心事件的发生,伟大的ETLer通常会不是那么相信别人。所以他们通常会这么干:
1、做一个数据结构检查的任务,确定源和目标的结构是否一致,规避数据结构变化导致的问题;
2、做一个增量数据量检查任务,确保增量前源和目标的数据量保持一致,规避增量标示、手动修改数据等造成的数据重复抽取等问题
3、在抽取流程中,增加错误数据校验机制,错误数据存放在临时表中,并把错误数据统计表自动发邮件给对方负责人,并抄送双方BOSS
对了,有时候不要过于相信时间戳~
事前和数据提供方讲好接口规则,事后在数据抽取的时候只抽取符合格式的数据,不符合的忽略掉。