如何衡量计算数据质量?求Uniqueness等维度的量化公式
数据质量指标:Uniqueness、Validity、Consistency 量化测量方法示例
1. Uniqueness(唯一性)
衡量数据集是否存在重复记录(基于业务定义的唯一标识,如用户ID、订单号等),核心是统计重复条目占比或有效唯一条目占比。
常用量化公式
- 唯一性比率:
唯一性比率 = (总记录数 - 重复记录数) / 总记录数 × 100% - 唯一键重复率(针对指定唯一标识字段):
唯一键重复率 = 重复的唯一键条目数 / 总唯一键条目数 × 100%
示例
假设用户表有1000条记录,基于user_id统计发现有30条重复条目:
- 唯一性比率 = (1000 - 30)/1000 ×100% = 97%
- 唯一键重复率 = 30/1000 ×100% = 3%
实操代码示例(SQL)
-- 统计重复记录数 SELECT COUNT(*) - COUNT(DISTINCT user_id) AS duplicate_count FROM user_table;
2. Validity(有效性)
衡量数据是否符合预定义的业务规则(格式、数值范围、枚举值、数据类型等),需根据具体字段的规则定制测量方式。
常用量化公式
根据规则类型分为三类:
- 格式有效性比率:
格式有效性比率 = 符合指定格式的记录数 / 总记录数 ×100% - 范围有效性比率(数值/时间类字段):
范围有效性比率 = 在允许范围内的记录数 / 总记录数 ×100% - 枚举有效性比率(固定可选值字段):
枚举有效性比率 = 属于允许枚举值的记录数 / 总记录数 ×100%
示例
- 邮箱字段要求符合
xxx@xxx.xxx格式,总共有800条记录,其中760条符合规则:
格式有效性比率 = 760/800 ×100% = 95% - 年龄字段要求18-60岁,总共有1200条记录,其中1116条在范围内:
范围有效性比率 = 1116/1200 ×100% = 93%
实操代码示例(SQL)
-- 统计符合年龄范围的有效记录数 SELECT COUNT(*) AS valid_age_count FROM user_table WHERE age BETWEEN 18 AND 60; -- 统计符合邮箱格式的有效记录数 SELECT COUNT(*) AS valid_email_count FROM user_table WHERE email REGEXP '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,}$';
3. Consistency(一致性)
衡量同一实体的数据在不同存储位置(如不同表、不同系统)或同一数据集内的格式/逻辑是否统一,核心是统计匹配一致的条目占比。
常用量化公式
- 跨实体一致性匹配率:
一致性匹配率 = 跨存储位置匹配一致的记录数 / 需匹配的总关联记录数 ×100% - 字段格式一致性比率:
格式一致性比率 = 符合统一格式的记录数 / 总记录数 ×100%
示例
- 用户表和订单表各有500条关联记录,其中475条的用户手机号完全一致:
一致性匹配率 = 475/500 ×100% = 95% - 地址字段要求统一用“省-市-区”格式,总共有600条记录,其中570条符合:
格式一致性比率 = 570/600 ×100% = 95%
实操代码示例(SQL)
-- 统计用户表与订单表中手机号一致的记录数 SELECT COUNT(*) AS consistent_phone_count FROM user_table u JOIN order_table o ON u.user_id = o.user_id WHERE u.phone = o.phone;
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

