Qualitis是一个数据质量管理系统,用于监控数据质量。其功能包括数据质量模型定义,数据质量结果可视化、可监控。数据质量管理服务提供一整套统一的流程来定义和检测数据集的质量并及时报告问题。
登录成功之后,点击左侧栏的规则配置。在其下的二级菜单中,点击我的项目,进入项目模块。
点击页面左上方的新增项目,弹出新增项目界面。
填入
项目的名称,不能重复。
对该项目的简单介绍。
点击保存,即可创建一个新项目。
保存项目之后,左下角可以创建规则。可以新建单表规则,自定义规则以及跨表规则。
技术规则的名称,不可重复。
系统的校验模版,选择不同的校验模版,可以进行不同的校验。
选择模版中真正校验的数据源,选择数据源,会替换掉校验模版中的占位符,真正执行的SQL语句可以在SQL预览中查看。其中过滤条件可以填写系统提供的表达式,该表达式会在任务真正执行的时候,替换成实际的日期时间进行执行。
提供的表达式如下:
表达式 | 当天日期 | 替换值 |
---|---|---|
${yyyyMMdd}[-N(可选)] | 2018年12月17号 | 20181217(前N天) |
${yyyy-MM-dd}[-N(可选)] | 2018年12月17号 | 2018-12-17(前N天) |
${yyyyMMddHH}[-N(可选)] | 2018年12月17号15点 | 2018121715(前N天)只减天数 |
${yyyy/MM/dd}[-N(可选)] | 2018年12月17号 | 2018/12/17(前N天) |
如果不进行告警,不会监控任务的输出结果。
如果选择告警,并在其中选择监控的输出结果,并设定监控的阈值,当结果超出告警阈值的时候,任务就是不通过校验的状态。
比较运行结果和阈值的方式有以下四种:(假设设定的阈值为x,本次任务的运行结果为r)
1.月波动:将任务的运行结果和本条技术规则本月的运行结果的平均值y进行比较,如果(1-x)*y<=r<=(1+x)*y,任务通过校验,否则任务不通过校验。
2.周波动:和月波动同理,计算的平均值是本周的平均值。
3.日波动:和月波动周波动同理,计算的平均值是本日的平均值。
4.固定值:和一个固定值进行比较,比较的方式有等于,大于等等,如果比较选择比较方式是等于,那么如果r=x,那么任务不通过校验。
如上图所示,上图创建了一个监控字段不为空的的技术规则。在SQL预览中可以看到实际执行的SQL语句。 质量校验那里,会监控字段为空的数目,如果字段为空的数目不为0,那么会不通过校验。
技术规则的名称,不可重复。
校验的列的别名
自定义SQL的统计函数
选择提交任务的集群
如果勾选,则会将没通过校验的数据提取出来并保存,否则不会保存
将要执行的SQL语句会在预览中显示。
跨表技术规则能选择同一个集群中两张表,并对两张表进行数据校验。
跨表技术规则目前提供以下两种模版:
- 准确性校验 准确性校验可以比较两个表之间,所选字段的数据记录的准确性差异性。
- 通用校验 通过通用校验模版,可自定义跨表校验SQL。
以准确性校验为例子:
有表A和表B,数据分别如下:
A表
ColumnA1 | ColumnA2 |
---|---|
a | 1 |
b | 2 |
B表
ColumnB1 | ColumnB2 |
---|---|
a | 1 |
b | 3 |
如果对比ColumnA1和ColumnB1中的数据,则表A和表B完全一致。 如果对比ColumnA1和ColumnB1,以及ColumnA2和ColumnB2中的数据,则表A和表B中的数据有一条不一致。
任务可以从两个纬度执行,项目纬度和规则纬度。
项目纬度进行任务执行,会将项目下所有规则都提交执行。执行方式如下图所示:
提交的任务可以在任务界面中查找到,点击某一任务即可进入任务详情界面。
语义: 指定一个表中的某一个字段,检测出该字段为空的记录条数。
举例: 需求:希望找出集群中,某库中,某表,在ds='${run_date}'分区下,字段为空的记录条数。
配置: 首先选择空值检测模版。 选择希望检测的集群,库名,表名,字段,并填入分区过滤条件,如下图所示:
可以在SQL预览中查看执行的SQL是否和预期一致。
语义: 指定一个表中的多个字段,检测这些字段的组合在该表中是否具有唯一性。
举例: 需求:希望找出集群中,某库中,某表,在ds='${run_date}'分区下,key字段是否具有唯一性。
配置: 首先选择主键检测模版。 选择希望检测的集群,库名,表名,字段,并填入分区过滤条件,如下图所示:
可以在SQL预览中查看执行的SQL是否和预期一致。
语义: 指定一个表,检测该表的行数是否达到预期。
举例: 需求:希望找出集群中,某库中,某表,在ds='${run_date}'分区下,记录条数为多少。
配置: 首先选择表行数检测模版。 选择希望检测的集群,库名,表名,字段,并填入分区过滤条件,如下图所示:
可以在SQL预览中查看执行的SQL是否和预期一致。
语义: 指定一个表中一个字段,检测该字段的平均值是否达到预期。
举例: 需求:希望找出集群中,某库中,某表,在ds='${run_date}'分区下,key字段的平均值为多少。
配置: 首先选择平均值检测模版。 选择希望检测的集群,库名,表名,字段,并填入分区过滤条件,如下图所示:
可以在SQL预览中查看执行的SQL是否和预期一致。
语义: 指定一个表中一个字段,检测该字段的总和是否达到预期。
举例: 需求:希望找出集群中,某库中,某表,在ds='${run_date}'分区下,key字段的总和值为多少。
配置: 首先选择总和检测模版。 选择希望检测的集群,库名,表名,字段,并填入分区过滤条件,如下图所示:
可以在SQL预览中查看执行的SQL是否和预期一致。
语义: 指定一个表中一个字段,检测该字段的最大值是否达到预期。
举例: 需求:希望找出集群中,某库中,某表,在ds='${run_date}'分区下,key字段的最大值为多少。
配置: 首先选择最大值检测模版。 选择希望检测的集群,库名,表名,字段,并填入分区过滤条件,如下图所示:
可以在SQL预览中查看执行的SQL是否和预期一致。
语义: 指定一个表中一个字段,检测该字段的最小值是否达到预期。
举例: 需求:希望找出集群中,某库中,某表,在ds='${run_date}'分区下,key字段的最小值为多少。
配置: 首先选择最小值检测模版。 选择希望检测的集群,库名,表名,字段,并填入分区过滤条件,如下图所示:
可以在SQL预览中查看执行的SQL是否和预期一致。
语义: 指定一个表中一个字段,找出该字段不满足给定正则表达式的记录条数。
举例: 需求:希望找出集群中,某库中,某表,在ds='${run_date}'分区下,字段不满足正则表达式'[0-9]+'的记录数。
配置: 首先选择正则表达式检测模版。 选择希望检测的集群,库名,表名,字段,并填入分区过滤条件和正则表达式。如下图所示:
可以在SQL预览中查看执行的SQL是否和预期一致。
语义: 指定一个表中一个字段,找出该字段不满足选中日期格式的字段。
举例: 需求:希望找出集群中,某库中,某表,在ds='${run_date}'分区下,day字段不满足日期格式yyyyMMdd的记录数。
配置: 首先选择日期格式检测模版。 选择希望检测的集群,库名,表名,字段,并填入分区过滤条件,选中日期格式。如下图所示:
可以在SQL预览中查看执行的SQL是否和预期一致。
语义: 指定一个表中一个字段,找出该字段不满足数值类型的字段(是不是都是数字)。
举例: 需求:希望找出集群中,某库中,某表,在ds='${run_date}'分区下,字段不满足数值类型的记录数。
配置: 首先选择字段数值类型检测模版。 选择希望检测的集群,库名,表名,字段,并填入分区过滤条件。如下图所示:
可以在SQL预览中查看执行的SQL是否和预期一致。
语义: 指定一个表中一个字段,找出该字段不在所给枚举值中的记录条数。
举例: 需求:希望找出集群中,某库中,某表,在ds='${run_date}'分区下,字段不在 'a', 'b' 中的记录数。
配置: 首先选择枚举值检测模版。 选择希望检测的集群,库名,表名,字段,并填入分区过滤条件和枚举值(逗号分隔)。如下图所示:
可以在SQL预览中查看执行的SQL是否和预期一致。
语义: 指定一个表中一个字段,找出该字段不在所给数值范围中的记录条数。
举例: 需求:希望找出集群中,某库中,某表,在ds='${run_date}'分区下,key字段不在[0-5]的记录数。
配置: 首先选择数值范围检测模版。 选择希望检测的集群,库名,表名,并填入分区过滤条件和数值范围。如下图所示:
可以在SQL预览中查看执行的SQL是否和预期一致。
语义: 指定一个表中一个字段,找出该字段不符合身份证格式的记录条数(不能查询是否是真正的身份证,只能校验格式)。
举例: 需求:希望找出集群中,某库中,某表,在ds='${run_date}'分区下,字段不符合身份证格式记录数。
配置: 首先选择身份证检测模版。 选择希望检测的集群,库名,表名,字段,并填入分区过滤条件。如下图所示:
可以在SQL预览中查看执行的SQL是否和预期一致。
语义: 指定一个表,前置条件和后置条件,找到该表中满足该前置条件,但不满足后置条件的记录条数。
举例: 需求:希望找出集群中,某库中,某表,在ds='${run_date}'分区下,若前置条件, 找到不满足后置条件的记录条数。
配置: 首先选择逻辑类检测模版。 选择希望检测的集群,库名,表名,字段,并填入分区过滤条件,前置条件和后置条件。如下图所示:
可以在SQL预览中查看执行的SQL是否和预期一致。
语义: 指定一个表中一个字段,找出该字段为空字符串的记录条数。
举例: 需求:希望找出集群中,某库中,某表,在ds='${run_date}'分区下,字段为空字符串的记录数。
配置: 首先选择空字符串检测模版。 选择希望检测的集群,库名,表名,字段,并填入分区过滤条件。如下图所示:
可以在SQL预览中查看执行的SQL是否和预期一致。
语义: 指定一个表中一个字段,找出该字段为空值或空字符串的记录条数。
举例: 需求:希望找出集群中,某库中,某表,在ds='${run_date}'分区下,字段为空值或空字符串的记录数。
配置: 首先选择空值或空字符串检测模版。 选择希望检测的集群,库名,表名,字段,并填入分区过滤条件。如下图所示:
最后在SQL预览中查看执行的SQL是否和预期一致。