ods_trd_card_group_info_inc_d.sql 9.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. -- 作者:tianyu.chu
  2. -- 日期:2026-05-07
  3. -- 工单:(无)
  4. -- 目的:raw → ods 增量同步(ADR-03);双源 union (raw dt=${dt} + raw dt=${pdt}) + 活动日 = ${dt} 过滤 + 按运行日 ${dt} 分桶(dt=活动日 GREATEST(create,update))+ (id) dedupe + 动态分区写入
  5. -- 状态:[草案]
  6. -- 备注:sched=T,${dt}=业务日 T-1(yyyyMMdd),${pdt}=T-2;ods 跨 dt 不去重,同 pk 多 dt 并存(拉链表底层);
  7. -- dt=活动日 = GREATEST(create, update):业务会改 create、二者皆活动性时间戳、无"创建日"概念,取较晚者为最后活动日;每单每活动日一份
  8. INSERT OVERWRITE TABLE ods.ods_trd_card_group_info_inc_d PARTITION (dt)
  9. SELECT
  10. CAST(id AS BIGINT) AS id,
  11. CAST(merchant_id AS BIGINT) AS merchant_id,
  12. appid AS appid,
  13. name AS name,
  14. code AS code,
  15. CAST(status AS BIGINT) AS status,
  16. specs AS specs,
  17. type AS type,
  18. random_type AS random_type,
  19. CAST(total_price AS DECIMAL(20,4)) AS total_price,
  20. CAST(copies AS BIGINT) AS copies,
  21. CAST(unit_price AS DECIMAL(20,4)) AS unit_price,
  22. CAST(sold_copies AS BIGINT) AS sold_copies,
  23. release_time AS release_time,
  24. cycle AS cycle,
  25. show_applet AS show_applet,
  26. title AS title,
  27. msg AS msg,
  28. remark AS remark,
  29. CAST(create_time AS TIMESTAMP) AS create_time,
  30. update_by AS update_by,
  31. CAST(update_time AS TIMESTAMP) AS update_time,
  32. CAST(order_quota_min AS BIGINT) AS order_quota_min,
  33. CAST(order_quota_max AS BIGINT) AS order_quota_max,
  34. CAST(user_quota_max AS BIGINT) AS user_quota_max,
  35. CAST(start_time AS TIMESTAMP) AS start_time,
  36. marketing_info AS marketing_info,
  37. reviewmsg AS reviewmsg,
  38. CAST(`lock` AS BOOLEAN) AS `lock`,
  39. commission_rate AS commission_rate,
  40. year AS year,
  41. sport AS sport,
  42. manufacturer AS manufacturer,
  43. sets AS sets,
  44. act AS act,
  45. config AS config,
  46. info_config AS info_config,
  47. CAST(total_num AS BIGINT) AS total_num,
  48. CAST(banner_end_time AS TIMESTAMP) AS banner_end_time,
  49. add_banner AS add_banner,
  50. CAST(finished_time AS TIMESTAMP) AS finished_time,
  51. display_name AS display_name,
  52. CAST(group_sets_no AS BIGINT) AS group_sets_no,
  53. CAST(close_payment_time AS TIMESTAMP) AS close_payment_time,
  54. CAST(confirm_send_time AS TIMESTAMP) AS confirm_send_time,
  55. CAST(close_payment_status AS BIGINT) AS close_payment_status,
  56. CAST(open_card AS BIGINT) AS open_card,
  57. close_payment_record AS close_payment_record,
  58. CAST(group_full_time AS TIMESTAMP) AS group_full_time,
  59. CAST(live_create_time AS TIMESTAMP) AS live_create_time,
  60. CAST(live_start_time AS TIMESTAMP) AS live_start_time,
  61. CAST(live_end_time AS TIMESTAMP) AS live_end_time,
  62. CAST(report_start_time AS TIMESTAMP) AS report_start_time,
  63. CAST(report_end_time AS TIMESTAMP) AS report_end_time,
  64. CAST(report_review_num AS BIGINT) AS report_review_num,
  65. CAST(report_review_first_time AS TIMESTAMP) AS report_review_first_time,
  66. CAST(report_review_end_time AS TIMESTAMP) AS report_review_end_time,
  67. CAST(review_hold_time AS TIMESTAMP) AS review_hold_time,
  68. CAST(review_approval_time AS TIMESTAMP) AS review_approval_time,
  69. CAST(review_num AS BIGINT) AS review_num,
  70. config_json AS config_json,
  71. CAST(free_flag AS BIGINT) AS free_flag,
  72. mer_name AS mer_name,
  73. change_type AS change_type,
  74. CAST(act_price AS DECIMAL(20,4)) AS act_price,
  75. act_config_json AS act_config_json,
  76. CAST(real_sold_num AS BIGINT) AS real_sold_num,
  77. CAST(weight AS BIGINT) AS weight,
  78. hot_type AS hot_type,
  79. CAST(team_first AS BIGINT) AS team_first,
  80. prop1 AS prop1,
  81. prop2 AS prop2,
  82. prop3 AS prop3,
  83. CAST(point_rate AS BIGINT) AS point_rate,
  84. CAST(point_max AS BIGINT) AS point_max,
  85. CAST(point_min AS BIGINT) AS point_min,
  86. CAST(list_id AS BIGINT) AS list_id,
  87. list_code AS list_code,
  88. CAST(mix_copies AS BIGINT) AS mix_copies,
  89. sub_type AS sub_type,
  90. act_point_type AS act_point_type,
  91. CAST(payment_method AS BIGINT) AS payment_method,
  92. CAST(payment_total_price AS DECIMAL(20,4)) AS payment_total_price,
  93. CAST(payment_commission AS DECIMAL(20,4)) AS payment_commission,
  94. CAST(payment_finished_price AS DECIMAL(20,4)) AS payment_finished_price,
  95. CAST(payment_remain_price AS DECIMAL(20,4)) AS payment_remain_price,
  96. CAST(payment_online_price AS DECIMAL(20,4)) AS payment_online_price,
  97. CAST(exclusive AS BIGINT) AS exclusive,
  98. CAST(has_bg AS BIGINT) AS has_bg,
  99. CAST(merchant_sort AS BIGINT) AS merchant_sort,
  100. CAST(del_flg AS BIGINT) AS del_flg,
  101. CAST(del_time AS TIMESTAMP) AS del_time,
  102. review_account AS review_account,
  103. CAST(act_id AS BIGINT) AS act_id,
  104. CAST(sold_end_time AS TIMESTAMP) AS sold_end_time,
  105. CAST(panini_list_id AS BIGINT) AS panini_list_id,
  106. hot_type_config AS hot_type_config,
  107. CAST(goods_type AS BIGINT) AS goods_type,
  108. CAST(report_flag AS BIGINT) AS report_flag,
  109. CAST(use_coupon AS BIGINT) AS use_coupon,
  110. CAST(user_level AS BIGINT) AS user_level,
  111. CAST(custom AS BIGINT) AS custom,
  112. CAST(gift_card_id AS BIGINT) AS gift_card_id,
  113. group_show_name AS group_show_name,
  114. CAST(min_card_num AS BIGINT) AS min_card_num,
  115. act_type AS act_type,
  116. waring_type AS waring_type,
  117. CAST(compensation_status AS BIGINT) AS compensation_status,
  118. point_type AS point_type,
  119. first_act_config AS first_act_config,
  120. gift_config AS gift_config,
  121. CAST(version AS BIGINT) AS version,
  122. extra_prop AS extra_prop,
  123. CAST(use_member_discount AS BIGINT) AS use_member_discount,
  124. CAST(merchant_open AS BIGINT) AS merchant_open,
  125. CASE WHEN del_flg = '1' THEN TRUE ELSE FALSE END AS is_deleted,
  126. ods_dt AS dt
  127. FROM (
  128. SELECT *,
  129. '${dt}' AS ods_dt,
  130. ROW_NUMBER() OVER (
  131. PARTITION BY id
  132. ORDER BY GREATEST(create_time, NULLIF(update_time, '')) DESC
  133. ) AS rn
  134. FROM raw.raw_trd_card_group_info_inc_d
  135. WHERE dt IN ('${dt}', '${pdt}')
  136. AND DATE_FORMAT(GREATEST(create_time, NULLIF(update_time, '')), 'yyyyMMdd') = '${dt}'
  137. ) t
  138. WHERE t.rn = 1;