# BD_Manual:ods.group_buy_package_details 团购套餐详情表 > 日期:2026-03-05 > 涉及库:`etl_feiqiu` / `test_etl_feiqiu` > DDL 路径:`db/etl_feiqiu/ods/group_buy_package_details.sql` > 直接原因:整合团购详情接口(QueryPackageCouponInfo),新建 ODS 详情表存储每个团购套餐的详情数据 > Prompt 摘要:etl-coupon-detail spec — 需求 3 验收标准 1-4 --- ## 1. 变更说明 ### 变更内容 新建 `ods.group_buy_package_details` 表,用于存储 `QueryPackageCouponInfo` 详情接口的原始数据。 | Schema | 表 | 操作 | 说明 | |--------|-----|------|------| | ods | group_buy_package_details | 新建 | 团购套餐详情,主键 `coupon_id`,含 12 个结构化字段 + 6 个 JSONB 数组字段 + 3 个 ETL 元数据字段 | ### 数据获取方式 通过 `ODS_GROUP_PACKAGE` 任务的 `detail_endpoint` 二级详情拉取子流程: - 主流程拉取团购列表 → `ods.group_buy_packages` - 子流程遍历每个 `id`,串行调用 `QueryPackageCouponInfo` → 本表 - 全量快照模式,UPSERT on `coupon_id` ### 关键字段 | 字段 | 类型 | 说明 | |------|------|------| | `coupon_id` | BIGINT PK | 团购套餐 ID(= group_buy_packages.id) | | `table_area_ids` | JSONB | 可用台区 ID 列表 | | `table_area_names` | JSONB | 可用台区名称列表 | | `assistant_services` | JSONB | 助教服务关联数组 | | `groupon_site_infos` | JSONB | 关联门店信息数组 | | `package_services` | JSONB | 套餐服务数组(待调研) | | `coupon_details_list` | JSONB | 券明细数组(待调研) | | `content_hash` | TEXT | 内容哈希,用于变更检测 | | `payload` | JSONB | 完整原始 JSON 响应 | --- ## 2. 兼容性影响 | 组件 | 影响 | 说明 | |------|------|------| | ETL ODS 层 | 新增表 | `ODS_GROUP_PACKAGE` 任务通过 `detail_endpoint` 配置自动写入 | | ETL DWD 层 | 需配合修改 | `dwd_load_task.py` 需 LEFT JOIN 本表将 4 个 JSONB 字段合并到 `dim_groupbuy_package_ex` | | 后端 API | 无影响 | 当前无接口直接查询本表 | | 小程序 | 无影响 | 不直接使用 ODS 层表 | --- ## 3. 回滚策略 ```sql DROP TABLE IF EXISTS ods.group_buy_package_details; ``` 回滚后需同步移除 `ODS_GROUP_PACKAGE` 任务中的 `detail_endpoint` 相关配置。 --- ## 4. 验证 SQL ```sql -- 1. 确认表存在且主键正确 SELECT column_name, data_type, is_nullable FROM information_schema.columns WHERE table_schema = 'ods' AND table_name = 'group_buy_package_details' ORDER BY ordinal_position; -- 预期:22 列,coupon_id 为 BIGINT NOT NULL -- 2. 确认主键约束 SELECT constraint_name, constraint_type FROM information_schema.table_constraints WHERE table_schema = 'ods' AND table_name = 'group_buy_package_details' AND constraint_type = 'PRIMARY KEY'; -- 预期:1 行,pk_group_buy_package_details -- 3. 确认 JSONB 列存在 SELECT column_name, data_type FROM information_schema.columns WHERE table_schema = 'ods' AND table_name = 'group_buy_package_details' AND data_type = 'jsonb' ORDER BY ordinal_position; -- 预期:8 行(table_area_ids, table_area_names, assistant_services, groupon_site_infos, package_services, coupon_details_list, payload) ```