Files
Neo-ZQYY/docs/database/BD_Manual_dws_goods_stock_summary.md

4.1 KiB
Raw Blame History

BD_ManualDWS 库存汇总(日/周/月)

DWS 表:dws.dws_goods_stock_daily_summarydws.dws_goods_stock_weekly_summarydws.dws_goods_stock_monthly_summary DWD 数据源:dwd.dwd_goods_stock_summary 任务代码:DWS_GOODS_STOCK_DAILYDWS_GOODS_STOCK_WEEKLYDWS_GOODS_STOCK_MONTHLY 代码位置:apps/etl/connectors/feiqiu/tasks/dws/goods_stock_daily_task.pygoods_stock_weekly_task.pygoods_stock_monthly_task.py DDL 位置:docs/database/ddl/etl_feiqiu__dws.sql 迁移脚本:db/_archived/ddl_baseline_2026-02-22/db/etl_feiqiu/migrations/2026-02-20__create_dws_goods_stock_summary.sql(已归档)


1. 表结构(三张表结构相同)

DWS 列名 类型 业务含义 取值范围/示例
site_id BIGINT 门店 IDPK 之一) 飞球门店 ID
tenant_id BIGINT 租户 ID 飞球租户 ID
stat_date DATE 统计日期PK 之一)。日度=当天日期,周度=ISO 周一日期,月度=月首日期 2026-01-152026-01-13(周一)、2026-01-01(月首)
site_goods_id BIGINT 门店商品 IDPK 之一),关联 dim_store_goods.site_goods_id 飞球商品 ID
goods_name TEXT 商品名称 百威啤酒
goods_unit TEXT 计量单位
goods_category_id BIGINT 一级商品分类 ID 飞球分类 ID
goods_category_second_id BIGINT 二级商品分类 ID 飞球分类 ID
category_name TEXT 一级分类名称 酒水
range_start_stock NUMERIC 期初库存(统计周期起点的库存量) 数值
range_end_stock NUMERIC 期末库存(统计周期终点的库存量) 数值
range_in NUMERIC 入库数量(统计周期内的采购/调拨入库总量) 数值
range_out NUMERIC 出库数量(统计周期内的调拨出库/报损总量) 数值
range_sale NUMERIC 销售数量(统计周期内的销售出库总量) 数值
range_sale_money NUMERIC(12,2) 销售金额(元),统计周期内的销售总金额 金额值
range_inventory NUMERIC 盘点调整量(统计周期内的盘盈/盘亏净量) 正/负数值
current_stock NUMERIC 当前库存(统计周期末的实时库存量) 数值
stat_period TEXT 汇总粒度标识 'daily' / 'weekly' / 'monthly'
created_at TIMESTAMPTZ 记录创建时间 自动填充 now()
updated_at TIMESTAMPTZ 记录最后更新时间 自动填充 now()

2. 主键

(site_id, stat_date, site_goods_id) — 按门店、日期、商品维度唯一。


3. 粒度说明

表名 粒度 stat_date 规则 stat_period
dws_goods_stock_daily_summary 当天日期 'daily'
dws_goods_stock_weekly_summary ISO 周一日期 'weekly'
dws_goods_stock_monthly_summary 月首日期(如 2026-01-01 'monthly'

4. 聚合逻辑

  • extractdwd.dwd_goods_stock_summary 按时间范围查询
  • transform按粒度对 fetched_at 进行分组聚合
    • range_start_stock:取周期内最早记录的 range_start_stock
    • range_end_stock:取周期内最晚记录的 range_end_stock
    • range_in / range_out / range_sale / range_inventorySUM 汇总
    • range_sale_moneySUM 汇总
    • current_stock:取周期内最晚记录的 current_stock
    • goods_name / goods_unit / category_name:取最晚记录的值
  • loadupsert 写入目标表,主键冲突时更新

5. 前置依赖

  • dwd.dwd_goods_stock_summary 表必须已创建并有数据
  • ODS 任务配置 requires_window=True 必须已生效并重新采集

6. 代码引用

  • 任务代码:tasks/dws/goods_stock_daily_task.pygoods_stock_weekly_task.pygoods_stock_monthly_task.py
  • 继承:BaseDwsTasktasks/dws/base_dws_task.py
  • 任务注册:DWS_GOODS_STOCK_DAILYDWS_GOODS_STOCK_WEEKLYDWS_GOODS_STOCK_MONTHLY