20260510_dws_usr_user_trade_1d_init.sql 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. -- 作者:tianyu.chu
  2. -- 日期:2026-05-10
  3. -- 工单:(无)
  4. -- 目的:dws_usr_user_trade_1d 初始化(kb/29 §2):
  5. -- 扫 dwd_trd_order_pay_apd_d 全量历史分区 +
  6. -- 过滤 category IS NOT NULL(脏数据 other 已在 DIM 清洗为 NULL,聚合时排除,kb/28 §3.2)+
  7. -- GROUP BY (user_id, category, dwd.dt) 聚合 +
  8. -- 动态分区写入 dws dt(承袭 dwd 业务时间分区)
  9. -- 状态:[待执行]
  10. -- 备注:跑一次后由 jobs/dws/usr/dws_usr_user_trade_1d.sql 接管日常增量;
  11. -- dt 取 dwd.dt 直接传(dwd 已按 DATE(payment_success_time) 落分区,dws 不再 DATE_FORMAT);
  12. -- 历史业务时间跨 2021-10 ~ ${dt},动态分区上限 SET 提到 2000;
  13. -- 前置:dwd_trd_order_pay_apd_d_init 已跑完(全量历史已落 dwd)
  14. set hive.exec.max.dynamic.partitions=2000;
  15. set hive.exec.max.dynamic.partitions.pernode=200;
  16. INSERT OVERWRITE TABLE dws.dws_usr_user_trade_1d PARTITION (dt)
  17. SELECT
  18. user_id AS user_id,
  19. category AS category,
  20. COUNT(DISTINCT order_id) AS pay_order_cnt,
  21. SUM(purchase_cnt) AS purchase_cnt,
  22. SUM(payable_amt_cny) AS payable_amt_cny,
  23. SUM(pay_amt_cny) AS pay_amt_cny,
  24. SUM(trade_amt_cny) AS trade_amt_cny,
  25. SUM(settle_amt_cny) AS settle_amt_cny,
  26. SUM(merchant_discount_amt_cny) AS merchant_discount_amt_cny,
  27. SUM(platform_discount_amt_cny) AS platform_discount_amt_cny,
  28. SUM(member_discount_amt_cny) AS member_discount_amt_cny,
  29. SUM(act_discount_amt_cny) AS act_discount_amt_cny,
  30. SUM(point_deduct_amt_cny) AS point_deduct_amt_cny,
  31. SUM(shipping_amt_cny) AS shipping_amt_cny,
  32. SUM(point) AS point,
  33. CURRENT_TIMESTAMP() AS etl_time,
  34. dt AS dt
  35. FROM dwd.dwd_trd_order_pay_apd_d
  36. WHERE category IS NOT NULL
  37. GROUP BY user_id, category, dt;