Explorar el Código

feat(dim/trd): dim_trd_card_group_ful_d DDL + init + sche(拼团维度全量快照 + sport→category 清洗)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
tianyu.chu hace 4 días
padre
commit
021e5f804b

+ 347 - 0
jobs/dim/trd/dim_trd_card_group_ful_d.sql

@@ -0,0 +1,347 @@
+-- 作者: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);

+ 131 - 0
manual/backfill/20260510_dim_trd_card_group_ful_d_init.sql

@@ -0,0 +1,131 @@
+-- 作者:tianyu.chu
+-- 日期:2026-05-10
+-- 工单:(无)
+-- 目的:dim_trd_card_group_ful_d 初始化(kb/28 §1.3 + ADR-08):
+--      扫 ods 历史分区 dt < ${dt} + ROW_NUMBER 取每 pk 最新版本,
+--      sport→category 数据脏点清洗(mlb→MLB / Boxing→UFC / other→NULL,kb/28 §3.2),
+--      落 dim dt=${pdt} 单分区
+-- 状态:[待执行]
+-- 备注:首次上线 init/sche 同日跑(sched=T),${dt}=T-1,${pdt}=T-2;
+--      init 灌 dim.dt=${pdt} 作 sche 首次依赖的"昨日 dim";扫 ods 范围 dt < ${dt}(即 dt <= ${pdt});
+--      跑一次后由 jobs/dim/trd/dim_trd_card_group_ful_d.sql 接管日常增量
+
+INSERT OVERWRITE TABLE dim.dim_trd_card_group_ful_d PARTITION (dt='${pdt}')
+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 (
+    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
+) cg;

+ 116 - 0
manual/ddl/dim/trd/dim_trd_card_group_ful_d_create.sql

@@ -0,0 +1,116 @@
+-- 作者:tianyu.chu
+-- 日期:2026-05-10
+-- 工单:(无)
+-- 目的:拼团维度 ful_d 全量快照建表(kb/28 §3 dim_trd_card_group_ful_d)
+-- 状态:[草案]
+-- 备注:单源 ods.ods_trd_card_group_info_inc_d;sport→category 数据脏点清洗在 DIM 内置(kb/28 §3.2);
+--      默认 ful_d,未来出"看历史属性变化"标签需求或全量快照存储 > 100GB 时迁 zip_d 双轨共存(kb/28 §1.2);
+--      字段类型对齐 ods(整数全 BIGINT,详见 kb/20 §8.4.1 + ADR-06);`lock` 是 SQL 关键字加反引号
+
+DROP TABLE IF EXISTS dim.dim_trd_card_group_ful_d;
+
+CREATE EXTERNAL TABLE IF NOT EXISTS dim.dim_trd_card_group_ful_d (
+    group_info_id              BIGINT         COMMENT '拼团 id(PK,源 cgi.id)',
+    code                       STRING         COMMENT '编码',
+    appid                      STRING         COMMENT '所属程序',
+    name                       STRING         COMMENT '拼团名称',
+    display_name               STRING         COMMENT '系列别名(显示名)',
+    group_show_name            STRING         COMMENT '精美卡片名称',
+    merchant_id                BIGINT         COMMENT '商家 id',
+    mer_name                   STRING         COMMENT '商户名称(冗余)',
+    list_id                    BIGINT         COMMENT '商家上线 checklist id',
+    list_code                  STRING         COMMENT 'checklist code',
+    panini_list_id             BIGINT         COMMENT '帕尼尼 list id(业务库快照冗余)',
+    category                   STRING         COMMENT '品类(lv2,源 cgi.sport,含 §3.2 脏数据清洗:mlb→MLB / Boxing→UFC / other→NULL)',
+    year                       STRING         COMMENT '年份(赛季)',
+    manufacturer               STRING         COMMENT '厂商',
+    sets                       STRING         COMMENT '系列',
+    type                       STRING         COMMENT '组团方式',
+    sub_type                   STRING         COMMENT '组队方式子方式',
+    random_type                STRING         COMMENT '随机方式',
+    specs                      STRING         COMMENT '商品规格',
+    total_price_cny            DECIMAL(20,4)  COMMENT '商品总价(源 total_price)',
+    unit_price_cny             DECIMAL(20,4)  COMMENT '单份售价(源 unit_price)',
+    act_price_cny              DECIMAL(20,4)  COMMENT '私域分享优惠价(源 act_price)',
+    copies                     BIGINT         COMMENT '商品份数',
+    total_num                  BIGINT         COMMENT '总数量',
+    weight                     BIGINT         COMMENT '重量',
+    order_quota_min            BIGINT         COMMENT '每笔订单最少购买',
+    order_quota_max            BIGINT         COMMENT '每笔订单最多购买',
+    user_quota_max             BIGINT         COMMENT '用户最多购买',
+    min_card_num               BIGINT         COMMENT '免运费达标数量',
+    mix_copies                 BIGINT         COMMENT '组合加倍',
+    change_type                STRING         COMMENT '买对玩法改变后组队方式',
+    status                     BIGINT         COMMENT '状态',
+    sold_copies                BIGINT         COMMENT '售出份数',
+    real_sold_num              BIGINT         COMMENT '实际销售数量',
+    sold_end_time              TIMESTAMP      COMMENT '售卖结束时间',
+    finished_time              TIMESTAMP      COMMENT '结束时间',
+    release_time               STRING         COMMENT '发布时间(源是字符串)',
+    start_time                 TIMESTAMP      COMMENT '计划开售时间',
+    cycle                      STRING         COMMENT '销售周期',
+    group_full_time            TIMESTAMP      COMMENT '组齐时间',
+    review_hold_time           TIMESTAMP      COMMENT '组队提交审核时间',
+    review_approval_time       TIMESTAMP      COMMENT '组队审核通过时间',
+    review_num                 BIGINT         COMMENT '审核驳回次数',
+    confirm_send_time          TIMESTAMP      COMMENT '确认发货日期',
+    close_payment_time         TIMESTAMP      COMMENT '打款日期',
+    close_payment_status       BIGINT         COMMENT '结算状态',
+    group_sets_no              BIGINT         COMMENT '同商家同系列序号',
+    live_create_time           TIMESTAMP      COMMENT '直播创建时间',
+    live_start_time            TIMESTAMP      COMMENT '直播开播时间',
+    live_end_time              TIMESTAMP      COMMENT '直播结束时间',
+    report_start_time          TIMESTAMP      COMMENT '报告开始时间',
+    report_end_time            TIMESTAMP      COMMENT '报告结束时间',
+    report_review_num          BIGINT         COMMENT '报告审核次数',
+    report_review_first_time   TIMESTAMP      COMMENT '报告首次审核时间',
+    report_review_end_time     TIMESTAMP      COMMENT '报告末次审核时间',
+    act_id                     BIGINT         COMMENT '关联活动 id',
+    act_type                   STRING         COMMENT '活动标签',
+    act_point_type             STRING         COMMENT '额外积分类型',
+    free_flag                  BIGINT         COMMENT '免单标记',
+    exclusive                  BIGINT         COMMENT '是否专属支付通道',
+    has_bg                     BIGINT         COMMENT '是否有背景图',
+    team_first                 BIGINT         COMMENT '包队优先玩法',
+    use_member_discount        BIGINT         COMMENT '会员折扣参与方式',
+    use_coupon                 BIGINT         COMMENT '是否可用优惠券',
+    user_level                 BIGINT         COMMENT '用户可看等级',
+    merchant_open              BIGINT         COMMENT '是否支持商家代开卡密',
+    merchant_sort              BIGINT         COMMENT '商家自定义排序',
+    custom                     BIGINT         COMMENT '是否自定义',
+    gift_card_id               BIGINT         COMMENT '关联精美卡片 id',
+    open_card                  BIGINT         COMMENT '开卡动作',
+    goods_type                 BIGINT         COMMENT '卡密类型',
+    point_rate                 BIGINT         COMMENT '积分转换比例',
+    point_max                  BIGINT         COMMENT '积分兑换最大值',
+    point_min                  BIGINT         COMMENT '积分兑换最小值',
+    point_type                 STRING         COMMENT '兑换积分类型',
+    payment_method             BIGINT         COMMENT '打款方式',
+    payment_total_price_cny    DECIMAL(20,4)  COMMENT '打款总金额(源 payment_total_price)',
+    payment_commission_cny     DECIMAL(20,4)  COMMENT '佣金金额(源 payment_commission)',
+    payment_finished_price_cny DECIMAL(20,4)  COMMENT '已打款金额(源 payment_finished_price)',
+    payment_remain_price_cny   DECIMAL(20,4)  COMMENT '剩余打款金额(源 payment_remain_price)',
+    payment_online_price_cny   DECIMAL(20,4)  COMMENT '线上打款金额(源 payment_online_price)',
+    commission_rate            STRING         COMMENT '佣金比例(百分比)',
+    hot_type                   STRING         COMMENT '查询 type',
+    report_flag                BIGINT         COMMENT '强制使用新版报告',
+    banner_end_time            TIMESTAMP      COMMENT 'banner 结束时间',
+    waring_type                STRING         COMMENT '风险异常类型',
+    compensation_status        BIGINT         COMMENT '赔付状态',
+    reviewmsg                  STRING         COMMENT '审核描述',
+    review_account             STRING         COMMENT '审核账号',
+    `lock`                     BOOLEAN        COMMENT '锁定状态',
+    marketing_info             STRING         COMMENT '营销信息',
+    msg                        STRING         COMMENT '详情描述',
+    title                      STRING         COMMENT '商品子标题',
+    remark                     STRING         COMMENT '备注',
+    create_time                TIMESTAMP      COMMENT '创建时间',
+    last_update_time           TIMESTAMP      COMMENT '最近更新时间(源 cgi.update_time)',
+    del_time                   TIMESTAMP      COMMENT '删除时间',
+    is_deleted                 BOOLEAN        COMMENT '软删归一',
+    etl_time                   TIMESTAMP      COMMENT 'ETL 处理时间'
+)
+COMMENT '拼团维度全量快照表'
+PARTITIONED BY (dt STRING)
+STORED AS ORC
+LOCATION '/user/hive/warehouse/dim.db/dim_trd_card_group_ful_d';