# 上下文交接:字段级数据质量分析(任务2) ## 当前状态 字段级采样报告已生成,但用户认为还不够细致,需要继续深化。 ## 已完成 - 字段级采样脚本:`scripts/ops/field_level_report.py`(v2 性能优化版,每表 1~2 条 SQL) - 报告产出:`export/ETL-Connectors/feiqiu/REPORTS/field_level_report_20260220_233432.md`(197KB,95 张表,2622 个字段) - 覆盖范围:ODS 23 表 / DWD 40 表 / DWS 32 表 - 每字段统计:类型、NULL率、数值 min/max/avg、日期范围、文本长度范围、布尔分布 - 大表(>3000行)跳过 COUNT DISTINCT(标记为 `-`),小表精确计算 ## 已发现的数据质量问题 1. `dws.dws_order_summary.order_original_amount` 出现 -44000 负值(疑似退款/异常订单) 2. `member_flag` 和 `recharge_order_flag` 全部 FALSE(12920 行),标记字段可能未正确计算 3. 多张 `_ex` 表存在 `year -1` 异常日期值(上游 API 脏数据,脚本已用 `::text` 比较绕过) 4. DWS 层 23/32 表为空(14 个 DWS 任务已注册但尚未运行,配置表未填充) ## 黑盒测试报告(已完成,供参考) - 脚本:`scripts/ops/blackbox_test_report.py` - 报告:`export/ETL-Connectors/feiqiu/REPORTS/blackbox_report_20260220_181141.md` - 结论:ODS 22/22 成功,DWD 20/20 事实表比率 1.0(精确匹配),DWS 9/32 有数据 ## ETL 最近一次运行 - 日志:`export/ETL-Connectors/feiqiu/LOGS/703747ca8db84aa785405fc75ee388a2.log` - 参数:`--flow api_full --processing-mode full_window --window-start 2025-11-01 --window-end 2026-02-20 --window-split-days 10 --force-full` - 结果:22 ODS SUCC,DWD SUCC,3 INDEX SUCC(WBI/NCI/ORDER_SUMMARY),1 INDEX FAIL(RELATION_INDEX: `d.is_delete` → 应为 `s.is_delete`),14 DWS SKIP(已修复注册,下次可运行) ## 已知未修复 Bug - `DWS_RELATION_INDEX`:`relation_index_task.py` 第 226 行 `d.is_delete` 应为 `s.is_delete` - FlowRunner `full_window` 模式未生成 timing/consistency 报告(走了 else 分支) ## 关键文件 - `scripts/ops/field_level_report.py` — 字段级分析脚本 - `scripts/ops/blackbox_test_report.py` — 黑盒测试脚本 - `apps/etl/connectors/feiqiu/orchestration/task_registry.py` — 任务注册表 - `apps/etl/connectors/feiqiu/orchestration/flow_runner.py` — FlowRunner - `apps/etl/connectors/feiqiu/tasks/dws/` — DWS 任务实现 ## 数据库连接 - 四个 MCP 连接:`mcp_pg_etl`(正式)、`mcp_pg_etl_test`(测试)、`mcp_pg_app`、`mcp_pg_app_test` - store_id: `2790685415443269` ## 架构要点 - ODS PK = `(id, content_hash)`,快照模式 - DWD:dim 表 SCD2,fact 表 `dwd_*`(非 `fact_*`),扩展属性在 `*_ex` 表 - DWS:delete-before-insert 幂等,无游标 - 输出路径从 `.env` 的 `ETL_REPORT_ROOT` 读取