首页/数据/数据工程与 ETL 速查/上线质量卡点(CI 集成)

上线质量卡点(CI 集成)

把数据校验接进发布流程:模型与调度变更后先跑集成测试与质量规则,通过才允许发布到生产;卡点要区分阻断级(键完整、金额勾稽)与提示级(波动类)。

上线质量卡点是什么

把数据校验接进发布流程:模型与调度变更后先跑集成测试与质量规则,全部通过才允许发布到生产。卡点通常设在三处——合并请求检查、发布流水线、上线后首次运行。关键设计是分级:键完整性与金额勾稽这类问题属于阻断级,必须拦住发布;波动与均值类属于提示级,失败只记录告警不阻断。卡点判定要快,验收级校验限定在样本分区执行,否则没人愿意等它跑完,卡点很快会被绕过。

基本信息

卡点位置合并请求检查、发布流水线、上线后首次运行
阻断级主键唯一、关键字段非空、金额勾稽
提示级波动、均值、分布类校验
产物测试报告与失败明细留档,作为发布依据
性能要求限定样本分区或样本量,控制在分钟级

典型使用场景

  • 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 跑结构校验、不校验数据是常见缺口:模型语法正确但算出来的数据有问题,问题会直接进入生产。

易错点

  • 所有校验都设成阻断级,发布流程频繁被打断,团队最终绕过卡点
  • 只在 CI 跑结构校验,数据质量问题在生产环境才暴露
  • 卡点执行范围扩到全量历史,单次耗时过长导致无人愿意等,流程被跳过
  • 卡点失败没有明确通知对象,提交人不知道要改什么,发布卡在中间状态

数据来源与参考

  • dbt 官方文档:在 CI 中运行测试
  • Apache Airflow 官方文档:DAG 测试
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌