# dw_base/dq — 数据质量 ## 职责 对仓内表做数据质量检查,产出结果报告 + 告警。覆盖维度: - **结构层**:schema drift(字段/类型变更)、分区存在性 - **值层**:非空、唯一、值域、枚举、正则 - **规模层**:行数波动、环比/同比阈值 - **关联层**:主键冲突、外键孤儿、join 命中率 ## 对外接口概要(规划中) - `checks/` —— 各类规则实现 - `NotNullCheck(col)` / `UniqueCheck(cols)` / `ValueRangeCheck(col, min, max)` - `RowCountCheck(min, max)` / `RowCountDriftCheck(window_days, threshold)` - `SchemaDriftCheck(expected_schema)` / `PrimaryKeyCheck(pk_cols)` - `runner.run(table, dt)` —— 读 `conf/dq/.ini` → 跑声明的 checks → 汇总结果 - 结果出口: - 失败 → 告警走 `conf/alerter.ini` - 全量落 Hive 表(便于趋势分析,表名待定) - 入口脚本 `bin/dq-check.py`(**本批不建**) ## 依赖 - PySpark(SQL 查表统计) - `conf/dq/*.ini`(每张表一份规则声明) - `conf/alerter.ini`(告警接入) ## 状态 **骨架(未启动)**。实现顺序建议: 1. 最小可用:`RowCountCheck` + `NotNullCheck` + 告警接入(跑通链路) 2. 铺 `SchemaDriftCheck` + `UniqueCheck`(结构/唯一层) 3. `RowCountDriftCheck`(需要历史表) 4. join 命中率 / 枚举值检查(规则复杂,后做) 见 `kb/90-重构路线.md` 聚簇 D。