| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347 |
- -- 作者:tianyu.chu
- -- 日期:2026-05-10
- -- 工单:(无)
- -- 目的:dim_trd_card_group_ful_d 日常增量(kb/28 §1.3 + ADR-08,业界主流模式 B):
- -- (a) today_changed = 今日 ods cgi 增量 group_info_id 集合;
- -- (b) today_rebuilt = 今日 ods cgi 行(sport→category 清洗);
- -- (c) 昨日 dim 中今日没变的 group_info_id (NOT IN today_changed) 直接保留;
- -- (d) UNION ALL 写入 dim dt=${dt} 单分区
- -- 状态:[草案]
- -- 备注:sched=T,${dt}=T-1,${pdt}=T-2;
- -- 单源(ods.cgi 仅一张表)写法比 dim_usr_user 简单:今日变更行直接用今日 cgi 字段,无需 LEFT JOIN 昨日 dim 兜底;
- -- sport→category 清洗规则 init 与 sche 同步实现(kb/28 §3.2);
- -- 性能:dim 大表只 scan + broadcast NOT IN 剪枝,不参与 shuffle;
- -- 前置 DS DEPENDENT:ods.cgi.dt=${dt} + dim.dt=${pdt}
- INSERT OVERWRITE TABLE dim.dim_trd_card_group_ful_d PARTITION (dt='${dt}')
- WITH today_cgi AS (
- SELECT *
- FROM (
- SELECT *,
- ROW_NUMBER() OVER (
- PARTITION BY id
- ORDER BY COALESCE(update_time, create_time) DESC
- ) AS rn
- FROM ods.ods_trd_card_group_info_inc_d
- WHERE dt = '${dt}'
- ) t
- WHERE t.rn = 1
- ),
- today_changed AS (
- SELECT id AS group_info_id FROM today_cgi
- ),
- today_rebuilt AS (
- SELECT
- cg.id AS group_info_id,
- cg.code AS code,
- cg.appid AS appid,
- cg.name AS name,
- cg.display_name AS display_name,
- cg.group_show_name AS group_show_name,
- cg.merchant_id AS merchant_id,
- cg.mer_name AS mer_name,
- cg.list_id AS list_id,
- cg.list_code AS list_code,
- cg.panini_list_id AS panini_list_id,
- CASE
- WHEN cg.sport = 'mlb' THEN 'MLB'
- WHEN cg.sport = 'Boxing' THEN 'UFC'
- WHEN cg.sport = 'other' THEN NULL
- ELSE cg.sport
- END AS category,
- cg.year AS year,
- cg.manufacturer AS manufacturer,
- cg.sets AS sets,
- cg.type AS type,
- cg.sub_type AS sub_type,
- cg.random_type AS random_type,
- cg.specs AS specs,
- cg.total_price AS total_price_cny,
- cg.unit_price AS unit_price_cny,
- cg.act_price AS act_price_cny,
- cg.copies AS copies,
- cg.total_num AS total_num,
- cg.weight AS weight,
- cg.order_quota_min AS order_quota_min,
- cg.order_quota_max AS order_quota_max,
- cg.user_quota_max AS user_quota_max,
- cg.min_card_num AS min_card_num,
- cg.mix_copies AS mix_copies,
- cg.change_type AS change_type,
- cg.status AS status,
- cg.sold_copies AS sold_copies,
- cg.real_sold_num AS real_sold_num,
- cg.sold_end_time AS sold_end_time,
- cg.finished_time AS finished_time,
- cg.release_time AS release_time,
- cg.start_time AS start_time,
- cg.cycle AS cycle,
- cg.group_full_time AS group_full_time,
- cg.review_hold_time AS review_hold_time,
- cg.review_approval_time AS review_approval_time,
- cg.review_num AS review_num,
- cg.confirm_send_time AS confirm_send_time,
- cg.close_payment_time AS close_payment_time,
- cg.close_payment_status AS close_payment_status,
- cg.group_sets_no AS group_sets_no,
- cg.live_create_time AS live_create_time,
- cg.live_start_time AS live_start_time,
- cg.live_end_time AS live_end_time,
- cg.report_start_time AS report_start_time,
- cg.report_end_time AS report_end_time,
- cg.report_review_num AS report_review_num,
- cg.report_review_first_time AS report_review_first_time,
- cg.report_review_end_time AS report_review_end_time,
- cg.act_id AS act_id,
- cg.act_type AS act_type,
- cg.act_point_type AS act_point_type,
- cg.free_flag AS free_flag,
- cg.exclusive AS exclusive,
- cg.has_bg AS has_bg,
- cg.team_first AS team_first,
- cg.use_member_discount AS use_member_discount,
- cg.use_coupon AS use_coupon,
- cg.user_level AS user_level,
- cg.merchant_open AS merchant_open,
- cg.merchant_sort AS merchant_sort,
- cg.custom AS custom,
- cg.gift_card_id AS gift_card_id,
- cg.open_card AS open_card,
- cg.goods_type AS goods_type,
- cg.point_rate AS point_rate,
- cg.point_max AS point_max,
- cg.point_min AS point_min,
- cg.point_type AS point_type,
- cg.payment_method AS payment_method,
- cg.payment_total_price AS payment_total_price_cny,
- cg.payment_commission AS payment_commission_cny,
- cg.payment_finished_price AS payment_finished_price_cny,
- cg.payment_remain_price AS payment_remain_price_cny,
- cg.payment_online_price AS payment_online_price_cny,
- cg.commission_rate AS commission_rate,
- cg.hot_type AS hot_type,
- cg.report_flag AS report_flag,
- cg.banner_end_time AS banner_end_time,
- cg.waring_type AS waring_type,
- cg.compensation_status AS compensation_status,
- cg.reviewmsg AS reviewmsg,
- cg.review_account AS review_account,
- cg.`lock` AS `lock`,
- cg.marketing_info AS marketing_info,
- cg.msg AS msg,
- cg.title AS title,
- cg.remark AS remark,
- cg.create_time AS create_time,
- cg.update_time AS last_update_time,
- cg.del_time AS del_time,
- cg.is_deleted AS is_deleted,
- CURRENT_TIMESTAMP() AS etl_time
- FROM today_cgi cg
- )
- SELECT
- group_info_id,
- code,
- appid,
- name,
- display_name,
- group_show_name,
- merchant_id,
- mer_name,
- list_id,
- list_code,
- panini_list_id,
- category,
- year,
- manufacturer,
- sets,
- type,
- sub_type,
- random_type,
- specs,
- total_price_cny,
- unit_price_cny,
- act_price_cny,
- copies,
- total_num,
- weight,
- order_quota_min,
- order_quota_max,
- user_quota_max,
- min_card_num,
- mix_copies,
- change_type,
- status,
- sold_copies,
- real_sold_num,
- sold_end_time,
- finished_time,
- release_time,
- start_time,
- cycle,
- group_full_time,
- review_hold_time,
- review_approval_time,
- review_num,
- confirm_send_time,
- close_payment_time,
- close_payment_status,
- group_sets_no,
- live_create_time,
- live_start_time,
- live_end_time,
- report_start_time,
- report_end_time,
- report_review_num,
- report_review_first_time,
- report_review_end_time,
- act_id,
- act_type,
- act_point_type,
- free_flag,
- exclusive,
- has_bg,
- team_first,
- use_member_discount,
- use_coupon,
- user_level,
- merchant_open,
- merchant_sort,
- custom,
- gift_card_id,
- open_card,
- goods_type,
- point_rate,
- point_max,
- point_min,
- point_type,
- payment_method,
- payment_total_price_cny,
- payment_commission_cny,
- payment_finished_price_cny,
- payment_remain_price_cny,
- payment_online_price_cny,
- commission_rate,
- hot_type,
- report_flag,
- banner_end_time,
- waring_type,
- compensation_status,
- reviewmsg,
- review_account,
- `lock`,
- marketing_info,
- msg,
- title,
- remark,
- create_time,
- last_update_time,
- del_time,
- is_deleted,
- etl_time
- FROM today_rebuilt
- UNION ALL
- SELECT
- group_info_id,
- code,
- appid,
- name,
- display_name,
- group_show_name,
- merchant_id,
- mer_name,
- list_id,
- list_code,
- panini_list_id,
- category,
- year,
- manufacturer,
- sets,
- type,
- sub_type,
- random_type,
- specs,
- total_price_cny,
- unit_price_cny,
- act_price_cny,
- copies,
- total_num,
- weight,
- order_quota_min,
- order_quota_max,
- user_quota_max,
- min_card_num,
- mix_copies,
- change_type,
- status,
- sold_copies,
- real_sold_num,
- sold_end_time,
- finished_time,
- release_time,
- start_time,
- cycle,
- group_full_time,
- review_hold_time,
- review_approval_time,
- review_num,
- confirm_send_time,
- close_payment_time,
- close_payment_status,
- group_sets_no,
- live_create_time,
- live_start_time,
- live_end_time,
- report_start_time,
- report_end_time,
- report_review_num,
- report_review_first_time,
- report_review_end_time,
- act_id,
- act_type,
- act_point_type,
- free_flag,
- exclusive,
- has_bg,
- team_first,
- use_member_discount,
- use_coupon,
- user_level,
- merchant_open,
- merchant_sort,
- custom,
- gift_card_id,
- open_card,
- goods_type,
- point_rate,
- point_max,
- point_min,
- point_type,
- payment_method,
- payment_total_price_cny,
- payment_commission_cny,
- payment_finished_price_cny,
- payment_remain_price_cny,
- payment_online_price_cny,
- commission_rate,
- hot_type,
- report_flag,
- banner_end_time,
- waring_type,
- compensation_status,
- reviewmsg,
- review_account,
- `lock`,
- marketing_info,
- msg,
- title,
- remark,
- create_time,
- last_update_time,
- del_time,
- is_deleted,
- etl_time
- FROM dim.dim_trd_card_group_ful_d
- WHERE dt = '${pdt}'
- AND group_info_id NOT IN (SELECT group_info_id FROM today_changed);
|