DataRule 扩展说明

DataRule 主要用于定义某一类数据的校验逻辑,开发者如果需要为新的数据类型增加校验逻辑,通常需要完成两步:

  1. 继承 ValidationRule 并实现自定义 check() 函数

  2. DataChecker.rules 中将数据类型与对应 Rule 进行注册

1. 实现自定义 DataRule

1.1. ValidationRule

自定义数据校验规则需要继承 ValidationRule,该基类定义在 rl_insight/data/rules.py

ValidationRule 是所有数据校验规则的抽象基类,核心包括三个部分:

  • 初始化时定义 _error_message,用于保存当前 Rule 的失败原因

  • 定义抽象方法 check(data) -> bool,要求子类必须实现具体校验逻辑

  • 通过 error_message 属性向外暴露失败原因,供 DataChecker 收集

1.2 check()

check(data) 是每条自定义 DataRule 继承 ValidationRule后必须实现的核心方法

  • 输入data: 是当前待校验的数据对象,由 DataChecker 在运行时传入

  • 输出:返回 True 表示校验通过,返回 False 表示校验失败

    • 如果校验失败,应在 Rule 内部设置 self._error_message

    • error_message 属性用于让 DataChecker 收集失败原因

2. 注册自定义DataRule

自定义 Rule 实现完成后,需要在 DataChecker 中完成注册。注册位置位于 rl_insight/data/data_checker.py

DataChecker 中通过 DataEnum 表示不同的数据类型,通过 rules 字典维护数据类型和 Rule 列表之间的映射关系。

2.1. 注册新增数据类型

DataEnum 中增加新的类型名称,新增 DataEnum.CUSTOM_DATA

2.2. 注册数据类型和 DataRule 映射关系

新增数据类型后,需要在 DataChecker.rules 中将该数据类型和自定义 Rule 绑定起来。

例如,如果新增了一个自定义数据类型 CUSTOM_DATA,并实现了一个自定义规则 CustomDataRule,则需要在 rules 映射表中增加类似关系:

  • DataEnum.CUSTOM_DATA

    • CustomDataRule()

如果一个数据类型需要多个校验步骤,也可以注册多个 Rule。例如:

  • CustomPathExistsRule()

  • CustomFileExistsRule()

  • CustomFieldValidRule()

这样 DataChecker 会按照列表顺序依次执行它们。