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

67 lines
4.0 KiB
Markdown
Raw 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.
# 飞球 ETL 系统ODS→DWD 全流程说明)
本项目实现门店业务的 ETL 流水线:拉取/或离线灌入上游 JSON落地 ODS清洗装载 DWD含 SCD2 维度、事实增量),并提供质量校验报表。
## 快速运行(本地离线示例 JSON
1) 依赖与环境
- Python 3.10+PostgreSQL 可用。
- 关键配置:`.env``PG_DSN=postgresql://local-Python:Neo-local-1991125@100.64.0.4:5432/LLZQ-test``INGEST_SOURCE_DIR=C:\dev\LLTQ\export\test-json-doc`
2) 安装
```bash
cd etl_billiards
pip install -r requirements.txt
```
3) 一键离线回放ODS→DWD→质检
```bash
# 初始化 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`(可通过 `.env` 的 `INGEST_SOURCE_DIR` 覆盖)。
- 日志/导出目录:`LOG_ROOT`、`EXPORT_ROOT` 见 `.env`。
- 质量报表:`etl_billiards/reports/dwd_quality_report.json`。
- ODS/DWD DDL`etl_billiards/database/schema_ODS_doc.sql`、`etl_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.sql`、`DWD层设计草稿.md`、`schema_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 与映射。