质量监控与告警
问题
如何建立数据质量监控和告警体系?
答案
监控架构
告警级别
| 级别 | 触发条件 | 处理方式 |
|---|---|---|
| P0 阻断 | 主键重复、核心字段全空 | 阻止下游,立即修复 |
| P1 严重 | 数据量波动 >50%、金额异常 | 告警通知,优先修复 |
| P2 警告 | 空值率 >5%、延迟 >1h | 告警通知,排期修复 |
| P3 提示 | 次要字段缺失 | 记录日志,定期清理 |
监控指标体系
| 监控维度 | 指标 | 检测方式 |
|---|---|---|
| 数据量 | 行数、环比变化 | COUNT(*) 对比昨天 |
| 空值率 | 关键字段空值占比 | SUM(IS NULL) / COUNT(*) |
| 唯一性 | 主键重复数 | GROUP BY pk HAVING COUNT > 1 |
| 及时性 | 分区是否按时产出 | 检查 _SUCCESS 文件 |
| 一致性 | 上下游数据量差异 | 对比 ODS/DWD/DWS 行数 |
SLA 管理
| 层次 | SLA 示例 |
|---|---|
| ODS | 凌晨 2:00 前同步完成 |
| DWD | 凌晨 4:00 前清洗完成 |
| DWS | 凌晨 6:00 前汇总完成 |
| 报表 | 早上 8:00 前可查看 |
监控落地建议
- 最小化起步:先监控行数和空值率
- 逐步完善:按问题驱动新增规则
- 闭环处理:告警 → 定责 → 修复 → 复盘
常见面试问题
Q1: 如何减少误报(告警疲劳)?
答案:
- 设置合理的阈值(不要太敏感)
- 工作日和节假日使用不同阈值(节假日数据量天然少)
- 引入基线模型:与历史同期(上周同天)对比,而非固定值
- 告警分级:P3 只记录不通知
Q2: 数据质量看板应该包含什么?
答案:
- 全局视图:各层表的质量分数、红绿灯
- 趋势图:过去 7/30 天的质量指标趋势
- 问题列表:当前未修复的质量问题
- SLA 达标率:各层按时产出的百分比