单表校验规则原理说明
本节主要说明统计函数和校验方法的详细计算逻辑。
一条校验规则由五部分组成,前三部分(统计目标、统计函数、过滤语句)是为了得到一个唯一的统计值,后两部分(校验方法、期望值配置)是为了将这个唯一的统计值与质量要求进行比较。
统计函数
统计函数 | 适用字段类型 | 函数说明 | 空值处理 |
---|---|---|---|
空值数 | ALL | 选中字段为NULL的个数相加 | - |
空值率 | ALL | 选中字段为NULL的个数相加/整表或分区的总记录数 | - |
空串数 | 字符串 | 空字符的个数相加 | 不包括 |
空串率 | 字符串 | 空字符的个数相加/表总行数 | 不包括 |
重复数 | ALL | 字段的值有2条记录以上是一样的,则记为1次,最后对总次数相加 | 不包括 |
重复率 | ALL | 重复值个数/总行数 | 不包括 |
非重复值个数 | ALL | 不包括 | |
非重复值占比 | ALL | 不包括 | |
枚举值范围 | ALL | in,多个枚举值之间用英文逗号隔开,填写样例:a,b,c | 如果用户未写入null值,则出现null时,计为枚举值匹配失败 |
枚举值个数 | ALL | count(distinct{fieldName}) | 包括 |
负值比 | 数值类型 | 值小于0的行数/总行数 | 不包括 |
零值比 | 数值类型 | 值大于0的行数/总行数 | 不包括 |
正值比 | 数值类型 | 值大于0的行数/总行数 | 不包括 |
字符串最大长度 | 字符串 | 字段中字符最大长度 | 不包括 |
字符串最小长度 | 字符串 | 字段中字符最小长度 | 不包括 |
max | 数值类型 | max | - |
min | 数值类型 | min | - |
avg | 数值类型 | avg | - |
sum | 数值类型 | sum | - |
校验方法
- 固定值
- 根据校验规则中的阈值配置,计算
<s> <opt> <except>
,返回布尔值。如果为True,表示校验通过,如果为False表示校验未通过;s
表示经过统计函数计算的数据统计结果;opt
表示用户在期望值配置中选择的比较符,支持>,>=,<,>=,=,!=;except
表示用户输入的期望值;
- 举例: 配置项为:id字段,空值数; 校验方法:固定值; 期望值配置:>=12 系统会先统计id字段的空值数有多少,假设为s=10,再判断s、opt、except的关系,10<12,返回false,得出校验未通过的结论。
- 根据校验规则中的阈值配置,计算
- 1天波动
- 图例:
- 说明: 取出1天前的该规则下的历史数据pre,没有则算0;如果pre=0,那么结果等于0,否则未
(s-pre) / abs(pre)
,s为表内数据统计结果。
- 图例:
- 7天波动
- 图例:
- 说明:取出7天前的该规则下的历史数据pre,没有算0;如果pre=0,那么结果等于0,否则
(s-pre) / abs(pre)
,s为表内数据统计结果。
- 图例:
- 月度波动
- 图例:
- 说明:取出
${bizdate}-1月
的该规则下的历史数据pre,没有算0,如果这个月没有这么一天,也算0;如果pre=0,那么结果等于0,否则(s-pre) / abs(pre)
,s为表内数据统计结果。
- 图例:
- 7天平均值波动
- 图例:
- 说明:取出前7天的该规则下的历史数据,如果没有7天,有多少天算多少天,没有算0天。
计算出这些历史数据的平均值avg,0天算0;如果avg=0,那么结果等于0,否则
(s-avg) / abs(avg)
,s为表内数据统计结果。
- 图例:
- 月度平均值波动
- 图例:
- 说明:取出(${bizdate}-1月)的该规则下的历史数据,有多少天算多少天,没有算0天。
计算出这些历史数据的平均值avg,0天算0;如果avg=0,那么结果等于0,否则
(s-avg) / abs(avg)
,s为表内数据统计结果。
- 图例: