ods_trd_card_group_info_inc_d.sql 9.1 KB

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