数据一致性校验

方法概述

数据一致性校验用于按预设的业务规则检查数据是否满足约束,及时发现并处理违规样本。常见的违规情形包括数值越界、主键重复、取值不在参考范围内以及列类型不符等,多由录入错误、多源合并或系统缺陷造成。本工具支持范围、唯一性、引用完整性、类型四类约束规则,可动态添加最多 5 条规则组合校验,对违规行红色标记,并支持剔除或新增标记列两种处理方式,配套违规统计报告、违规类型分布图与 AI 智能解读,适合作为数据入库、报表交付与建模前的质量把关环节。

计算步骤

1. 数据加载与预处理

  • 文件读取:支持 CSV 和 Excel 格式,文件大小不超过 5MB。
  • 缺失识别:自动将常见缺失占位符(如 """NA""null""?" 等)统一转换为缺失值标记。
  • 列类型转换:对字符型列,若超过 80% 的值可转换为数值,则自动转为数值列,便于类型与范围约束判断。
  • 空行/列清理:删除完全为空的行和列。

2. 约束规则设置

用户可动态添加 1-5 条约束,每条约束需指定列与类型:

  • 范围约束:要求数值列取值在 \([min, max]\) 内。当 \(x_i < min\)\(x_i > max\) 时该行违规。
  • 唯一性约束:要求列值唯一(缺失值不参与判断)。列内出现重复值时相关行违规。
  • 引用完整性约束:要求当前列的值必须出现在另一参考列的取值集合 \(\{v_{ref}\}\) 中。当 \(x_i \notin \{v_{ref}\}\) 时违规。
  • 类型约束:要求列的实际类型与预期类型(数值/字符/因子)一致,类型不符时该列整列视为违规。

3. 违规判定与汇总

所有启用约束的违规标记按行合并(“或”逻辑),任一约束违规即判定该行违规:

\[ flag_i = \bigvee_{k=1}^{m} \text{violate}_k(x_i) \]

输出各约束的违规数量与说明、违规行总数及比例。

4. 处理方式

  • 剔除违规行:删除所有被判定为违规的行,保留通过校验的样本。
  • 标记违规行:新增标记列(Consistency_Flag),违规样本标记为 Violation,其余为 Pass

5. 统计报告与可视化

  • 违规统计汇总:总行数、通过行数、违规行数及各自比例。
  • 约束违规明细:各约束的类型、列、说明与违规数量。
  • 柱状图:各约束类型违规数量;饼图:合规/违规样本占比。
  • 显示设置:小数位数仅影响表格中的数值显示精度,不影响校验判定结果。

6. AI 智能分析

基于违规类型分布与处理方式等摘要结果,调用大语言模型分析主要违规来源并提出清洗策略(每日限 3 次,需配置 API 密钥)。

7. 结果导出

  • 下载校验后的数据(CSV 或 Excel)。
  • 下载包含统计汇总、约束明细与处理后预览的 HTML 报告。

案例分析

案例背景:某产品订单表含订单号、销量、库存、状态 4 列,需校验数据满足业务规则:订单号唯一、销量在 1-1000 之间、状态取值来自参考列。

原始数据(示例)

订单号 销量 库存 状态
A001 10 500 已发货
A002 1200 300 已发货
A003 5 60 已退款
A001 8 40 已发货
A004 30 200 未知

处理过程(示例)

  1. 加载数据:上传 CSV,识别各列类型。
  2. 规则设置
    • 约束 1(唯一性):订单号 唯一。
    • 约束 2(范围):销量 在 \([1, 1000]\)
    • 约束 3(引用完整性):状态 取值必须存在于参考列(预设合法状态集:已发货、已退款、已签收)。
  3. 违规识别
    • A002 销量 1200 超出上界 1000,违反范围约束。
    • A001 出现两次,违反唯一性约束。
    • 状态”未知”不在合法状态集中,违反引用完整性约束。
  4. 处理方式:选择”剔除违规行”,上述违规行被删除。
  5. 效果评估:校验后剩余订单满足全部三条规则;若改为”标记违规行”,则原数据保留并新增违规标记列,便于复核。

处理结果统计(示例)

指标
总行数 100
通过行数 96
违规行数 4
违规比例 4%

结论:在本示例订单数据范围内,范围、唯一性、引用完整性三条规则组合定位出超量、重复与非法状态三类违规记录,为后续清洗提供了明确依据。

常见问题

Q1: 多约束同时启用时如何判定违规?
A: 任一约束违规即判定该行违规(“或”逻辑)。如需”同时满足才违规”的业务场景,可将多条规则拆分校验后手动合并结果。

Q2: 为什么最多只能设置 5 条约束?
A: 界面层面限制为 5 条,以保持交互简洁;对复杂规则可分批校验或先整理出核心约束再运行。

Q3: 唯一性约束对缺失值怎么处理?
A: 缺失值不参与唯一性判断,仅对非缺失取值检查重复,避免所有缺失行被误判为重复。

Q4: 类型约束违规会怎样?
A: 当列类型与预期不符(如预期数值实为字符)时,该列被视为整列违规,提示先进行列类型转换后再校验。

Q5: 标记与剔除哪种方式更合适?
A: 先标记、人工核查违规明细,再决定是否剔除,通常更稳妥;数据量大且规则明确时可直接剔除。

Q6: 引用完整性约束的参考列可以是同一列吗?
A: 可以,但更常见的用法是让子表字段参照主表的合法取值集合(如状态、分类),以实现跨表的取值一致性;同列参照(值与自身集合相符)一般恒成立,实际用处有限。

平台功能

  • 数据输入:支持 CSV、Excel(≤5MB),自动识别缺失符号并智能转换列类型。
  • 约束规则:范围、唯一性、引用完整性、类型四类,可动态添加/移除,最多 5 条。
  • 处理方式:剔除违规行或标记违规行(新增标记列)。
  • 结果展示
    • 原始数据预览中违规行以红色背景标记。
    • 违规统计汇总表与各约束违规明细表。
    • 违规类型分布柱状图与合规/违规占比饼图。
  • AI 智能分析:自动解读主要违规类型与清洗方向(每日限 3 次,需配置 API 密钥)。
  • 报告下载:支持下载校验后数据(CSV/Excel)和分析报告(HTML)。

使用建议

  1. 先定业务规则:从主键、取值范围、合法取值字典等业务约束出发设置约束,避免凭空设定。
  2. 从核心约束开始:优先校验唯一性与范围等影响最直接的规则,再逐步添加引用完整性、类型约束。
  3. 先标记后剔除:校验后先用标记方式检查违规明细是否符合预期,再执行剔除。
  4. 配合类型转换:类型违规通常先调整列类型,再重新校验范围等数值规则。
  5. 形成校验清单:将常用约束组合作为团队数据质量基线,定期对新增数据重复校验。
  6. AI 辅助:配置 API 密钥后可让 AI 总结主要违规模式并给出清洗策略。

平台界面

官方地址:https://superr.online

数据一致性校验工具界面

平台界面包含:数据上传区、约束规则动态设置区(最多5条)、处理方式参数区、原始数据预览(违规行红色标记)、违规统计汇总、约束明细表、违规类型柱状图与占比饼图及 AI 分析模块

参考文献

  1. Rahm, E., & Do, H. H. (2000). Data cleaning: Problems and current approaches. IEEE Data Engineering Bulletin, 23(4), 3-13.
  2. Ilyas, I. F., & Chu, X. (2019). Data Cleaning. Morgan & Claypool.
  3. Hellerstein, J. M. (2008). Quantitative Data Cleaning for Large Databases. USENIX NSDI.