|
@@ -2,14 +2,15 @@
|
|
|
-- 日期:2026-07-23
|
|
-- 日期:2026-07-23
|
|
|
-- 工单:(无)
|
|
-- 工单:(无)
|
|
|
-- 目的:全量 re-init 重灌——读 dump0722(全表当前态),按活动日重灌 ods_inc 的全部历史分区(至 0721)。
|
|
-- 目的:全量 re-init 重灌——读 dump0722(全表当前态),按活动日重灌 ods_inc 的全部历史分区(至 0721)。
|
|
|
--- 每单落两份:创建日 + 活动日;活动日 = GREATEST(create, update)(兼容后端 update<create 脏单,取较晚者)。
|
|
|
|
|
|
|
+-- 每单一行,落其活动日 = GREATEST(create, update)。业务会改 create,故 create/update 皆活动性时间戳、
|
|
|
|
|
+-- 无"创建日"概念,取二者较晚者为"最后活动日"。
|
|
|
-- 状态:[待执行]
|
|
-- 状态:[待执行]
|
|
|
--- 备注:口径与 jobs/ods/trd/ods_trd_card_group_order_info_inc_d.sql 完全一致(GREATEST 活动日 + explode 双份);
|
|
|
|
|
--- 上界 ≤ 0721:0722 交调度自愈(任务日 0723 处理 0722),故 act_dt 封顶 0721、无下界(全史 2021~0721);
|
|
|
|
|
|
|
+-- 备注:口径与 jobs/ods/trd/ods_trd_card_group_order_info_inc_d.sql 一致(GREATEST 活动日、单条);
|
|
|
|
|
+-- 上界 ≤ 0721:0722 交调度自愈(任务日 0723 处理 0722),故 adt 封顶 0721、无下界(全史 2021~0721);
|
|
|
-- 全史约 1700 个日分区,max.dynamic.partitions/pernode 调 10000;DISTRIBUTE BY dt 防每分区小文件;
|
|
-- 全史约 1700 个日分区,max.dynamic.partitions/pernode 调 10000;DISTRIBUTE BY dt 防每分区小文件;
|
|
|
--- explode 用 CASE 去重「创建日=活动日」的单;dump 一单一行,(id,act_dt) 天然不重;
|
|
|
|
|
|
|
+-- dump 一单一行、一个活动日,(id) 天然不重,无需去重/explode;
|
|
|
-- 跑前需先 DROP + 重建空表 ods.ods_trd_card_group_order_info_inc_d(外部表 DROP 不清 HDFS,另跑 hdfs rm);
|
|
-- 跑前需先 DROP + 重建空表 ods.ods_trd_card_group_order_info_inc_d(外部表 DROP 不清 HDFS,另跑 hdfs rm);
|
|
|
--- 跑完并和 PG 按 create 验平后,dump0722 中转表可 DROP。
|
|
|
|
|
|
|
+-- 跑完按 id 对 dump(活动日≤0721 的单数)验平后,dump0722 中转表可 DROP。
|
|
|
-- 跑法(一次):python3 bin/spark-sql-starter.py -f manual/backfill/20260723_ods_trd_card_group_order_info_reinit_rebucket.sql
|
|
-- 跑法(一次):python3 bin/spark-sql-starter.py -f manual/backfill/20260723_ods_trd_card_group_order_info_reinit_rebucket.sql
|
|
|
|
|
|
|
|
SET hive.exec.dynamic.partition=true;
|
|
SET hive.exec.dynamic.partition=true;
|
|
@@ -122,16 +123,12 @@ SELECT
|
|
|
CAST(self_pickup_time AS TIMESTAMP) AS self_pickup_time,
|
|
CAST(self_pickup_time AS TIMESTAMP) AS self_pickup_time,
|
|
|
CAST(act_discount AS DECIMAL(20,4)) AS act_discount,
|
|
CAST(act_discount AS DECIMAL(20,4)) AS act_discount,
|
|
|
CASE WHEN del_flg = '1' THEN TRUE ELSE FALSE END AS is_deleted,
|
|
CASE WHEN del_flg = '1' THEN TRUE ELSE FALSE END AS is_deleted,
|
|
|
- act_dt AS dt
|
|
|
|
|
|
|
+ adt AS dt
|
|
|
FROM (
|
|
FROM (
|
|
|
SELECT *,
|
|
SELECT *,
|
|
|
- DATE_FORMAT(create_time, 'yyyyMMdd') AS cdt, -- 创建日
|
|
|
|
|
- DATE_FORMAT(GREATEST(create_time, NULLIF(update_time, '')), 'yyyyMMdd') AS adt -- 活动日 = MAX(create,update)
|
|
|
|
|
|
|
+ DATE_FORMAT(GREATEST(create_time, NULLIF(update_time, '')), 'yyyyMMdd') AS adt -- 活动日 = GREATEST(create,update)
|
|
|
FROM raw.tmp_trd_card_group_order_info_dump0722
|
|
FROM raw.tmp_trd_card_group_order_info_dump0722
|
|
|
WHERE dt = '20260722'
|
|
WHERE dt = '20260722'
|
|
|
) t
|
|
) t
|
|
|
-LATERAL VIEW explode(
|
|
|
|
|
- CASE WHEN cdt = adt THEN array(cdt) ELSE array(cdt, adt) END -- 同日一份;跨日炸成 创建日+活动日 两行
|
|
|
|
|
-) e AS act_dt
|
|
|
|
|
-WHERE act_dt <= '20260721'
|
|
|
|
|
|
|
+WHERE adt <= '20260721'
|
|
|
DISTRIBUTE BY dt;
|
|
DISTRIBUTE BY dt;
|