ods_usr_app_base_user_inc_d.sql 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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_usr_app_base_user_inc_d PARTITION (dt)
  8. SELECT
  9. CAST(id AS BIGINT) AS id,
  10. appid AS appid,
  11. CAST(point AS BIGINT) AS point,
  12. CAST(level AS BIGINT) AS level,
  13. register_channel AS register_channel,
  14. CAST(status AS BIGINT) AS status,
  15. CAST(del_flg AS BIGINT) AS del_flg,
  16. remark AS remark,
  17. create_by AS create_by,
  18. CAST(create_time AS TIMESTAMP) AS create_time,
  19. update_by AS update_by,
  20. CAST(update_time AS TIMESTAMP) AS update_time,
  21. username AS username,
  22. CAST(growth_num AS BIGINT) AS growth_num,
  23. code AS code,
  24. CAST(notify_flag AS BIGINT) AS notify_flag,
  25. CAST(user_id AS BIGINT) AS user_id,
  26. notify_type AS notify_type,
  27. CAST(face_verify AS BIGINT) AS face_verify,
  28. CAST(open_psd AS BIGINT) AS open_psd,
  29. CAST(refuse_pick_up AS BIGINT) AS refuse_pick_up,
  30. prop1 AS prop1,
  31. prop2 AS prop2,
  32. prop3 AS prop3,
  33. prop4 AS prop4,
  34. CAST(window_open AS BIGINT) AS window_open,
  35. CAST(open_invoice AS BIGINT) AS open_invoice,
  36. CAST(blacklist AS BIGINT) AS blacklist,
  37. id_card AS id_card,
  38. CAST(member_level AS BIGINT) AS member_level,
  39. member_name AS member_name,
  40. CAST(current_month_growth AS BIGINT) AS current_month_growth,
  41. CAST(member_init_flag AS BIGINT) AS member_init_flag,
  42. CAST(member_keep_growth AS BIGINT) AS member_keep_growth,
  43. register_ip_addr AS register_ip_addr,
  44. register_addr AS register_addr,
  45. login_ip_addr AS login_ip_addr,
  46. login_addr AS login_addr,
  47. CAST(notify_top_show AS BIGINT) AS notify_top_show,
  48. CAST(voice_reminder AS BIGINT) AS voice_reminder,
  49. CAST(vibrate_reminder AS BIGINT) AS vibrate_reminder,
  50. CAST(consume_amount AS DECIMAL(20,4)) AS consume_amount,
  51. CAST(order_total_num AS BIGINT) AS order_total_num,
  52. CAST(open_card_show AS BIGINT) AS open_card_show,
  53. effects_type AS effects_type,
  54. live_config_json AS live_config_json,
  55. CAST(cancel_verify_num AS BIGINT) AS cancel_verify_num,
  56. CAST(version AS BIGINT) AS version,
  57. CAST(daily_limit AS BIGINT) AS daily_limit,
  58. CAST(weekly_limit AS BIGINT) AS weekly_limit,
  59. CAST(monthly_limit AS BIGINT) AS monthly_limit,
  60. CAST(live_anonymous AS BIGINT) AS live_anonymous,
  61. CASE WHEN del_flg = '1' THEN TRUE ELSE FALSE END AS is_deleted,
  62. ods_dt AS dt
  63. FROM (
  64. SELECT *,
  65. DATE_FORMAT(update_time, 'yyyyMMdd') AS ods_dt,
  66. ROW_NUMBER() OVER (
  67. PARTITION BY id, DATE_FORMAT(update_time, 'yyyyMMdd')
  68. ORDER BY update_time DESC
  69. ) AS rn
  70. FROM raw.raw_usr_app_base_user_inc_d
  71. WHERE dt IN ('${dt}', '${pdt}')
  72. AND DATE_FORMAT(update_time, 'yyyyMMdd') = '${dt}'
  73. ) t
  74. WHERE t.rn = 1;