数据确认
数据科学中,数据确认(英語:data validation)是一个流程,确保数据清洗后的数据是健壮的(fitness)、一致的(consistency) 。这种流程称为“确认规则”、“确认约束”、“检查流程”[1] 。这不同于证实或证否算法正确实现了规格或属性的正确性。[2]
数据确认的类别
数据类别检查
如Excel数据表中的某列是由24个数字组成的序列号(serial number),不应该被Excel软件自动识别为数值,这会导致表示精度问题。
值域与约束性检查
如检查输入值在最小/最大的阈值之间;或与正则表达式定义的规格一致(consistency)。
代码及交查引用检查
代码与交叉引用确认是检查搜否与可能的外部规则、需求、或特定组织、上下文环境、基本假设相一致。这些确认提供的数据是否与已知的查询表或目录信息服务相一致。
例如,用户提供的国家代码应该与当前所在国家/地区相一致。
结构化检查
是指把其他种类的确认与复杂的流程组合起来。
一致性检查
确保数据是符合逻辑的。例如,订单交付日期不应该早于运输日期。
确认的类型
- 允许字符的检查
- 检查字符是否在期望的范围内。
- 批汇总
- 根据批汇总数据是否对得上,检查是否有缺失记录
- 基数检查
- 检查记录数与相关记录数是否合乎逻辑。例如,作为“客户”的接触信息记录,就应该至少关联一条订单。有的业务逻辑更为复杂。如工资数据库中标名为“前雇员”的接触信息记录,就不应该在离职日期之后再有关联的薪水支付记录(cardinality = 0)。
- 数字检查
- 对于数值数据,可以用一位额外的数字作为检查和。
- 一致性检查
- 检查记录的字段之间是逻辑一致的。例如,如果已经过了过期日期,那么状态字段就不该是"active".
- 跨系统一致性检查
- 多个系统可能都存有同一信息,但数据格式不同。
- 数据类型检查
- 检查输入值是否遵从了类型数据。例如,输入框应该包含数字,拒绝字母'O'。
- 文件存在检查
- 检查给定名字的文件是否存在。
- 格式检查
- 检查数据是否符合规定格式,如日期YYYY-MM-DD,正则表达式验证
- 存在性检查
- 例如,客户应该有email地址
- 值域检查
- 例如,概率值应该在0与1之间。
- 引用完整性
- 外键应该在被引用表中有对应的主键。
- 拼写与语法检查
- 独一无二性检查
- 查表检查
- 检查数据是否在允许值清单中。
确认后动作
- 强制动作
- 如果确认未通过,则拒绝该数据并要求输入者提供符合要求的数据。
- 建议动作
- 如果自动清理数据,应该给数据源用户发email备案此事。
- 确认动作
- 要求数据输入者人工确认数据符合其真实意图或者根据系统给出的建议修改数据格式。
- 日志动作
- 即使确认没有发现问题,也应该写下确认日志。
确认与保全
参见
参考文献
- ^ Methodology for data validation 1.0 (PDF). [2021-04-17]. (原始内容存档 (PDF)于2017-12-01).
- ^ Data Validation, Data Integrity, Designing Distributed Applications with Visual Studio .NET. [2021-04-17]. (原始内容存档于2014-12-30).
- ^ Chapter10. Data Validation. [2021-04-17]. (原始内容存档于2021-04-18).
- ^ More Efficient Data Validation with Spotless
外部链接
- Data Validation (页面存档备份,存于互联网档案馆), OWASP
- Input Validation (页面存档备份,存于互联网档案馆), OWASP Cheat Sheet Series, github.com