Files
youzan-datahub/sql/youzan_tplus1_ddl.sql

361 lines
20 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- 交易明细事实表 (dwd_trade_order_detail)
-- 用于拉取有赞 trades.sold.get 等接口数据基于订单明细粒度SKU级别
CREATE TABLE `dwd_trade_order_detail` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '底层自增主键',
`tid` VARCHAR(64) NOT NULL COMMENT '有赞主订单号 (tid)',
`oid` VARCHAR(64) NOT NULL COMMENT '有赞子订单号/明细ID (oid)',
`buyer_phone` VARCHAR(32) DEFAULT NULL COMMENT '买家手机号 (buyer_info.buyer_phone),基于安全组件可能脱敏',
`yz_open_id` VARCHAR(64) DEFAULT NULL COMMENT '有赞用户开放ID (buyer_info.yz_open_id)',
`fans_id` BIGINT DEFAULT NULL COMMENT '粉丝ID (buyer_info.fans_id)',
`shop_org_id` VARCHAR(64) DEFAULT NULL COMMENT '店铺组织ID (shop_org_id)',
`offline_id` BIGINT DEFAULT NULL COMMENT '网点/门店ID (node_kdt_id)',
`item_id` BIGINT NOT NULL COMMENT '商品ID (item_id)',
`sku_id` BIGINT NOT NULL COMMENT 'SKU ID (sku_id)',
`outer_item_id` VARCHAR(128) DEFAULT NULL COMMENT '商家外部商品编码 (outer_item_id) - 核心映射字段',
`outer_sku_id` VARCHAR(128) DEFAULT NULL COMMENT '商家外部SKU编码 (outer_sku_id)',
`title` VARCHAR(255) DEFAULT NULL COMMENT '商品名称快照 (title)',
`price` DECIMAL(12, 2) DEFAULT 0.00 COMMENT '单商品原价 (price)',
`num` INT NOT NULL DEFAULT 0 COMMENT '购买数量 (num)',
`total_fee` DECIMAL(12, 2) DEFAULT 0.00 COMMENT '该明细原价小计 (total_fee = price * num)',
`discount_price` DECIMAL(12, 2) DEFAULT 0.00 COMMENT '单商品折扣后价格 (discount_price)',
`payment` DECIMAL(12, 2) DEFAULT 0.00 COMMENT '该明细实际支付摊销金额 (payment) - 计算销售额核心',
`status` VARCHAR(32) NOT NULL COMMENT '当前主订单状态 (status: WAIT_SELLER_SEND_GOODS 等)',
`refund_state` INT DEFAULT 0 COMMENT '退款状态 (refund_state: 0正常, 其他视情况)',
`source_platform` VARCHAR(32) DEFAULT NULL COMMENT '订单来源平台 (source_info.source.platform: weixin/other)',
`is_retail_order` TINYINT(1) DEFAULT 0 COMMENT '是否零售门店订单 (order_info.is_retail_order)',
`order_type` INT DEFAULT 0 COMMENT '订单类型 (order_info.type: 0-普通 10-零售门店)',
`pay_time` DATETIME DEFAULT NULL COMMENT '支付时间 (pay_time) - 业务时间戳',
`created_time` DATETIME DEFAULT NULL COMMENT '订单创建时间 (created)',
`update_time` DATETIME DEFAULT NULL COMMENT '订单最后更新时间 (update_time)',
`success_time` DATETIME DEFAULT NULL COMMENT '订单完成时间 (success_time)',
`etl_update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '中台数据更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_oid` (`oid`),
KEY `idx_tid` (`tid`),
KEY `idx_pay_time` (`pay_time`),
KEY `idx_update_time` (`update_time`),
KEY `idx_etl_update_time` (`etl_update_time`),
KEY `idx_status` (`status`),
KEY `idx_outer_item_id` (`outer_item_id`),
KEY `idx_buyer` (`buyer_phone`, `yz_open_id`),
KEY `idx_item_sku` (`item_id`, `sku_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='交易明细事实表 (T+1有赞同步)';
-- 客户维度宽表 (dim_customer_info)
-- 用于融合有赞买家、微信粉丝、线下POS留资构建 OneID 视图及基础标签
CREATE TABLE `dim_customer_info` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '中台内部统一客户ID (OneID)',
`mobile` VARCHAR(32) DEFAULT NULL COMMENT '手机号(首选关联枢纽,微信粉丝场景可能缺失)',
`yz_open_id` VARCHAR(64) DEFAULT NULL COMMENT '有赞生态统一用户ID备选主键',
`wx_union_id` VARCHAR(64) DEFAULT NULL COMMENT '微信生态UnionID',
`wx_open_id` VARCHAR(64) DEFAULT NULL COMMENT '微信公众号/小程序OpenID',
`nickname` VARCHAR(128) DEFAULT NULL COMMENT '客户昵称快照 (fans_nickname)',
`name` VARCHAR(64) DEFAULT NULL COMMENT '客户真实姓名(若有)',
`gender` TINYINT DEFAULT 0 COMMENT '性别: 0-未知, 1-男, 2-女',
`birthday` DATE DEFAULT NULL COMMENT '生日',
`register_time` DATETIME DEFAULT NULL COMMENT '首次注册/留资时间',
`register_channel` VARCHAR(32) DEFAULT NULL COMMENT '注册渠道 (有赞、线下门店、微信等)',
`member_level_id` BIGINT DEFAULT NULL COMMENT '当前会员等级ID',
`member_level_name` VARCHAR(64) DEFAULT NULL COMMENT '当前会员等级名称',
`first_pay_time` DATETIME DEFAULT NULL COMMENT '首单支付时间',
`last_pay_time` DATETIME DEFAULT NULL COMMENT '最近一次支付时间用于RFM-R计算',
`total_pay_amount` DECIMAL(12, 2) DEFAULT 0.00 COMMENT '历史累计实付金额用于RFM-M计算',
`total_pay_count` INT DEFAULT 0 COMMENT '历史累计支付订单数用于RFM-F计算',
`customer_tags` JSON DEFAULT NULL COMMENT '客户身上的业务标签集合 (JSON格式存储如 ["高潜", "流失预警"])',
`etl_update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '中台数据更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_yz_open_id` (`yz_open_id`),
UNIQUE KEY `uk_mobile` (`mobile`), -- 可空唯一: MySQL 允许多个 NULL, 有手机号则保证不重复
KEY `idx_wx_union_id` (`wx_union_id`),
KEY `idx_last_pay_time` (`last_pay_time`),
KEY `idx_etl_update_time` (`etl_update_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='统一客户维度宽表 (OneID及基础RFM视角)';
-- ==========================================
-- 新增:商品维表、门店维表、库存流水、退货退款明细
-- ==========================================
-- 商品与SKU维表 (dim_item_sku)
-- 记录有赞商品的快照及外部映射,用以统一冷链和热食的销售分析
CREATE TABLE `dim_item_sku` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`item_id` BIGINT NOT NULL COMMENT '有赞商品ID (item_id)',
`sku_id` BIGINT NOT NULL COMMENT '有赞SKU ID (sku_id)',
`outer_item_id` VARCHAR(128) DEFAULT NULL COMMENT '商家外部商品编码 (关联核心)',
`outer_sku_id` VARCHAR(128) DEFAULT NULL COMMENT '商家外部SKU编码',
`barcode` VARCHAR(128) DEFAULT NULL COMMENT '商品条码',
`title` VARCHAR(255) NOT NULL COMMENT '商品/SKU名称',
`alias` VARCHAR(128) DEFAULT NULL COMMENT '商品别名/短链接标识',
`category_id` BIGINT DEFAULT NULL COMMENT '叶子类目ID',
`category_name` VARCHAR(128) DEFAULT NULL COMMENT '叶子类目名称',
`group_ids` VARCHAR(255) DEFAULT NULL COMMENT '商品分组ID列表 (逗号分隔)',
`price` BIGINT DEFAULT 0 COMMENT '当前售卖价(单位:分)',
`cost_price` BIGINT DEFAULT 0 COMMENT '成本价(单位:分,若有)',
`is_listing` TINYINT(1) DEFAULT 1 COMMENT '是否上架: 1-上架, 0-下架',
`created_time` DATETIME DEFAULT NULL COMMENT '商品在有赞的创建时间',
`update_time` DATETIME DEFAULT NULL COMMENT '商品最近更新时间',
`etl_update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '中台数据更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_item_sku` (`item_id`, `sku_id`),
KEY `idx_outer_item_id` (`outer_item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品与SKU维度表';
-- 门店与网点维表 (dim_offline_store)
CREATE TABLE `dim_offline_store` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`offline_id` BIGINT NOT NULL COMMENT '有赞网点/门店ID (offline_id / node_kdt_id)',
`shop_org_id` VARCHAR(64) DEFAULT NULL COMMENT '组织店铺ID',
`name` VARCHAR(128) NOT NULL COMMENT '门店名称',
`type` VARCHAR(32) DEFAULT NULL COMMENT '节点类型: STORE-门店, WAREHOUSE-仓库',
`province` VARCHAR(64) DEFAULT NULL COMMENT '省份',
`city` VARCHAR(64) DEFAULT NULL COMMENT '城市',
`district` VARCHAR(64) DEFAULT NULL COMMENT '区县',
`address` VARCHAR(255) DEFAULT NULL COMMENT '详细地址',
`status` TINYINT(1) DEFAULT 1 COMMENT '营业状态: 1-营业, 0-关店',
`warehouse_code` VARCHAR(64) DEFAULT NULL COMMENT '仓库编码 (库存API必需, warehouse.query获取)',
`stock_mode` INT DEFAULT NULL COMMENT '库存模式: 1-独立销售库存, 2-共享总部, 3-共享门店仓, 4-进出存单据管理',
`etl_update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '中台数据更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_offline_id` (`offline_id`),
KEY `idx_city` (`city`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='门店与网点维度表';
-- 售后与退款明细事实表 (dwd_trade_refund_detail)
-- 用于计算交易净额 (GMV = 支付额 - 退款额)
CREATE TABLE `dwd_trade_refund_detail` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`refund_id` VARCHAR(64) NOT NULL COMMENT '退款单号 (refund_id)',
`tid` VARCHAR(64) NOT NULL COMMENT '关联的有赞主订单号 (tid)',
`oid` VARCHAR(64) DEFAULT NULL COMMENT '关联的子订单明细ID (oid, 若仅退款则为空)',
`offline_id` BIGINT DEFAULT NULL COMMENT '发起退款的门店ID (处理多网点)',
`refund_type` INT DEFAULT 1 COMMENT '退款类型: 1-仅退款, 2-退货退款',
`refund_fee` DECIMAL(12, 2) NOT NULL DEFAULT 0.00 COMMENT '实际退款金额',
`reason` VARCHAR(255) DEFAULT NULL COMMENT '退款原因 (整数编码: 54-未发货, 11-质量问题等)',
`status` VARCHAR(32) NOT NULL COMMENT '退款状态 (SUCCESS/CLOSED/WAIT_SELLER_AGREE等)',
`created_time` DATETIME DEFAULT NULL COMMENT '退款申请时间',
`success_time` DATETIME DEFAULT NULL COMMENT '退款成功时间',
`modified_time` DATETIME DEFAULT NULL COMMENT '退款最后修改时间',
`refund_demand` INT DEFAULT NULL COMMENT '退款诉求: 1-仅退款, 2-退货退款, 3-换货',
`refund_phase` INT DEFAULT NULL COMMENT '退款阶段: 1-售中, 2-售后',
`yz_open_id` VARCHAR(64) DEFAULT NULL COMMENT '买家有赞用户ID (yz_open_id)',
`etl_update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '中台数据更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_refund_id` (`refund_id`),
KEY `idx_tid` (`tid`),
KEY `idx_created_time` (`created_time`),
KEY `idx_success_time` (`success_time`),
KEY `idx_etl_update_time` (`etl_update_time`),
KEY `idx_yz_open_id` (`yz_open_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='售后与退款明细表';
-- 每日库存快照表 (dim_inventory_snapshot)
-- 记录每日各仓库/门店的SKU库存余量用于库存周转分析和缺货预警
CREATE TABLE `dim_inventory_snapshot` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`warehouse_code` VARCHAR(64) NOT NULL COMMENT '仓库编码 (warehouse.query获取)',
`sku_code` VARCHAR(128) NOT NULL COMMENT 'SKU编码 (outer_sku_id)',
`stock_num` DECIMAL(12, 2) DEFAULT 0.00 COMMENT '实物库存数量',
`freeze_num` DECIMAL(12, 2) DEFAULT 0.00 COMMENT '实物库存占用 (被订单锁定)',
`available_num` DECIMAL(12, 2) DEFAULT 0.00 COMMENT '可用库存 (stock_num - freeze_num)',
`snapshot_date` DATE NOT NULL COMMENT '快照日期',
`etl_update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '中台同步时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_snapshot` (`warehouse_code`, `sku_code`, `snapshot_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='每日库存快照表';
-- 进销存库存流水事实表 (dwd_inventory_flow_di)
-- 记录每日出入库流水,辅助动销分析与损耗监控
CREATE TABLE `dwd_inventory_flow_di` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`biz_no` VARCHAR(64) NOT NULL COMMENT '业务单据号 (如盘点单号, 采购单号)',
`biz_type` VARCHAR(32) NOT NULL COMMENT '单据类型: PURCHASE-采购, ALLOCATE-调拨, CHECK-盘点, ADJUST-调整',
`offline_id` BIGINT NOT NULL COMMENT '发生动作的门店/仓库ID',
`item_id` BIGINT NOT NULL COMMENT '商品ID',
`sku_id` BIGINT NOT NULL COMMENT 'SKU ID',
`change_quantity` INT NOT NULL COMMENT '库存变动量 (正数为入, 负数为出)',
`after_quantity` INT DEFAULT NULL COMMENT '变动后该SKU的总可用库存',
`reason` VARCHAR(255) DEFAULT NULL COMMENT '变动原因 (如报损说明, 盘点原因)',
`occur_time` DATETIME NOT NULL COMMENT '流水发生时间',
`etl_update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '中台同步时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_biz_flow` (`biz_no`, `item_id`, `sku_id`, `offline_id`, `biz_type`),
KEY `idx_offline_sku` (`offline_id`, `sku_id`),
KEY `idx_occur_time` (`occur_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='库存变动流水记录表';
-- ==========================================
-- 新增:优惠券/营销活动事实表
-- ==========================================
-- 优惠券流水事实表 (dwd_coupon_flow)
-- 记录优惠券的发放与核销用于活动ROI分析
CREATE TABLE `dwd_coupon_flow` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`coupon_group_id` BIGINT NOT NULL COMMENT '优惠券活动/券组ID (coupon_group_id)',
`coupon_id` VARCHAR(64) NOT NULL COMMENT '优惠券实例ID / 券码 (verify_code)',
`yz_open_id` VARCHAR(64) DEFAULT NULL COMMENT '领券/用券用户 (yz_open_id)',
`mobile` VARCHAR(32) DEFAULT NULL COMMENT '用户手机号',
`coupon_type` VARCHAR(32) DEFAULT NULL COMMENT '券类型: CASH-满减, DISCOUNT-折扣, EXCHANGE-兑换',
`coupon_name` VARCHAR(128) DEFAULT NULL COMMENT '券名称',
`denomination` DECIMAL(12, 2) DEFAULT 0.00 COMMENT '面额/减免金额',
`condition_amount` DECIMAL(12, 2) DEFAULT 0.00 COMMENT '使用门槛金额 (满X元可用)',
`send_time` DATETIME DEFAULT NULL COMMENT '发放时间',
`use_time` DATETIME DEFAULT NULL COMMENT '核销/使用时间',
`expire_time` DATETIME DEFAULT NULL COMMENT '过期时间',
`status` VARCHAR(32) NOT NULL COMMENT '券状态: SENT-已发, USED-已核销, EXPIRED-已过期',
`use_tid` VARCHAR(64) DEFAULT NULL COMMENT '核销时关联的订单号 (tid)',
`use_offline_id` BIGINT DEFAULT NULL COMMENT '核销门店ID (offline_id)',
`activity_id` BIGINT DEFAULT NULL COMMENT '关联营销活动ID (activity_id)',
`activity_type` VARCHAR(32) DEFAULT NULL COMMENT '活动类型',
`etl_update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '中台同步时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_coupon_id` (`coupon_id`),
KEY `idx_coupon_group` (`coupon_group_id`),
KEY `idx_yz_open_id` (`yz_open_id`),
KEY `idx_use_time` (`use_time`),
KEY `idx_use_tid` (`use_tid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='优惠券流水事实表 (发放与核销)';
-- ==========================================
-- Phase 4: 商品与会员洞察 (ADM数据市集层)
-- ==========================================
-- 1. 客户 RFM 与评分模型表
CREATE TABLE IF NOT EXISTS `adm_customer_rfm` (
`id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '自增主键',
`yz_open_id` VARCHAR(64) NOT NULL COMMENT '有赞open_id',
`mobile` VARCHAR(32) DEFAULT NULL COMMENT '客户手机号',
`last_trade_time` DATETIME DEFAULT NULL COMMENT '最近一次消费时间 (Recency)',
`trade_count_90d` INT DEFAULT 0 COMMENT '近90天消费频次 (Frequency)',
`trade_amount_90d` DECIMAL(12, 2) DEFAULT 0.00 COMMENT '近90天消费金额 (Monetary)',
`r_score` INT DEFAULT 0 COMMENT 'R得分(1-5级)',
`f_score` INT DEFAULT 0 COMMENT 'F得分(1-5级)',
`m_score` INT DEFAULT 0 COMMENT 'M得分(1-5级)',
`rfm_group` VARCHAR(32) DEFAULT NULL COMMENT '客群分层(例如: 重要价值客户/沉睡客户等)',
`etl_update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '同步更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_yz_open_id` (`yz_open_id`),
KEY `idx_rfm_group` (`rfm_group`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='会员RFM洞察表';
-- 2. 客户标签表 (人群特征画像)
CREATE TABLE IF NOT EXISTS `adm_customer_tags` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`yz_open_id` VARCHAR(64) NOT NULL,
`tag_name` VARCHAR(64) NOT NULL COMMENT '标签名称(如: 工作日外带客, 高客单囤货客)',
`tag_value` VARCHAR(128) DEFAULT NULL COMMENT '标签值或权重',
`etl_update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_customer_tag` (`yz_open_id`, `tag_name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='客户画像标签表';
-- 3. 商品销售趋势表 (日维统计, 按 outer_item_id 聚合)
CREATE TABLE IF NOT EXISTS `adm_item_sales_trend` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`stat_date` DATE NOT NULL COMMENT '统计归属日期',
`item_id` BIGINT NOT NULL COMMENT '商品ID (代表性)',
`sku_id` BIGINT NOT NULL DEFAULT 0 COMMENT '规格ID',
`outer_item_id` VARCHAR(64) DEFAULT NULL COMMENT '商家统一商品编码',
`item_name` VARCHAR(128) DEFAULT NULL COMMENT '商品名称',
`sales_qty` INT DEFAULT 0 COMMENT '当日销量(件数)',
`sales_amount` DECIMAL(12, 2) DEFAULT 0.00 COMMENT '当日销售额',
`order_count` INT DEFAULT 0 COMMENT '当日包含该商品的订单数',
`etl_update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_trend_date` (`stat_date`, `outer_item_id`),
KEY `idx_item` (`item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品销售趋势表';
-- 4. 商品关联分析表 (购物篮挖掘, 按 outer_item_id 聚合)
CREATE TABLE IF NOT EXISTS `adm_item_basket` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`item_id_a` BIGINT NOT NULL COMMENT '商品A',
`outer_item_id_a` VARCHAR(64) DEFAULT NULL COMMENT '商品A商家编码',
`item_name_a` VARCHAR(128) DEFAULT NULL COMMENT '商品A名称',
`item_id_b` BIGINT NOT NULL COMMENT '商品B',
`outer_item_id_b` VARCHAR(64) DEFAULT NULL COMMENT '商品B商家编码',
`item_name_b` VARCHAR(128) DEFAULT NULL COMMENT '商品B名称',
`pair_order_count` INT DEFAULT 0 COMMENT 'A和B共同出现的订单数',
`item_a_order_count` INT DEFAULT 0 COMMENT 'A独立出现的包含订单总数',
`confidence` DECIMAL(5, 4) DEFAULT 0.0000 COMMENT '置信度 (A->B的概率)',
`etl_update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_item_pair` (`outer_item_id_a`, `outer_item_id_b`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品购物篮关联分析表';
-- 5. 商品复购分析表 (按 outer_item_id 聚合)
CREATE TABLE IF NOT EXISTS `adm_item_repurchase` (
`id` BIGINT NOT NULL AUTO_INCREMENT,
`stat_date` DATE NOT NULL COMMENT '统计归属日期',
`item_id` BIGINT NOT NULL COMMENT '商品ID (代表性)',
`sku_id` BIGINT NOT NULL DEFAULT 0,
`outer_item_id` VARCHAR(64) DEFAULT NULL COMMENT '商家统一商品编码',
`item_name` VARCHAR(128) DEFAULT NULL COMMENT '商品名称',
`purchaser_count_30d` INT DEFAULT 0 COMMENT '过去30天购买总人数',
`repurchaser_count_30d` INT DEFAULT 0 COMMENT '过去30天产生二次复购的人数',
`repurchase_rate_30d` DECIMAL(5, 4) DEFAULT 0.0000 COMMENT '30天复购率 (二次人数/总人数)',
`matrix_tag` VARCHAR(32) DEFAULT NULL COMMENT '波士顿矩阵打标分类 (如: 核心引流款, 需淘汰等)',
`etl_update_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_repurchase_date` (`stat_date`, `outer_item_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品复购率分析表';