
1) 【一句话结论】
数据质量监控需构建“规则定义-自动化检测-报警响应-修复”的闭环体系,通过配置中心管理规则、工具自动化检测、阈值报警及流程化修复,保障数据质量稳定。
2) 【原理/概念讲解】
老师口吻:数据质量监控的核心是“预防-检测-修复”的闭环流程。数据质量规则是定义数据应满足的标准,分为完整性(非空、必填)、准确性(业务逻辑符合,如年龄范围)、一致性(跨表关联一致,如ID唯一)。自动化检测是通过工具(如Flink、Spark)定期执行规则,实时监控数据流。报警是当规则不满足时触发通知(邮件、钉钉等),修复则是定位问题(数据源、ETL流程)后重新检测。类比:数据质量是业务系统的“血液健康”,规则是“健康指标(如血压、血糖)”,检测是“定期抽血化验”,报警是“发现异常后医生提醒”,修复是“调整饮食或就医”。
3) 【对比与适用场景】
| 规则类型 | 定义 | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| 完整性 | 数据字段无缺失,必填项不为空 | 检查非空、必填 | 用户注册表(手机号、密码非空)、订单表(订单号非空) | 明确必填字段,避免误判 |
| 准确性 | 数据符合业务逻辑,如年龄0-120岁 | 检查范围、逻辑判断 | 人员信息表(年龄)、交易金额(非负) | 结合业务规则,避免死板 |
| 一致性 | 跨表数据关联一致,如用户ID唯一 | 检查关联性、唯一性 | 用户表与订单表(用户ID匹配)、数据格式统一(日期格式) | 建立关联字段,计算复杂度较高 |
4) 【示例】
假设用户表结构:user_id(INT, 主键)、name(VARCHAR, 非空)、age(INT, 0-120)。设计规则:
-- 完整性检测:检查user_id和name非空
SELECT COUNT(*) AS missing_user_id, COUNT(*) AS missing_name
FROM user_table
WHERE user_id IS NULL OR name IS NULL;
-- 准确性检测:检查age在0-120
SELECT COUNT(*) AS invalid_age
FROM user_table
WHERE age < 0 OR age > 120;
-- 一致性检测:检查user_id唯一
SELECT COUNT(*) AS duplicate_user_id
FROM user_table
GROUP BY user_id
HAVING COUNT(*) > 1;
报警阈值设定:当异常数据量超过总数据量的10%,或连续3次检测到异常时触发报警。
5) 【面试口播版答案】
面试官您好,关于数据质量监控,我的核心思路是构建“规则定义-自动化检测-报警响应-修复”的闭环体系。首先,针对数据完整性、准确性、一致性设计规则:比如用户表要求user_id和name非空(完整性)、age在0-120(准确性)、user_id唯一(一致性)。然后,通过自动化工具(如Flink或数据质量平台)实现规则检测,比如每天凌晨运行SQL脚本,定期检查数据是否满足规则。当检测到异常时,通过邮件、钉钉或平台通知报警,比如当非空字段出现空值或年龄超出范围时,立即通知数据团队。报警后,团队通过平台定位问题(如数据源错误),修复后重新检测,确保问题解决。这样能保障数据质量稳定,支撑下游业务。
6) 【追问清单】
7) 【常见坑/雷区】