先看清原始表:字段梳理比动手改更重要
很多数据团队接到一张原始表就急着写脚本删空值、去重,结果清洗到一半发现口径理解错了,只能推倒重来。开云在服务企业客户的过程中反复验证一个判断:清洗工作的质量,八成取决于动手前的字段梳理。拿到数据后先做三件事:确认每一列的業務含义、确认取值范围的合理边界、确认主键或唯一标识是否成立。这三件事做完,后续的每一步操作才有依据。
字段梳理建议形成一份简明的字段说明清单,包括字段名、业务含义、数据类型、是否允许为空、取值范围或枚举值。开云通常建议把这份清单和原始表一起归档,后续任何人接手都能快速理解数据结构。字段说明不需要写得很长,但必须准确,尤其是金额、数量、时间这类关键字段,单位与精度要写清楚,避免出现「元」和「万元」混用的情况。
缺失值与重复记录:先判断成因再决定处理方式
缺失值不是一律删除或一律填充。开云在实践中会把缺失分成三类来处理:一是业务上本就不该有值的字段,比如未成交订单的成交时间,这类缺失保留即可;二是采集环节遗漏造成的缺失,需要回溯数据源补齐;三是业务方确实未填写的缺失,才考虑填充或标记。填充方式也要看字段性质,数值型可以用中位数或分组均值,分类型更适合单独设一个「未填写」类别,而不是硬塞一个看似合理的值。
重复记录的判定同样需要谨慎。完全相同的两行可以直接去重,但更多时候是「同一业务对象存在多条记录」,比如同一个客户在不同时间被多次录入。这时候要区分是重复录入还是正常的业务变更。开云建议先按业务主键分组统计条数,抽样查看重复组的具体内容,确认成因后再制定去重规则,并把规则写入文档,避免不同人执行出不同结果。
- 缺失值处理前先标注成因,保留处理痕迹
- 重复判定以业务主键为基准,不只看整行是否相同
- 每次清洗保留原始表副本,确保过程可回溯
把校验规则沉淀下来,让清洗从一次性动作变成流程
一次性清洗只能解决当下这张表的问题,真正有价值的是把校验规则沉淀成可复用的流程。开云在数据管理项目中通常会把规则分成三类:格式类规则,如日期格式、编码长度;逻辑类规则,如结束时间不早于开始时间、金额不为负;关联类规则,如订单表中的客户编号必须能在客户表中找到。三类规则写成清单后,可以固化成脚本或校验任务,每次新数据进入时自动跑一遍,输出异常清单而不是直接修改数据。
异常清单的价值在于把问题交还给数据来源方。开云建议为每类异常记录处理状态和责任人,形成闭环。这样清洗就不再是数据团队单方面的体力活,而是推动上游改善录入质量的抓手。流程稳定运行一段时间后,可以统计各类异常的発生频次,优先解决高频问题,整体数据质量的提升会比逐表修补快得多。
最后提醒一点:清洗流程要有版本意识。规则调整、字段增减都应在文档中记录变更说明,配合样本数据做回归验证。开云见过不少团队规则改完之后没有同步更新说明,几个月后没人说得清某批数据到底经过了哪些处理。把流程写清楚、把变更记下来,数据资产才真正可被信任和复用。
字段说明清单这个做法我们试过,确实能省很多来回确认的时间,尤其是金额单位那块,之前就吃过亏。
缺失值分三类处理很实用,我们之前一律填零,结果报表里全是假数据,后来排查了好久。
重复记录按业务主键分组统计这招好用,比直接整行去重靠谱多了。
校验规则固化成任务这个思路对,我们现在就是每次手动跑,人一换就断档。
版本记录那段说到点上了,规则改了不写说明,过两个月自己都不记得。
异常清单交还来源方这点很关键,不然数据团队永远在背锅。