Просмотр исходного кода

fix(raw/trd): 2026 重分桶去掉多余的 (id,ods_dt) 去重

dump 是 PG 单次快照、一单一行、无同日重复,日常 ODS 那套去重是为 raw
48h 双源重叠设的,这里空操作,删掉。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
tianyu.chu 2 недель назад
Родитель
Сommit
389b83295e

+ 5 - 8
manual/backfill/20260715_ods_trd_card_group_order_info_2026rebucket.sql

@@ -5,8 +5,10 @@
 --       按 ods_dt = COALESCE(update_time,create_time) 的日动态分区写入 ods(等价按天 backfill 的批量版)
 -- 状态:[待执行]
 -- 备注:动态分区 INSERT OVERWRITE 只覆盖 SELECT 出现的 ods_dt(2026 各日),不动 2026 前历史分区;
---       DISTRIBUTE BY ods_dt 防每分区小文件(ADR-15);dump 一单一行,dedupe 实为直通、留作与日常 ODS 同构。
---       中间态按决策丢弃:每单只落"当前最终态"到其最后变更日分区。
+--       DISTRIBUTE BY ods_dt 防每分区小文件(ADR-15);
+--       不做日常 ODS 的 (id,ods_dt) 去重——那是为 raw 48h 双源 union 的同日重叠去重,
+--       dump 是 PG 单次快照、一单一行、无同日重复,去重是空操作,故省。
+--       中间态按决策丢弃:每单只落当前最终态到其最后变更日分区(一单一行,多版本不进 ods)。
 --       跑完确认无误后 DROP TABLE raw.tmp_trd_card_group_order_info(内部表连数据一起清)。
 
 SET hive.exec.dynamic.partition=true;
@@ -111,13 +113,8 @@ SELECT
     ods_dt                                           AS dt
 FROM (
     SELECT *,
-        DATE_FORMAT(COALESCE(NULLIF(update_time, ''), create_time), 'yyyyMMdd') AS ods_dt,
-        ROW_NUMBER() OVER (
-            PARTITION BY id, DATE_FORMAT(COALESCE(NULLIF(update_time, ''), create_time), 'yyyyMMdd')
-            ORDER BY COALESCE(NULLIF(update_time, ''), create_time) DESC
-        ) AS rn
+        DATE_FORMAT(COALESCE(NULLIF(update_time, ''), create_time), 'yyyyMMdd') AS ods_dt
     FROM raw.tmp_trd_card_group_order_info
     WHERE dt = '20260716'
 ) t
-WHERE t.rn = 1
 DISTRIBUTE BY ods_dt;