规则管理
数据质量支持自定义规则模板库,并对自定义规则进行统一管理,也可以查看系统内置规则模板详情。规则维度包括:完整性、唯一性、有效性、准确性、一致性、及时性。规则粒度包括:表级、字段级、跨字段级。
表一 规则维度说明
规则维度 | 描述 |
---|---|
完整性 | 数据在创建、传递过程中无缺失和遗漏,包括实体完整、属性完整、记录完整和字段完整四个方面。 |
一致性 | 遵循统一的数据标准记录和传递数据信息,主要体现在数据记录是否规范、数据是否符合逻辑。 |
准确性 | 真实、准确地记录原始数据,无续建数据及信息。数据准确反映其所建模的“真实世界”实体。 |
唯一性 | 同一数据只能有唯一的标识符。体现在一个数据集中,一个实体只出现一次,并且每个唯一实体有一个键值 且该键值只指向该实体。 |
有效性 | 数据的值、格式和展现形式符合数据定义和业务定义的要求。 |
及时性 | 及时记录和传递相关数据,满足业务对信息获取的时间要求。数据交付及时,抽取要及时,展现要及时,数据交付时间过长可能导致分析结论失去参考意义。 |
创建规则模板
- 登录并进入百度智能云数据湖管理与分析EasyDAP。在左侧导航栏选择数据治理>数据质量>规则模板。
- 单击新建规则模板,填写规则模板的基本配置和关系定义。完成后确认即完成创建。
表二 创建规则模板配置项说明
配置项名称 | 描述 | 使用限制 |
---|---|---|
规则模板名称 | 自定义规则模板名称。 | 只能包含英文字母、数字、中划线和下划线,且以英文字母开头,不大于50个字符。 |
规则粒度 | 下拉列表选择表级、字段级、跨字段级。 | - |
规则分类 | 下拉列表选择完整性、唯一性、有效性、准确性、一致性、及时性。 | - |
描述 | 自定义规则描述信息。 | 长度不大于100个字符。 |
规则表达式 | 自定义SQL校验逻辑,支持添加库表、字段和输入参数。最多添加2张表、5个字段参数、2个输入参数;如果有多行输出,只取第一行数据,且数据必须为数值类型。 | 不支持“select * ”语法。库表、字段和输入参数请使用添加参数按钮进行添加,修改参数序号以保证逻辑正确性。 |
规则输出 | 输出可为最大值、最小值、合法行数、合法比率等。 | 如有多个输出值,输出值个数需和规则表达式输出个数一致,用英文逗号“,”进行分隔。 |
内置规则列表
- 登录并进入百度智能云数据湖管理与分析EasyDAP,在左侧导航栏,选择数据治理>数据质量。
- 单击左侧导航规则管理进入规则模板管理页面,即可查看规则列表。可对规则进行编辑和删除。
- 编辑:单击对应规则操作栏的编辑按钮,进入规则编辑页面。如果规则已经被质量作业引用,则无法编辑。
- 删除:单击对应规则操作栏的删除按钮,即可删除。如果规则已经被质量作业引用,则无法删除。
表一 内置规则列表表级规则
规则维度 | 规则名称 | 描述 | 输出值 | 输入参数 |
完整性 | 字段空值 | 指定字段为空或空字符串,则为1个空值行。 | 空值行数、总行数、空值率 | |
唯一性 | 字段唯一值 | 指定字段是唯一的,则为1个唯一值行。包含NULL值(NULL值计入唯一值行数)。 | 唯一值行数、总行数、唯一值率 | |
| 字段重复值 | 指定字段有重复值,则为n个重复值行,n为重复次数。不包含NULL值(NULL值不计入重复值行数)。 | 重复值行数、总行数、重复值率 | |
有效性 | 正则表达式校验 | 判断指定字段是否满足一定的格式,通过自定义正则表达式进行匹配。不校验NULL值(NULL值计入有效行数),下面正则类型规则相同。 | 无效行数、有效行数、总行数、无效比率 | 正则表达式 |
| 邮箱校验 | 匹配邮箱格式,正则表达式为:^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$ | 无效行数、有效行数、总行数、无效比率 | |
| 身份证校验 | 匹配身份证号码格式,正则表达式为:(^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$) | 无效行数、有效行数、总行数、无效比率 | |
| IP地址校验 | 匹配IP地址格式,正则表达式为:^(?:(?:1[0-9][0-9].)|(?:2[0-4][0-9].)|(?:25[0-5].)|(?:[1-9][0-9].)|(?:[0-9].)){3}(?:(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5])|(?:[1-9][0-9])|(?:[0-9]))$ | 无效行数、有效行数、总行数、无效比率 | |
| 电话校验 | 匹配手机电话号码格式,正则表达式为:^([1][3,4,5,6,7,8,9]\d{9})$ | 无效行数、有效行数、总行数、无效比率 | |
| 邮编校验 | 匹配邮编格式,正则表达式为:^[1-9]\d{5}$ | 无效行数、有效行数、总行数、无效比率 | |
| 日期校验 | 匹配日期格式(yyyy-MM-dd),正则表达式为:^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$ | 无效行数、有效行数、总行数、无效比率 | |
准确性 | 字段平均值 | 指定字段的平均值是否准确。 | 平均值 | |
| 字段平均值1天波动率 | 与1天前的执行结果做比较。 | 1天波动率 | |
| 字段平均值7天波动率 | 与7天前的执行结果做比较。 | 7天波动率 | |
| 字段平均值30天波动率 | 与30天前的执行结果做比较。 | 30天波动率 | |
| 字段平均值7天平均值波动率 | 与前7天的平均值做比较。 | 7天平均值波动率 | |
| 字段平均值30天平均值波动率 | 与前30天的平均值做比较。 | 30天平均值波动率 | |
| 字段汇总值 | 指定字段的汇总值是否准确。 | 汇总值 | |
| 字段汇总值1天波动率 | 与1天前的执行结果做比较。 | 1天波动率 | |
| 字段汇总值7天波动率 | 与7天前的执行结果做比较。 | 7天波动率 | |
| 字段汇总值30天波动率 | 与30天前的执行结果做比较。 | 30天波动率 | |
| 字段汇总值7天平均值波动率 | 与前7天的平均值做比较。 | 7天平均值波动率 | |
| 字段汇总值30天平均值波动率 | 与前30天的平均值做比较。 | 30天平均值波动率 | |
| 字段最大值 | 指定字段的最大值是否准确。 | 最大值 | |
| 字段最大值1天波动率 | 与1天前的执行结果做比较。 | 1天波动率 | |
| 字段最大值7天波动率 | 与7天前的执行结果做比较。 | 7天波动率 | |
| 字段最大值30天波动率 | 与30天前的执行结果做比较。 | 30天波动率 | |
| 字段最大值7天平均值波动率 | 与前7天的平均值做比较。 | 7天平均值波动率 | |
| 字段最大值30天平均值波动率 | 与前30天的平均值做比较。 | 30天平均值波动率 | |
| 字段最小值 | 指定字段的最小值是否准确。 | 最小值 | |
| 字段最小值1天波动率 | 与1天前的执行结果做比较。 | 1天波动率 | |
| 字段最小值7天波动率 | 与7天前的执行结果做比较。 | 7天波动率 | |
| 字段最小值30天波动率 | 与30天前的执行结果做比较。 | 30天波动率 | |
| 字段最小值7天平均值波动率 | 与前7天的平均值做比较。 | 7天平均值波动率 | |
| 字段最小值30天平均值波动率 | 与前30天的平均值做比较。 | 30天平均值波动率 | |
| 离群值 | 检测指定字段的数据与其他数据差异较大的,3倍标准差。 | 离群值行数、总行数、离群值比率 | |
| 值域范围 | 指定字段的取值范围是否在规定范围内。 | 无效行数、有效行数、总行数、无效比率 | 值域范围 |
| 枚举值校验 | 指定字段的取值范围是否在枚举值中。 | 无效行数、有效行数、总行数、无效比率 | 枚举值 |
表二 字段级规则
规则维度 | 规则名称 | 描述 | 输出值 | 输入参数 |
完整性 | 字段空值 | 指定字段为空或空字符串,则为1个空值行。 | 空值行数、总行数、空值率 | |
唯一性 | 字段唯一值 | 指定字段是唯一的,则为1个唯一值行。包含NULL值(NULL值计入唯一值行数)。 | 唯一值行数、总行数、唯一值率 | |
| 字段重复值 | 指定字段有重复值,则为n个重复值行,n为重复次数。不包含NULL值(NULL值不计入重复值行数)。 | 重复值行数、总行数、重复值率 | |
有效性 | 正则表达式校验 | 判断指定字段是否满足一定的格式,通过自定义正则表达式进行匹配。不校验NULL值(NULL值计入有效行数),下面正则类型规则相同。 | 无效行数、有效行数、总行数、无效比率 | 正则表达式 |
| 邮箱校验 | 匹配邮箱格式,正则表达式为:^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$ | 无效行数、有效行数、总行数、无效比率 | |
| 身份证校验 | 匹配身份证号码格式,正则表达式为:(^[1-9]\d{5}(18|19|20)\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)|(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$) | 无效行数、有效行数、总行数、无效比率 | |
| IP地址校验 | 匹配IP地址格式,正则表达式为:^(?:(?:1[0-9][0-9].)|(?:2[0-4][0-9].)|(?:25[0-5].)|(?:[1-9][0-9].)|(?:[0-9].)){3}(?:(?:1[0-9][0-9])|(?:2[0-4][0-9])|(?:25[0-5])|(?:[1-9][0-9])|(?:[0-9]))$ | 无效行数、有效行数、总行数、无效比率 | |
| 电话校验 | 匹配手机电话号码格式,正则表达式为:^([1][3,4,5,6,7,8,9]\d{9})$ | 无效行数、有效行数、总行数、无效比率 | |
| 邮编校验 | 匹配邮编格式,正则表达式为:^[1-9]\d{5}$ | 无效行数、有效行数、总行数、无效比率 | |
| 日期校验 | 匹配日期格式(yyyy-MM-dd),正则表达式为:^[1-9]\d{3}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$ | 无效行数、有效行数、总行数、无效比率 | |
准确性 | 字段平均值 | 指定字段的平均值是否准确。 | 平均值 | |
| 字段平均值1天波动率 | 与1天前的执行结果做比较。 | 1天波动率 | |
| 字段平均值7天波动率 | 与7天前的执行结果做比较。 | 7天波动率 | |
| 字段平均值30天波动率 | 与30天前的执行结果做比较。 | 30天波动率 | |
| 字段平均值7天平均值波动率 | 与前7天的平均值做比较。 | 7天平均值波动率 | |
| 字段平均值30天平均值波动率 | 与前30天的平均值做比较。 | 30天平均值波动率 | |
| 字段汇总值 | 指定字段的汇总值是否准确。 | 汇总值 | |
| 字段汇总值1天波动率 | 与1天前的执行结果做比较。 | 1天波动率 | |
| 字段汇总值7天波动率 | 与7天前的执行结果做比较。 | 7天波动率 | |
| 字段汇总值30天波动率 | 与30天前的执行结果做比较。 | 30天波动率 | |
| 字段汇总值7天平均值波动率 | 与前7天的平均值做比较。 | 7天平均值波动率 | |
| 字段汇总值30天平均值波动率 | 与前30天的平均值做比较。 | 30天平均值波动率 | |
| 字段最大值 | 指定字段的最大值是否准确。 | 最大值 | |
| 字段最大值1天波动率 | 与1天前的执行结果做比较。 | 1天波动率 | |
| 字段最大值7天波动率 | 与7天前的执行结果做比较。 | 7天波动率 | |
| 字段最大值30天波动率 | 与30天前的执行结果做比较。 | 30天波动率 | |
| 字段最大值7天平均值波动率 | 与前7天的平均值做比较。 | 7天平均值波动率 | |
| 字段最大值30天平均值波动率 | 与前30天的平均值做比较。 | 30天平均值波动率 | |
| 字段最小值 | 指定字段的最小值是否准确。 | 最小值 | |
| 字段最小值1天波动率 | 与1天前的执行结果做比较。 | 1天波动率 | |
| 字段最小值7天波动率 | 与7天前的执行结果做比较。 | 7天波动率 | |
| 字段最小值30天波动率 | 与30天前的执行结果做比较。 | 30天波动率 | |
| 字段最小值7天平均值波动率 | 与前7天的平均值做比较。 | 7天平均值波动率 | |
| 字段最小值30天平均值波动率 | 与前30天的平均值做比较。 | 30天平均值波动率 | |
| 离群值 | 检测指定字段的数据与其他数据差异较大的,3倍标准差。 | 离群值行数、总行数、离群值比率 | |
| 值域范围 | 指定字段的取值范围是否在规定范围内。 | 无效行数、有效行数、总行数、无效比率 | 值域范围 |
| 枚举值校验 | 指定字段的取值范围是否在枚举值中。 | 无效行数、有效行数、总行数、无效比率 | 枚举值 |
表三 跨字段级规则
规则维度 | 规则名称 | 描述 | 输出值 | 输入参数 |
一致性 | 字段一致性校验 | 指定字段的取值在参考字段的取值中存在(以参考字段为基准)。 | 一致行数、不一致行数、总行数、一致比率。 | |
举例说明
示例1:查询满足自定义过滤条件的表行数
规则模板名称:test_sql_1
- 规则粒度:表级
- 规则分类:准确性
- 规则表达式:select count(*) from ${Table1} where ${Table1}.${Column1} > ${Input1} and ${Table1}.${Column2} is not null
- 规则输出:表行数
说明:该自定义规则查询表行数,且需满足条件字段1 ${Table1}.${Column1} 大于自定义输入值 ${Input1}、字段2 ${Table1}.${Column2} 不为NULL,自定义输入值 ${Input1} 需在配置质量作业字段规则时填入。规则输出为“表行数”,对应规则表达式的"count(*)"查询结果。
示例2:查询表的相关自定义统计信息
规则模板名称:test_sql_2
- 规则粒度:字段级
- 规则分类:准确性
- 规则表达式:select count(*),max(${Table1}.${Column1}),sum(${Table1}.${Column2}),avg(${Table1}.${Column3}) from ${Table1}
- 规则输出:表行数,字段1最大值,字段2汇总值,字段3平均值
说明:该自定义规则查询表行数、字段1 ${Table1}.${Column1} 最大值、字段2 ${Table1}.${Column2} 汇总值、字段3 ${Table1}.${Column3} 平均值。规则输出一一对应,用英文分号“,”分割。
示例3:查询两表按指定字段join关联且满足过滤条件的行数
规则模板名称:test_sql_3
- 规则粒度:跨字段级
- 规则分类:准确性
- 规则表达式:SELECT count(1) FROM ${Table1} LEFT JOIN ${Table2} ON ${Table1}.${Column1} = ${Table2}.${Column1} WHERE ${Table1}.${Column2} > 0 AND ${Table2}.${Column2} > 0 AND ${Table2}.${Column3} > 0
- 规则输出:表行数
说明:该自定义规则查询表1 ${Table1} 和表2 ${Table2} 按照指定字段left join并且满足对应过滤条件的表行数。