外观
改表 / 改口径前怎么做影响评估
难度与前置
难度:进阶
前置:能说出一张表的直接上下游;理解 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 产品或业务对接人
- [ ] 对账 / 财务相关方(金额类)
门禁:
- 变更单 + 影响面表已存档
- 必要签字齐全
- 若对外出口:经 ADS 出数验收 再切
current - 若补数:干跑或演练通过(视窗口大小)
6. 验证计划(上线当日可执行)
text
技术:样例分区行数、主键、与上游 diff
口径:新旧 version 并行一天的 diff 解释
出口:灰度 / 影子读,失败切回
观察期:__ 小时内盯告警与业务抽检清单7. 回滚预案(先写后做)
- 代码 / 映射回滚点
current视图回切版本- 补数中途 No-Go 时如何恢复日常调度(见演练篇 Go/No-Go)
无回滚预案 → No-Go。
常见坑(至少这些)
- 只改本表任务,不查隔层 ADS/API
- 静默改同名口径,历史趋势当业务波动
- 回刷范围拍脑袋,不估集群与 SLA
- 通知只发群「明天要改」,无影响面表
- 先上线再生产评估(倒序)
- 下线表只停调度,不挡下游读(幽灵依赖)
- 把影响评估当成补数手册(本篇评估,专篇执行)
如何验收(带数字的前后对比)
| 项 | 达标 |
|---|---|
| 影响面表 | 下游资产所列与抽查血缘一致,无遗漏已知出口 |
| 破坏性分级 | 已勾选;行为变更有新 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
改写说明:影响评估清单;执行补数/演练/发布指向既有专篇,不重写。无未公开公司数据。