一定要做"数据探查"!
一定要做"数据探查"!
一定要做"数据探查"!
问:什么是数据探查?
答:数据探查简单说就是对数据进行一遍分析以便了解数据真实情况。
问:为什么要进行数据探查?
问:谁来做?
问:怎么做?
Why:为什么数据探查?
在数据平台或数据中台项目当中,数据的真实情况远超我们能预想到的,存在各种意想不到的场景或异常数据,经过数据探查,完善大家对数据的认识,避免由于不了解数据而遗漏场景,做到提前预防;同时,经过探查也可及时发现一些缺陷,尽早处理,从而加强质量保障。
What:数据探查什么?
- Input源数据表或文件
- Ouput结果表或文件
- 重点探查关键字段(即:设计到逻辑处理的字段以及处理结果字段)
Input源数据表或文件
- 【正确性】关键字段元数据内容(字段名、类型、长度)是否符合预期
- 【正确性】关键字段value符合需求预期的真实情况;比如:sales_type字段是本店销售、他店销售
- 【有效性】关键字段value中有没有空串或NULL或0;
- 【有效性】关键字段value中有没有不正常或异常数据出现,(比如:身份证号有6位以下的数)
- 【完整性】需要关联的表,检查有没有关联不上的情况。(如:销售事实表关键维表发现太多记录无法关联上正确的车型)
- 【完整性】探索真实数据量情况(数据量大小可能会影响到开发人员的实现方案)
- 【及时性】探索数据更新频率与及时性是否符合预期

Ouput目标表或文件
- 【正确性】关键字段元数据内容(字段名、类型、长度)是否符合预期
- 【唯一性】主键唯一性检查,确保没有重复值
- 【正确性】 关键字段value符合需求预期的真实情况;比如:性别标签结果是男、女、未知。
- 【有效性】关键字段value中有没有空串或NULL或0;
- 【有效性】关键字段value中,有没有出现不符合实际情况的值。(比如: 日新增订单变成负数;再比如:日取消订单远大于日新增数)
- 【一致性】关键字段的相同语义下,字段名称、类型、长度要保持统一
- 【一致性】相同字段的value定义要保持统一
- 【正确性】统计结果表的关键字段,数据分布。(比如:人车关系标签,发现 一人关联了几万车,比如: oneid列为空的有四分之一)
- 【完整性】统计结果表的数据量与预期是否一致
- 【正确性】数据结果蜕变测试验证
- 【正确性】数据结果分布是否符合预期
- 【正确性】数据结果趋势是否平滑,有突增突减可能不正常
- 【及时性】结果数据更新频率与及时性是否符合预期

上线之后探索结果表或文件
- 【有效性】探索相关表或文件的数据报告,确保没有发现异常情况。
- 【完整性】探索线上分区齐全
- 【完整性】探索线上每个分区数据量符合预期
- 【及时性】探索线上每个分区、重点最新分区数据分布情况符合预期
- 【正确性】探索线上最新分区数据value正确【找一条数据核实结果正确】
- 【正确性】数据结果蜕变测试验证
- 【正确性】数据结果分布是否符合预期
- 【正确性】数据结果趋势是否平滑,有突增突减可能不正常
- 【性能】检查性能,上线后数据查询或调用性能
Who:谁进行数据探查
数据探查的目标就是更加了解业务与数据情况,提前预防问题或及时发现问题。因此,提早参与,尽早预防。

- 需求分析阶段(write story):
(1)在分析需求或编写故事卡阶段,重点关注真实数据与需求描述一致,且没有存在需求遗漏或与需求冲突的数据场景。
(2)优先BA、实在不行由DA或DE代替执行 - 需求评审阶段(review story):
(1)在story review阶段进行数据探查,验证需求与真实数据无冲突或遗漏,QA同步编写test checklist补充细节。
(2)QA执行、如果没有QA的团队,BA或DE进行数据探查时核实这一步。 - 故事卡启动(Kick off)
(1)在数据开发之前,先进行spike,对数据进一步从技术视角探查,有新发现及时补充信息,如有问题提前反馈。
(2)DE执行 - 故事卡验收(Sign off)
(1)在Desk check|结卡前,DE自测时,对结果进行数据探查。及时发现问题,及时修正。
(2)DE执行 - DataPublish/UAT环境/生产环境(QA in Production):
(1)对结果数据进行数据探查,及时发现问题,及时修正。
(2)DE执行(部署后立即执行 - Data publish阶段),QA执行(QA in production阶段),其他角色:团队其他角色包括PO和业务人员在内,在数据发布后,进行数据探查验证,从业务使用视角出发探查结果。
How:怎么做?
- 工具:优先推荐使用工具完成一些通用的数据质量检查项,如:数据量、主键唯一、空值、值分布、样例数据等。如:data profiling、great expections。
- 脚本:现成产品或工具不能支撑的,可以自己写脚本或SQL进行手动探查,如数据结果的分布与趋势等。
- 推荐:推荐团队自行开发工具,自动化数据探查(我们团队内部有自己开发的数据质量检查工具)。
参考
蜕变测试验证,在这里指对于结果之间有一定关系的时候,我们可以找到相应的关系来检验是否有BUG。
举例:经销店A的当日新增订单数 > 经销店B的当日新增订单数,那么,经销店A的当日新增有效订单数一定大于经经销店B的当日新增有效订单数。
网友评论