Skip to content

改表 / 改口径前怎么做影响评估 ​

难度与前置

难度:进阶
前置:能说出一张表的直接上下游;理解 READY 与发布门禁。
读完能做什么:在改字段、改口径、下线表之前,填完影响评估单:谁受影响、要不要回刷、谁必须签字、如何验证。

适用场景 ​

  • 改 DWD/DWS/ADS 字段类型、主键、枚举或分区
  • 改指标口径或映射逻辑,可能影响历史数
  • 下线表 / 合并重复表 / 换主题归属

不适用:

  • 纯加注释、加非破坏性可选列且无下游依赖(仍建议记一笔变更,但可走轻量流程)
  • 客户端埋点细节(先走 埋点与口径变更,再回到本篇评估仓侧)
  • 已确定要补数时的操作步骤(策略见 rerun-catchup,上场见 演练)

真实场景(一条) ​

运营要给 dwd_ad_spend_detail_di 增加「是否赠款」拆分,并改 ADS「消耗」默认不含赠款。开发直接改 SQL 上线:

  • 下游 3 张 DWS、2 个 API、1 个财务对账任务未评估
  • 历史 30 天未回刷,看板趋势断裂被当成「投放变差」
  • 无通知,财务月中对账才发现

按本清单重来:血缘列出 6 个出口 → 口径走新 version → 评估回刷 T-30 → 通知财务与运营 → ADS 门禁后切 current。同周无「静默改义」投诉。

怎么做(步骤清单) ​

1. 冻结变更意图(一句话) ​

text
对象:表 / 指标 / 任务 ________
变更类型:□加列 □改类型 □改口径 □改主键 □下线 □其他
动机:________
期望生效日:________
发起人 / 审批人:________

说不清意图 → 不允许进血缘盘点以外的步骤。

2. 盘血缘:上游 → 本对象 → 下游 ​

至少拉齐三层(工具:调度血缘 / 表依赖 / 手工登记均可):

方向要列出的东西
上游源表、维度、埋点/消息、外部依赖 READY
同层旁路并行任务是否写同分区、共享维度
下游表、工作流、ADS、API、看板、导出、质检

产出「影响面表」:

text
下游资产 | 负责人 | 是否读被改字段/口径 | 是否必须同日切换 | 通知状态

禁止只看直接子任务;ADS/API/看板常隔一层。

3. 判破坏性(决定兼容策略) ​

级别例子默认策略
兼容新增可空列、新增指标 version可先上后用;字典登记
行为变更同名字段含义变、过滤条件变新 version / 新列;禁止静默改义
破坏性删列、改主键、改分区、下线双轨窗口 + 下游签字 + 下线日

口径类变更与 埋点与口径变更、口径一致性 对齐:能加 v2 就不要改 v1 的 SQL 含义。

4. 定回刷范围(写清「不刷」的后果) ​

选项何时选动作
不回刷只影响新分区、历史可旧口径并存文档写明「历史不可与新口径拼接」
窗口回刷趋势/对账必须连续列出 dt 起止;走 rerun-catchup
全量重做主键/分区重构双表切换 + 演练 过后再扩窗

回刷评估必填:预估时长、并行度、是否与 P0 抢资源、是否需先演练。

5. 通知与门禁(谁签字) ​

最低通知集(按影响面勾选):

  • [ ] 下游表 owner
  • [ ] 调度 / 值班(若动互斥或补数)
  • [ ] 看板 / API 产品或业务对接人
  • [ ] 对账 / 财务相关方(金额类)

门禁:

  1. 变更单 + 影响面表已存档
  2. 必要签字齐全
  3. 若对外出口:经 ADS 出数验收 再切 current
  4. 若补数:干跑或演练通过(视窗口大小)

6. 验证计划(上线当日可执行) ​

text
技术:样例分区行数、主键、与上游 diff
口径:新旧 version 并行一天的 diff 解释
出口:灰度 / 影子读,失败切回
观察期:__ 小时内盯告警与业务抽检清单

7. 回滚预案(先写后做) ​

  • 代码 / 映射回滚点
  • current 视图回切版本
  • 补数中途 No-Go 时如何恢复日常调度(见演练篇 Go/No-Go)

无回滚预案 → No-Go。

常见坑(至少这些) ​

  1. 只改本表任务,不查隔层 ADS/API
  2. 静默改同名口径,历史趋势当业务波动
  3. 回刷范围拍脑袋,不估集群与 SLA
  4. 通知只发群「明天要改」,无影响面表
  5. 先上线再生产评估(倒序)
  6. 下线表只停调度,不挡下游读(幽灵依赖)
  7. 把影响评估当成补数手册(本篇评估,专篇执行)

如何验收(带数字的前后对比) ​

项达标
影响面表下游资产所列与抽查血缘一致,无遗漏已知出口
破坏性分级已勾选;行为变更有新 version
回刷结论刷或不刷有书面理由;若刷则有窗口与演练结论
签字必选角色齐全
上线后观察期内无未解释的 P0 错数;出口可回滚
text
影响评估单(可复制)
变更对象 / 类型 / 生效日:
上游:
下游(表/任务/ADS/API/看板):
破坏性级别:兼容 / 行为变更 / 破坏性
兼容策略:
回刷:否 / 窗口 ____ / 需演练:是否
通知与签字:
验证与回滚:
指挥官签字:________

Checklist:

  • [ ] 意图一句话清晰
  • [ ] 血缘含隔层出口
  • [ ] 口径不静默改义
  • [ ] 回刷与 SLA 已估
  • [ ] 门禁与回滚写明
  • [ ] 无未公开公司项目名写入文档

相关专篇(互链) ​

你要做的事看哪篇
埋点/口径怎么改、兼容窗口埋点与口径变更
ADS/服务层怎么验收再发布ADS 出数验收
确定要回刷后怎么安全执行补数/重跑/追数、补数演练
依赖与 READY 怎么设计调度依赖
本篇只做影响评估与门禁清单,不替代执行专篇

相关面试题 ​

题库小程序链接待定;先用站内锚点占位。

  • [ ] 题:影响评估单最少要冻结什么意图?(考察点:意图一句话清晰)→ 占位:#todo-interview-lineage-impact-intent
  • [ ] 题:为什么血缘必须含隔层出口?(考察点:下游资产与抽查血缘一致,含 ADS/API/看板)→ 占位:#todo-interview-lineage-impact-lineage
  • [ ] 题:行为变更与兼容变更默认策略差在哪?(考察点:破坏性分级;行为变更用新 version,不静默改义)→ 占位:#todo-interview-lineage-impact-breaking
  • [ ] 题:回刷「刷或不刷」怎样才算验收过?(考察点:书面理由;若刷有窗口与演练结论+签字)→ 占位:#todo-interview-lineage-impact-backfill

改写说明:影响评估清单;执行补数/演练/发布指向既有专篇,不重写。无未公开公司数据。