1. 数据质量概述
1.1 数据质量的定义
数据质量(Data Quality)是指数据在特定使用环境下,满足业务需求、决策支持与系统运行的程度。它衡量的是数据是否“可信、可用、可理解”。在数据治理体系中,数据质量并非一个绝对概念,而是相对于数据消费者的预期而言的——同一份数据,在财务对账场景下可能质量合格,但在实时风控场景下却可能因延迟过高而被判定为不合格。
核心观点: 数据质量 = 数据对特定用途的适用性(Fitness for Use)。脱离业务场景谈数据质量没有实际意义。
1.2 数据质量的重要性
低质量数据会直接侵蚀企业的决策能力、运营效率和合规水平。根据行业统计,数据质量问题每年给企业造成的损失平均占营收的 15%–25%。以下是数据质量在四个关键领域的影响:
| 领域 | 低质量数据的后果 | 高质量数据的价值 |
|---|---|---|
| 业务决策 | 报表失真、趋势误判、资源错配 | 精准洞察、科学决策、敏捷响应 |
| 运营效率 | 流程中断、重复劳动、人工核对成本激增 | 自动化流转、零返工、端到端可追溯 |
| 合规风控 | 监管处罚、审计失败、法律诉讼风险 | 合规通过、风险预警、审计留痕 |
| 客户体验 | 信息错误、服务中断、客户流失 | 个性化服务、信任建立、忠诚度提升 |
实践提示: 在启动数据质量项目前,建议先与业务方共同识别“关键数据资产”(Critical Data Elements, CDEs),将有限的治理资源优先投入到对业务影响最大的数据域上。
1.3 数据质量六大维度
业界普遍采用六维模型来系统化评估数据质量。每个维度对应一类常见的质量问题,也是后续 SQL 审计脚本的核心检测目标。
1.4 维度详解与 SQL 审计场景
1.4.1 准确性(Accuracy)
准确性衡量数据记录的值与真实世界中的实际值是否一致。常见问题包括:数值录入错误、单位换算错误、数据漂移等。
- SQL 审计示例: 检查订单金额是否超出合理范围(如负值或超过 100 万)。
- 典型 SQL:
SELECT * FROM orders WHERE amount <= 0 OR amount > 1000000;
1.4.2 完整性(Completeness)
完整性指数据集中是否存在缺失值或空值。缺失可能是字段级(列空值)或记录级(行缺失)。
- SQL 审计示例: 统计必填字段的空值比例。
- 典型 SQL:
SELECT
COUNT(*) AS total_rows,
SUM(CASE WHEN customer_name IS NULL OR TRIM(customer_name) = '' THEN 1 ELSE 0 END) AS missing_name,
ROUND(100.0 * SUM(CASE WHEN customer_name IS NULL OR TRIM(customer_name) = '' THEN 1 ELSE 0 END) / COUNT(*), 2) AS missing_pct
FROM customers;
1.4.3 一致性(Consistency)
一致性要求同一数据在不同系统、不同表或不同字段之间保持逻辑统一。常见问题包括:同一客户在两个系统中的姓名不同、金额汇总与明细不匹配。
- SQL 审计示例: 交叉验证订单表与支付表的金额是否一致。
- 典型 SQL:
SELECT o.order_id, o.amount, p.pay_amount FROM orders o JOIN payments p ON o.order_id = p.order_id WHERE o.amount != p.pay_amount;
1.4.4 及时性(Timeliness)
及时性衡量数据从产生到可被使用的时间延迟是否在业务可接受范围内。对于实时报表、风控系统尤为重要。
- SQL 审计示例: 检查数据加载时间戳与业务时间戳的差值。
- 典型 SQL:
SELECT * FROM data_load_log WHERE DATEDIFF(hour, business_time, load_time) > 24;
1.4.5 唯一性(Uniqueness)
唯一性确保每个实体在数据集中只出现一次,不存在重复记录。重复数据会导致统计偏差、营销成本浪费。
- SQL 审计示例: 查找具有相同业务主键的多条记录。
- 典型 SQL:
SELECT customer_id, COUNT(*) AS dup_count
FROM customers
GROUP BY customer_id
HAVING COUNT(*) > 1;
1.4.6 有效性(Validity)
有效性指数据是否符合预定义的格式、类型、取值范围或业务规则。例如:邮箱格式、日期范围、枚举值列表。
- SQL 审计示例: 检查邮箱字段是否包含合法格式。
- 典型 SQL:
SELECT * FROM users WHERE email NOT LIKE '%@%.%';
常见误区: 不要将“有效性”与“准确性”混淆。有效性检查的是格式合规(如邮箱是否包含 @),准确性检查的是内容是否真实(如该邮箱是否确实属于该用户)。两者在 SQL 审计中的检测逻辑不同。
1.5 维度对比速查表
| 维度 | 核心问题 | SQL 检测关键词 | 典型修复方向 |
|---|---|---|---|
| 准确性 | 数据是否真实反映事实? | 范围校验、参照校验 | 数据校正、源系统修复 |
| 完整性 | 数据是否有缺失? | IS NULL、空字符串 | 默认值填充、数据补录 |
| 一致性 | 跨系统/跨表数据是否统一? | JOIN 对比、汇总校验 | 数据同步、映射标准化 |
| 及时性 | 数据是否在预期时间内可用? | 时间差计算 | 调度优化、实时管道改造 |
| 唯一性 | 是否存在重复记录? | GROUP BY + HAVING | 去重、主键约束 |
| 有效性 | 数据格式/类型是否合规? | 正则、枚举、类型检查 | 格式清洗、约束添加 |