首页/数据/数据工程与 ETL 速查/源头治理与数据契约

源头治理与数据契约

数据质量的根因常在源头:与上游约定字段非空、枚举、更新时效等约束(数据契约),在入库前做格式与范围校验,把问题挡在入口;上游的结构与口径变更纳入通知与评审流程,避免下游被动发现。

源头治理与数据契约

数据质量的根因常在源头:字段缺失、枚举新增不通知、更新时间不稳定,都会让下游反复救火。数据契约(data contract)把约定显式化——字段类型与非空约束、枚举取值集合、唯一性、可接受的更新时效(SLA)、负责人,并在入库前做自动校验,把问题挡在入口。同时把上游的结构与口径变更纳入通知与评审流程,避免下游在报表出错后才发现字段被改。契约只有在自动校验时才真正有效。

基本信息

契约内容schema 约束、枚举集合、唯一性、更新时效 SLA、负责人
入口校验接入时自动校验结构与取值约束,失败即告警
变更通知DDL 与口径调整走评审并同步下游
责任共担契约双方共同维护,违约有记录
常见载体YAML 或 JSON 描述文件,纳入版本管理

典型使用场景

  • 新数据源接入前,先约定字段与更新时效,再开发加工逻辑
  • 上游系统改字段前,通过契约评审评估下游影响
  • 每日入口校验:源端结构与取值不符合契约时立即告警
  • SLA 管理:约定最晚产出时间,超时自动通知上游值班
  • 跨团队协作:把口头约定固化成可校验的文件,减少扯皮

数据契约示意

数据契约示意
# 数据契约示例(简化)
table: ods_orders
owner: trade-system
schema:
  order_id: {type: bigint, nullable: false, unique: true}
  amount:   {type: decimal(12,2), nullable: false, min: 0}
  status:   {type: string, enum: [PAID, REFUND, CLOSED]}
freshness:
  sla: "T+1 06:00"      # 最晚产出时间,超时告警
  timezone: "Asia/Shanghai"
# 变更流程:修改契约需走评审,评审通过后同步下游负责人

契约条款与检查方式

条款含义检查方式违反后果
字段约束类型、非空、唯一接入脚本校验加工失败或主键重复
枚举集合状态等取值白名单取值越界计数状态字段出现未知值
更新时效最晚产出时间新鲜度监控比对下游产出整体延后
变更通知结构调整需评审变更记录与评审单下游被动发现并返工
契约要自动化才有效:靠文档与口头约定,几个月后就会和实际实现脱节,出现问题双方各执一词。
上游改字段不通知,下游往往在报表出错后才发现:把变更通知纳入上游的发布检查项,比事后追责更有用。
契约条款不宜一次写几十条:先覆盖最影响下游的字段与时效(金额、主键、状态、产出时间),落地后再逐步补充。

易错点

  • 契约只写在文档里没有自动校验,流于形式,实际约束为零
  • 上游改字段不通知,下游在报表出错后才发现,返工成本高
  • 契约条款一次堆几十条,缺乏重点,落地时无人执行
  • 枚举集合变更未同步下游,状态字段出现未知值导致过滤口径出错

数据来源与参考

  • 行业数据契约(Data Contract)实践
  • DAMA-DMBOK(数据治理)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌