Files
feiqiu-ETL/README.md
2025-12-09 05:42:57 +08:00

4.0 KiB
Raw Blame History

飞球 ETL 系统ODS→DWD 全流程说明)

本项目实现门店业务的 ETL 流水线:拉取/或离线灌入上游 JSON落地 ODS清洗装载 DWD含 SCD2 维度、事实增量),并提供质量校验报表。

快速运行(本地离线示例 JSON

  1. 依赖与环境
    • Python 3.10+PostgreSQL 可用。
    • 关键配置:.envPG_DSN=postgresql://local-Python:Neo-local-1991125@100.64.0.4:5432/LLZQ-testINGEST_SOURCE_DIR=C:\dev\LLTQ\export\test-json-doc
  2. 安装
    cd etl_billiards
    pip install -r requirements.txt
    
  3. 一键离线回放ODS→DWD→质检
    # 初始化 ODS+DWD
    python -m etl_billiards.cli.main --tasks INIT_ODS_SCHEMA,INIT_DWD_SCHEMA --pipeline-flow INGEST_ONLY
    # 灌入示例 JSON 到 ODS
    python -m etl_billiards.cli.main --tasks MANUAL_INGEST --pipeline-flow INGEST_ONLY --ingest-source "C:\dev\LLTQ\export\test-json-doc"
    # 从 ODS 装载 DWD
    python -m etl_billiards.cli.main --tasks DWD_LOAD_FROM_ODS --pipeline-flow INGEST_ONLY
    # 质检报表
    python -m etl_billiards.cli.main --tasks DWD_QUALITY_CHECK --pipeline-flow INGEST_ONLY
    # 报表输出etl_billiards/reports/dwd_quality_report.json
    
  4. 单独跑某类任务
    • 仅建表:python -m etl_billiards.cli.main --tasks INIT_ODS_SCHEMA
    • 仅 ODS 灌入:python -m etl_billiards.cli.main --tasks MANUAL_INGEST
    • 仅 DWD 装载:python -m etl_billiards.cli.main --tasks INIT_DWD_SCHEMA,DWD_LOAD_FROM_ODS

数据与目录约定

  • 示例数据目录:C:\dev\LLTQ\export\test-json-doc(可通过 .envINGEST_SOURCE_DIR 覆盖)。
  • 日志/导出目录:LOG_ROOTEXPORT_ROOT.env
  • 质量报表:etl_billiards/reports/dwd_quality_report.json
  • ODS/DWD DDLetl_billiards/database/schema_ODS_doc.sqletl_billiards/database/schema_dwd_doc.sql
  • 任务注册:etl_billiards/orchestration/task_registry.py,默认启用 INIT_ODS_SCHEMA、MANUAL_INGEST、INIT_DWD_SCHEMA、DWD_LOAD_FROM_ODS、DWD_QUALITY_CHECK。

模块与主要文件

  • config默认值、环境变量解析AppConfig
  • apiHTTP 客户端封装。
  • database连接管理、批量 upsert、DDL SQL。
  • tasks业务任务ODS、DWD、初始化、手工灌入、质检
  • loadersODS/DWD/SCD2 Loader。
  • scdSCD2 历史版本处理。
  • quality质量检查器行数/金额对照等)。
  • orchestration调度、任务注册、运行追踪。
  • scripts测试、重建、探活等脚本。
  • docsODS→DWD 映射说明(docs/ods_to_dwd_mapping.md)、样例 JSON 说明。
  • reports质检结果输出目录。
  • backups关键 SQL/任务文件的备份版本。

当前进展2025-12-09

  • ODS & DWD 已全量跑通,示例 JSON 全部灌入DWD 维度/事实行数与 ODS 匹配。
  • 分类维度已展平大类+子类:dim_goods_category 行数 26大类 pid=0子类 pid 指向大类category_level 已赋值)。
  • 全空字段多因源数据为空;若需补充请先确认上游是否提供。

过期/可精简内容

  • etl_billiards/tmp & Delete/tmp/ 下的草稿 SQL/文档(如 schema_v2.sqlDWD层设计草稿.mdschema_dwd.sql)仅供对照,不参与任务;可按需归档或删除以缩减体积。
  • etl_billiards/backups/ 保留当前可用版本(近期生成的备份可保留,旧备份可清理)。
  • 顶层零散脚本(如 tmp_*.py)为一次性调试,可在确认无用后删除。
  • 若不再使用 run_etl.bat/run_etl.sh可改用统一 CLI 命令或 run_ods.bat若存在

常见问题

  • 字段空值:若映射已存在且源列非空仍为空,可检查上游 JSON 是否缺值;维度 SCD2 会按全量合并。
  • DSN/目录缺失:确认 .env 中 PG_DSN、INGEST_SOURCE_DIR 与本地目录一致。
  • 新增任务:在 tasks/ 实现并注册到 task_registry.py,必要时补充 DDL 与映射。