本节摘要:质量校验工具回答"数据对不对",本节解决的是另一半问题:"这个答案怎么第一时间出现在取数的人面前"。核心做法是把质量结果作为元数据回写平台,让每张表挂上一份持续更新的体检报告,取数前先看健康状态成为团队习惯。本节讲清回写机制、健康状态机、四类基础校验的选择,以及"体检报告"的正确读法。本节承接 5.3 的治理秩序,是价值链"信得过"环节的兑现,也为 5.5 的推广提供一个高感知度的卖点。
质量工具与元数据平台分居两处时,会发生一个尴尬的时间差:校验每天在跑、结果存在质量工具里,但分析师取数时看的是元数据平台——他不看你的校验报告,因为他不知道它存在。质量信息只有住进数据地图,才能在"决定用不用这份数据"的决策现场被人看见。
回写机制的架构在 2.3 已经铺好:质量工具在每轮校验结束后,通过接口把结果作为数据质量 Aspect 写到表实体上——哪天跑的、跑了哪些规则、各自通过与否、失败样本多少条。写入是幂等的覆盖语义(每轮结果覆盖上一轮),再由事件链路自动刷新搜索索引。于是每张表的详情页有了一个质量区块,搜索结果可以按质量状态过滤。质量工具只管算,平台负责"让答案出现在决策现场",分工清晰。
单次校验的通过与失败是噪音级别的事件,使用者需要的是聚合后的稳定信号。把一张表的健康状态抽象成四态状态机,是让质量信息可消费的关键一步。
四态的含义与使用纪律:绿是"最近一轮核心校验全过",可放心取数;黄是"有失败但未伤及核心规则",取数前读失败明细自行判断;红是"核心规则失败且未恢复",禁止用于正式产出,负责人已被告警;蓝是修复中,等转绿再用。状态机的价值在于把"质量好坏"的主观感受变成界面上的确定性颜色,也让 5.2 血缘图上的传导多了一层风险判断——上游红了,下游的绿都要打折扣看。
把机制落到一张真实的表上看效果。数仓明细层的订单表接入质量体系的第一周,规则只配了两条:行数日环比波动不超过两成(完整性)、订单号不得重复(唯一性)。第三周的一个清晨,行数规则失败——当夜分区比前日少了三成订单。负责人的告警先于业务方的客诉到达,顺血缘上溯,发现是业务库当晚的同步任务因源库锁表只跑了一半。补数在上午完成,看板上午恢复正常,而过去同类事故的暴露路径是"业务方中午发现看板数字不对,倒查一下午"。
这张表的规则后来逐步丰富到八条,但前两条至今贡献着最多的有效告警——便宜的规则抓最常见的事故,这个规律几乎在每个组织都成立。故事里还有个细节:那次补数后,负责人在表详情页的描述里补了一行"2023 年某日曾因源库锁表导致分区缺失半日,补数脚本见任务清单"。半年后另一个团队做同源问题排查时,这行描述替他们省了半天考古。质量体系与描述、血缘互相喂养,这是它们必须住在同一个平台里的又一个理由。
质量规则体系容易膨胀到失控,建议只从四类基础校验起步,覆盖绝大多数日常事故。
完整性:数据到没到——行数与昨日相比的波动幅度、分区是否按时产出。这类规则抓住的是"上游没跑或跑挂了",是最高频的故障形态。唯一性:主键有没有重复——业务库同步的幂等问题、任务重跑的副作用,都靠它现形。有效性:值在不该出现的地方——枚举字段的非法值、金额字段的负数、时间字段的越界。一致性:跨表对不上的口径——明细汇总与聚合表的差额、同一指标在两处的值差。前两类建设成本低、报警准,先铺;后两类要有业务知识投入,按表的重要级逐张配。
配套一条分级原则:只有核心域表的核心规则失败才触发"红",其余失败只降级为"黄"或仅记录。告警的价值与频率成反比,全量报警等于无人看报警——这与 5.3 标签的分级一脉相承,核心域清单正是打标的直接输出。
规则的配置形态保持声明式,一条基础规则的最小骨架如下,四类规则都长这个形状,只是断言不同:
check: entity: "urn:li:dataset:urn:li:dataPlatform:hive,dwd.orders,PROD" rule: rowCountDrift assert: "环比波动在正负20%以内" schedule: "每日凌晨产出后运行" level: critical notify: "urn:li:corpuser:zhang.san"
五个字段各司其职:断言写人话,让一年后接手的人不用猜;运行时机挂在产出之后而不是固定钟点,避免拿"还没产出的表"做校验;level 决定它在状态机里能把表推到哪一格;notify 直接指向 5.3 认领的所有权——规则失败的告警必须有收件人,无主的规则是负资产。给规则建版本管理同样值得:规则变更与模型变更一样要留痕,"上周明明还是两成阈值"这类争论,有版本记录就三十秒结案。
本节反复出现"质量工具"这个词,顺带把分工边界说清,免得选型时纠结。规则的执行(连接数据源、跑校验、算结果)是质量工具的地盘,开源与商业选品各有所长,按断言语法与调度能力挑即可;平台承担的是结果的归集、展示与决策嵌入——体检报告长在表详情页、健康状态进搜索过滤、失败告警路由到认领人。
两者通过 2.4 的接口握手:每轮校验结束,结果按覆盖语义回写。这个边界意味着两件实操事项。其一,质量工具的选型不必被平台绑定,换质量工具只要回写接口不变,平台侧零改动——这正是元数据平台作为"基础设施"的定力所在。其二,回写要带全上下文:规则名、规则级别、失败样本数、运行时间,四样俱全的回写才有 5.4 说的"九十秒判断",只回写一个通过率的回写不如不写。
详情页质量区块的正确打开方式,是带着四个问题读:最近一次校验是什么时候——超过调度周期说明校验链路可能断了,绿也可能是"很久没体检"的假绿;失败的规则是什么级别——核心规则失败直接放弃取数,非核心失败看失败率高低;失败趋势是突发还是渐进——突然出现的失败对应某次变更,渐进恶化往往是数据源漂移;失败样本长什么样——平台通常留存失败样例,扫一眼样本经常比规则定义更能说明问题。
带这四个问题读报告,"这数能不能信"就从一个群聊问题变成一次九十秒的自主判断。团队推广时,把"取数前看体检报告"写进新人手册第一条,配合 5.1 的环境过滤铁律,构成取数纪律的两大件。
💡 质量体系最容易被忽略的建设者是"规则的定义人"。给每条规则也标注维护者——规则失败却无人认领规则本身,是质量体系烂尾的头号标志。
找得到、敢动手、管得住、信得过——四件能力全部就位。最后一块拼图是运营:下一节讲怎么让业务方真的把目录用起来。