上线质量卡点是什么
把数据校验接进发布流程:模型与调度变更后先跑集成测试与质量规则,全部通过才允许发布到生产。卡点通常设在三处——合并请求检查、发布流水线、上线后首次运行。关键设计是分级:键完整性与金额勾稽这类问题属于阻断级,必须拦住发布;波动与均值类属于提示级,失败只记录告警不阻断。卡点判定要快,验收级校验限定在样本分区执行,否则没人愿意等它跑完,卡点很快会被绕过。
基本信息
| 卡点位置 | 合并请求检查、发布流水线、上线后首次运行 |
|---|---|
| 阻断级 | 主键唯一、关键字段非空、金额勾稽 |
| 提示级 | 波动、均值、分布类校验 |
| 产物 | 测试报告与失败明细留档,作为发布依据 |
| 性能要求 | 限定样本分区或样本量,控制在分钟级 |
典型使用场景
- DAG 或 SQL 变更的合并请求里自动跑解析与测试
- 发布流水线在推送生产前跑一轮关键规则
- 上线后首次运行自动触发全量校验并通知结果
- 数据模型重构时用卡点确保粒度与主键约束没被破坏
- 新人提交代码时靠卡点兜住明显错误,减少评审负担
流水线示例
流水线示例
steps:
- name: dag-smoke-test # 解析检查:DAG 能否被正常加载
run: python -m pytest tests/test_dagbag.py
- name: data-quality-gate # 关键规则:阻断级
run: dbt test --select tag:blocking
- name: sample-partition-check # 样本分区校验:控制在分钟级
run: bash scripts/run_dq.sh --partition latest --sample-ratio 0.1
- name: publish
run: bash scripts/sync_dags.sh卡点分级对照
| 级别 | 检查内容 | 失败动作 | 执行范围 |
|---|---|---|---|
| 阻断级 | 键完整、金额勾稽、枚举越界 | 停止发布并通知提交人 | 样本分区全量 |
| 提示级 | 波动、均值、分布偏移 | 记录结果并告警 | 样本或抽样 |
| 解析级 | DAG 可加载、SQL 可编译 | 停止发布 | 全量文件 |
| 上线后 | 首轮实际数据校验 | 告警并安排回滚评估 | 生产分区 |
卡点判定要快:对全量历史跑校验会拖慢发布,验收级校验限定在样本分区执行,通常几分钟内出结果。
所有校验都设成阻断级时,发布会被轻微波动频繁打断;团队会开始找绕过流程的办法,卡点就形同虚设了。
只在 CI 跑结构校验、不校验数据是常见缺口:模型语法正确但算出来的数据有问题,问题会直接进入生产。