refactor CHPA 01 and 02 warehouse jobs

This commit is contained in:
2026-08-20 19:39:11 +08:00
parent 8c3f45f178
commit fd1355a4fb
26 changed files with 4391 additions and 44 deletions
+11 -2
View File
@@ -69,7 +69,7 @@ DWD -> DWS -> DM
- GND 时间默认值中 `190001/209901``200001/299912` 的历史差异暂不统一。
- CHPA sales 全国数据从 `202201` 开始,省级数据不增加该下限。
- Market 扩展市场 ratio 的旧脚本净结果保持为 `1`;缺失 `ELSE` 的疑点只记录,不在本批修复。
- 日期维度保留 `max(YM)-900` 的旧窗口算法,尽管旧注释称“最近五年”。
- 日期维度保留 YYYYMM 值 `max(YM)-900`(约九年)的旧算法,尽管旧注释称“最近五年”。
## 5. 本批修复的工程问题
@@ -82,7 +82,16 @@ DWD -> DWS -> DM
- Market 的共享临时表、MERGE DELETE 和 UPDATE 改为 notebook 内 CTE、anti join、rank 和投影。
- Pharbers 入湖在无文件时失败,避免旧 staging 被再次覆盖到 DWD。
## 6. 下一批必须迁移的 03 消费者
## 6. 上线前契约确认
- Legacy manufacturer build 使用 `T1.*` 且仓库无完整 DDL。新表明确收窄为当前消费者需要的 9 列,注释 CTAS 从源表达式推导字段类型;新增消费者字段前必须先 `DESCRIBE` 源表并协调扩展契约。
- Market-TA 明确收窄为 `MARKET, TA` 两列,并用零行 CTAS 推导类型;上线前用 `DESCRIBE` 确认旧 source/target 没有仍需保留的业务列。
- `dws_ext_td_ims_pack_ym` 首次部署必须 `DEEP CLONE` 旧表,不能只复制 schema,否则五年窗口外的历史映射会丢失。
- CHPA sales 的省份映射从 DM geography 改为 DWS geo 后,必须验证 fact `PROVINCE_C` 到 geo `PROVINCE_C` 的匹配率和 geo 省份唯一性。
- Legacy DM 消费者读取 `CORP_DES_CN` / `MANU_DES_CN`,而 02 构建契约保留 `CORP_DES_C` / `MANU_DES_C`03 迁移时必须统一。
- Market 的扩展 ratio、扩展行 `BU`/`BrandType` 位置互换、KC NULL 去重和无总排序 tie-breaker 均为兼容保留项,业务修复需单独变更。
## 7. 下一批必须迁移的 03 消费者
本批新表上线后,以下类型的旧引用仍存在于 `03` 脚本中:
+12 -6
View File
@@ -62,15 +62,19 @@ DWD -> DWS -> DM
- 需要区分来源系统时,将来源放在业务实体开头,例如 `ims_atc_hierarchy`
- `atc``nfc``ims` 等已形成业务共识的缩写可以保留。
首批及后续建议映射:
本批核心映射:
| 旧表 | 新表 | 类型 |
| --- | --- | --- |
| `dwd.dwd_ims_atc_hierarchy` | `dws.dws_ext_td_ims_atc_hierarchy` | DWS 维度 |
| `dwd.dwd_ims_nfc_hierarchy` | `dws.dws_ext_td_ims_nfc_hierarchy` | DWS 维度 |
| `dwd.dwd_ims_td_manufacturer_corp` | `dws.dws_ext_td_ims_manufacturer_corporation` | DWS 维度,后续处理 |
| `dwd.dwd_ims_td_pack_property` | `dws.dws_ext_td_ims_pack_property` | DWS 维度,后续处理 |
| `dwd.dwd_gnd_pharbers_prov_fact` | `dws.dws_ext_tf_pharbers_province_sales` | DWS 事实,需先确认粒度 |
| `dwd.dwd_ims_td_manufacturer_corp` | `dws.dws_ext_td_ims_manufacturer_corporation` | DWS 维度 |
| `dwd.dwd_ims_td_pack_property` | `dws.dws_ext_td_ims_pack_property` | DWS 维度 |
| `tmp.tmp_ims_td_prod_tmp` | `dws.dws_ext_td_ims_product_multi_manufacturer` | DWS 度 |
| `tmp.tmp_ims_tf_fact_sales` | `dws.dws_ext_tf_ims_chpa_sales` | DWS 事实 |
| `dws.dws_ims_td_market` | `dws.dws_ext_td_ims_market` | DWS 维度 |
`dwd.dwd_gnd_pharbers_prov_fact` 是省级原子事实,仍保留在 DWD;它与 IMS 全国事实组合后的可复用结果写入 `dws.dws_ext_tf_ims_chpa_sales`。全部 01/02 文件级映射见 `docs/chpa_01_02_migration.md`
## 4. 文件和目录命名
@@ -127,7 +131,7 @@ sql/chpa/02_dws/01_dws_ext_td_ims_atc_hierarchy.sql
- 每个脚本必须声明预期目标粒度。
- 最少验证新旧行数、双向差集、业务键重复、必填键空值和层级未匹配数。
## 8. 首批兼容说明
## 8. 兼容和验证说明
ATC 和 NFC 脚本保留旧逻辑中的父级编码规则:
@@ -137,4 +141,6 @@ ATC 和 NFC 脚本保留旧逻辑中的父级编码规则:
- NFC 2 级关联 1 级:取前 1 位。
- NFC 3 级关联 2 级:取前 2 位。
两个 DWS 脚本执行后运行 `validation/chpa/02_dws/validate_hierarchy_refactor.sql`。新 DWS 输出与旧 DWD 基线的行数必须一致,双向差集必须为 0;重复路径和未匹配层级作为业务 review 指标记录。
两个 hierarchy 脚本执行后运行 `validation/chpa/02_dws/validate_hierarchy_refactor.sql`。新 DWS 输出与旧 DWD 基线的行数必须一致,双向差集必须为 0;重复路径和未匹配层级作为业务 review 指标记录。
完整 01/02 批次执行后运行 `validation/chpa/02_dws/validate_01_02_refactor.sql`。比较时排除重新生成的 ETL 时间戳,并区分两类检查:逻辑等价迁移必须通过行数和双向 `EXCEPT ALL` 硬门禁;主动修复层级违规或已知故障模式的脚本记录质量指标和人工确认项,不伪造等价结论。