| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- -- 作者:tianyu.chu
- -- 日期:2026-05-09
- -- 工单:(无)
- -- 目的:dim_usr_user_ful_d 初始化(kb/28 §1.3):扫 ods 历史分区 (dt < ${dt}) + ROW_NUMBER 取每 pk 最新版本,
- -- base_user LEFT JOIN cert_info 落 dim dt=${pdt} 单分区
- -- 状态:[待执行]
- -- 备注:首次上线 init 与 sche 同一天跑(sched=T),${dt}=T-1,${pdt}=T-2;
- -- init 灌 dim.dt=${pdt} 作为 sche 首次依赖的"昨日 dim";扫 ods 范围 dt < ${dt} (即 dt <= ${pdt});
- -- cert_info update_time 几乎全空,ORDER BY 用 COALESCE(update_time, create_time) 兜底;
- -- 跑一次后由 jobs/dim/usr/dim_usr_user_ful_d.sql 接管日常增量
- INSERT OVERWRITE TABLE dim.dim_usr_user_ful_d PARTITION (dt='${pdt}')
- SELECT
- bu.id AS user_id,
- bu.appid AS appid,
- bu.username AS username,
- bu.code AS code,
- ci.cert_sex AS sex_cert,
- ci.cert_birthday AS birthday_cert,
- ci.cert_province AS cert_province,
- ci.cert_city AS cert_city,
- CASE WHEN ci.user_id IS NOT NULL THEN TRUE ELSE FALSE END AS is_cert,
- bu.id_card AS id_card,
- bu.face_verify AS face_verify,
- bu.cancel_verify_num AS cancel_verify_num,
- bu.register_channel AS register_channel,
- bu.register_addr AS register_addr,
- bu.register_ip_addr AS register_ip_addr,
- bu.create_time AS reg_create_time,
- bu.login_addr AS login_addr,
- bu.login_ip_addr AS login_ip_addr,
- bu.level AS level,
- bu.member_level AS member_level,
- bu.member_name AS member_name,
- bu.growth_num AS growth_num,
- bu.current_month_growth AS current_month_growth,
- bu.member_keep_growth AS member_keep_growth,
- bu.member_init_flag AS member_init_flag,
- bu.point AS point,
- bu.consume_amount AS consume_amount_cny,
- bu.order_total_num AS order_total_num,
- bu.status AS status,
- bu.blacklist AS blacklist,
- bu.refuse_pick_up AS refuse_pick_up,
- bu.notify_flag AS notify_flag,
- bu.open_invoice AS open_invoice,
- bu.open_psd AS open_psd,
- bu.daily_limit AS daily_limit,
- bu.weekly_limit AS weekly_limit,
- bu.monthly_limit AS monthly_limit,
- bu.update_time AS last_update_time,
- bu.is_deleted AS is_deleted,
- CURRENT_TIMESTAMP() AS etl_time
- FROM (
- SELECT *
- FROM (
- SELECT *,
- ROW_NUMBER() OVER (
- PARTITION BY id
- ORDER BY COALESCE(update_time, create_time) DESC
- ) AS rn
- FROM ods.ods_usr_app_base_user_inc_d
- WHERE dt < '${dt}'
- ) t
- WHERE t.rn = 1
- ) bu
- LEFT JOIN (
- SELECT *
- FROM (
- SELECT *,
- ROW_NUMBER() OVER (
- PARTITION BY user_id
- ORDER BY COALESCE(update_time, create_time) DESC
- ) AS rn
- FROM ods.ods_usr_app_user_cert_info_inc_d
- WHERE dt < '${dt}'
- ) t
- WHERE t.rn = 1
- ) ci ON bu.id = ci.user_id;
|