Bladeren bron

fix(ods/trd): ful_d seed 加 dt <= ${dt} 过滤

seed 到 D 应只取 D 及之前的 inc,否则会把 D 之后的变更算进 full dt=D,
标签与内容不符;加过滤后可 seed 到任意历史日。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
tianyu.chu 2 weken geleden
bovenliggende
commit
5d85b7de4a

+ 4 - 1
manual/backfill/20260717_ods_trd_card_group_info_ful_d_seed.sql

@@ -3,7 +3,9 @@
 -- 工单:(无)
 -- 目的:一次性 seed 拼团全量最新态表——扫全部 ods inc 分区,按 id 取最新一版,写 full dt=${dt}
 -- 状态:[待执行]
--- 备注:merge 模式需要一个起点,本脚本就是那个起点,只跑一次;之后由
+-- 备注:`WHERE dt <= '${dt}'` 保证 full dt=D 的语义 = "截至业务日 D 结束时的最新态",
+--       不会把 D 之后的变更算进来;因此可 seed 到任意历史日。
+--       merge 模式需要一个起点,本脚本就是那个起点,只跑一次;之后由
 --       jobs/ods/trd/ods_trd_card_group_info_ful_d.sql 天天 merge 递推。
 --       排序键 COALESCE(update_time, create_time) 与 ods 的 ods_dt 归位口径一致。
 --       静态分区写入(PARTITION(dt='${dt}')):源=inc、目标=full,不同表,无读写冲突。
@@ -40,5 +42,6 @@ FROM (
     SELECT *,
         ROW_NUMBER() OVER (PARTITION BY id ORDER BY COALESCE(update_time, create_time) DESC) AS rn
     FROM ods.ods_trd_card_group_info_inc_d
+    WHERE dt <= '${dt}'
 ) t
 WHERE t.rn = 1;

+ 4 - 1
manual/backfill/20260717_ods_trd_card_group_order_info_ful_d_seed.sql

@@ -3,7 +3,9 @@
 -- 工单:(无)
 -- 目的:一次性 seed 订单全量最新态表——扫全部 ods inc 分区,按 id 取最新一版,写 full dt=${dt}
 -- 状态:[待执行]
--- 备注:merge 模式需要一个起点,本脚本就是那个起点,只跑一次;之后由
+-- 备注:`WHERE dt <= '${dt}'` 保证 full dt=D 的语义 = "截至业务日 D 结束时的最新态",
+--       不会把 D 之后的变更算进来;因此可 seed 到任意历史日。
+--       merge 模式需要一个起点,本脚本就是那个起点,只跑一次;之后由
 --       jobs/ods/trd/ods_trd_card_group_order_info_ful_d.sql 天天 merge 递推。
 --       排序键 COALESCE(update_time, create_time) 与 ods 的 ods_dt 归位口径一致。
 --       静态分区写入(PARTITION(dt='${dt}')):源=inc、目标=full,不同表,无读写冲突。
@@ -34,5 +36,6 @@ FROM (
     SELECT *,
         ROW_NUMBER() OVER (PARTITION BY id ORDER BY COALESCE(update_time, create_time) DESC) AS rn
     FROM ods.ods_trd_card_group_order_info_inc_d
+    WHERE dt <= '${dt}'
 ) t
 WHERE t.rn = 1;