1.概述
在添加完所需质检规则后,即可开始创建质检方案。质检方案用于指定要执行的质检规则以及执行周期等。可以创建多个质检方案。自动或手动执行质检方案后就能得到质检结果。每个质检方案都有各自的质检结果。本文用于介绍如何创建和执行质检方案。
2.创建质检方案
创建质检方案主要分为6个步骤,填写方案基本信息→添加规则→运行参数配置→抽样设置→预警设置→完成。
在【数据质量】的【质量模型管理】页面,找到质量模型下的【质检方案】,点击【新建】。
1)基本信息
该流程中我们需要完成质检方案标题、描述等基本信息的填写。模型是否启用Spark引擎所看到的基本信息参数会存在部分差异,模型未启用Spark引擎时,看到的参数内容如下:
方案标题:方案标题,同一模型下方案标题具有唯一性。
方案描述:用于描述方案内容的文本信息。
整改流程:可设置数据整改流程,但需要预先在"工作流"模块中定义。设置整改流程后,后续才能在【数据整改】模块发起数据整改。
自动发起整改:勾选后每次执行完成质检后自动发起数据整改流程。
结果表历史保留期数:当模型设置了数据期字段,执行质检方案时会按数据期过滤数据进行质检并将质检结果存储。当结果表存储的数据期数超出“结果表历史保留期数”的值时,会在执行质检方案时自动清理历史结果数据,清理逻辑为:按执行时间排序,优先清理执行时间早的,当执行时间相同时再按数据期排序,清理数据期小的,当前执行的N期不参与清理,但会参与清理期数统计。(如:历史结果表中有2007/2008/2009,保留期数为2,重新选择2010期执行质检,质检后结果表仅存储2010/2009期的质检结果数据)
默认值为1,默认值配置路径为资源管理器/root/products/edq/schemeconfig.properties,参数为result_bbq_num=1。
仅保留错误数据:是否删除质检结果表中正确数据的相关信息,只保留错误数据的质检信息,默认全部保留。勾选可提升质检效率。
记录数据修复状态:勾选后,智能修复或手动整改错误数据后,重新执行质检方案时可记录数据的修复状态,在【质量监控】和【数据整改】中“已修复合计”会有条数记录。
模型启用Spark引擎后,新建质检方案时看到的基本信息如下:
结果表历史保留期数:参数功能基本同未启用Spark模型引擎的模型一致,但当模型启用Spark引擎后,质检结果表的存储方式是一期单独存储在一张表上,所以结果清理时也是按表清理。
仅保留错误数据:是否删除质检结果表中正确数据的相关信息,只保留错误数据的质检信息,默认全部保留。
单规则错误数据保留:填写自然数,表示质检结果表每个规则大约保留错误数据的条数,其中0表示不保留,为空时保留所有,最大值可设置1000万,超过1000万时默认转成1000万。同时受Spark分布式计算引擎的影响,无法准确的控制所有计算节点的错误保留量总和为设定值,最大误差范围为10000*执行器个数的错误数据。
默认值配置路径为资源管理器/root/products/edq/schemeconfig.properties,参数为result_per_rule_num=10000
记录数据修复状态:当方案配置仅保留部分错误数据后,每次方案执行保留的错误数据具有随机性,方案不支持记录数据修复状态功能,该参数置灰不允许勾选。
2)添加规则
点击添加按钮可从规则库中添加指定规则到质检方案中,执行质检方案时作为质检规则参与数据质检。
注意:1.同一规则不允许被重复添加;2.添加到质检方案的规则不允许删除及修改规则代号。
3)运行参数
运行参数作用于方案自动创建的方案调度,定义调度是否启用以及运行周期。
启用计划任务:勾选则启用方案调度计划任务,默认不启用。
数据期类型:模型设置数据期后执行质检方案需要选择一个数据期才能执行。数据期:选择一个固定数据期作为调度方案的执行数据期;最佳数据期:根据算法从模型数据期维表中取离当前服务器时间最近且不大于的一期数据期;数据期表达式:根据表达式内容取对应数据期。
同步上期例外:勾选则获取上期质检结果表中例外数据,并自动的将本期相同数据设置为例外数据。(方案配置了仅保留部分错误数据时,每期保留错误数据具有随机性,同步例外功能不生效)。
执行周期:方案调度的执行周期,可设置按年、按月、按周、按日、按时执行。
TIPS:【最佳数据期】
如数据期类型为“年”,填写格式说明:年,如2022表示2022年。最佳报表期:以每年的9月1日为界,9月1日之前,最佳报表期为上年,从9月1日开始,最佳报表期为本年。如用表达式,则为:str(if(month(today())>= 9,year(today()),year(today())-1)) 如数据期类型为“半年”,填写格式说明:年+01或02,如202201表示2022年上半年。最佳报表期:6月以前的最佳报表期是上年的下半年,六月开始到11月30日的最佳报表期是本年上半月,12月份的最佳报表期是本年下半年。如用表达式,则为:if(month(today())<6,str(year(today())-1)^'02',if(month(today())<=11,str(year(today()))^'01',str(year(today()))^'02')) 如数据期类型为“季”,填写格式说明:年+季度,如202202 表示2022年二季度。最佳报表期:1.2两月的最佳报表期是上年第四季度,3,4,5三个月的最佳报表期是本年第一季度,6,7,8三个月的最佳报表期是本年第二季度,9,10,11的最佳报表期是本年第三季度,12月的最佳报表期是本年第四季度。如用表达式,则为:if(month(today())<=2,str(year(today())-1)^'04',if(month(today())<=5,str(year(today()))^'01',if(month(today())<=8,str(year(today()))^'02',if(month(today())<=11,str(year(today()))^'03',str(year(today()))^'04')))) 如数据期类型为“月”,填写格式说明:年月,如202206 表示2022年6月。最佳报表期:以每个月的21号为界,每月21号之前最佳报表期为上月,从21号开始,最佳报表期为本月。如用表达式,则为:if(day(today())>=21,str(year(today()))^format('%2d',month(today())),if(month(today())=1,str(year(today())-1)^'12',str(year(today()))^format('%2d',month(today())-1))) 如数据期类型为“半月”,填写格式说明:年+月+01或02,如20220601表示2022年6月上半月。最佳报表期:以每月的16号为界,16号之前最佳报表期为上月的下半月,从16号开始,最佳报表期为本月的上半月。如用表达式,则为:if(day(today())>=16,str(year(today()))^format('%2d',month(today()))^'01',if(month(today())=1,str(year(today())-1)^'1202',str(year(today()))^format('%2d',month(today())-1)^'02')) 如数据期类型为“旬”,填写格式说明:年+月+01或02或03,如20220602表示2022年6月中旬。最佳报表期:取当天所在旬的上一期为最佳报表期。1-10日取上月的下旬为最佳报表期,11-20日取本月的上旬为最佳报表期,21日-月末取本月的中旬为最佳报表期。如用表达式,则为:if(day(today())<=10,if(month(today())=1,str(year(today())-1)^'1203',str(year(today()))^format('%2d',month(today())-1)^'03'),if(day(today())<=20,str(year(today()))^format('%2d',month(today()))^'01',str(year(today()))^format('%2d',month(today()))^'02')) 如数据期类型为“日”,填写格式说明:年+月+日,如20220628表示2022年6月28日。最佳报表期:每天的17:00之前,最佳报表期是上一天,从17:00开始,最佳报表期就为今天。如用表达式,则为:if(asint(left(now(),2))>=17,str(year(today()))^format('%2d',month(today()))^format('%2d',day(today())),if(day(today())<>1,str(year(today()))^format('%2d',month(today()))^format('%2d',day(today())-1),if(OR(month(today())=2,month(today())=4,month(today())=6,month(today())=9,month(today())=11),str(year(today()))^format('%2d',month(today())-1)^'31',if(OR(month(today())=5,month(today())=7,month(today())=8,month(today())=10,month(today())=12),str(year(today()))^format('%2d',month(today())-1)^'30',if(month(today())=1,str(year(today())-1)^'1231',if(OR(MOD(year(today()),400)=0,AND(MOD(year(today()),4)=0,MOD(year(today()),100)<>0)),str(year(today()))^'0229',str(year(today()))^'0228')))))) 如数据期类型为“自定义”,填写格式说明:要求自定义的脚本是8位 (可以是超过或者少于8位)实际情况匹配例如20220629152119 表示年月日 时分秒。最佳报表期以自定义报表期中定义的为准。 |
4)运行参数
数据质检在实际项目应用场景中存在为了快速、随机的检查数据质量情况,需要支持对质检数据进行抽样质检,为满足需求现质检方案支持随机抽样、分层抽样两种抽样质检的方式。
抽样方式:单选框参数,支持选择随机抽样及分层抽样。
随机抽样:从总数据量中随机抽取指定条数或指定百分比的数据参与质检。
分层抽样:从总数据量中按分层依据字段的层级随机抽取指定条数或指定百分比的数据参与质检。
主题表:方案中可添加多条规则,不同规则可能涉及质检不同主题表的数据,抽样质检时需要选择指定主题表的数据进行抽样质检。
分层依据:仅当抽样方式选择分层抽样时才联动出现。参数为下拉框参数,下拉框展示所有绑定了维表的维度字段,并在对应维度字段下展示维表的层级关系,选择指定层级后,执行质检方案时会抽取指定层级及其所有下级节点维度的数据进行质检。
例如:分层依据选择省,样本数选择100,则抽取每个省级行政区下对应市、县数据总和为100条。
样本量:支持选择样本数、样本占比。样本数是固定数值,不满足则取全部数据;样本占比是半分比取值,随机抽样时基于所有质检数据取百分比的数据,分层抽样时基于每个分层取百分比的数据进行质检。
示例:
质检结果表:XXB_DAY_GUID、XXB_MY_1W
分层依据:UPID中的”省”级
样本量:分层抽10条,随机抽10%
执行质检方案查看质量监控,质检数据会按配置的数据进行抽样。
5)设置预警
系统支持对质检结果进行预警,可实现执行质检时,若数据质量评分低于某个分数则短信或邮箱通知。
这里,我们要实现数据质量评分低于60分时短信通知相关人员,新建质检方案,在【预警设置】中新建,具体设置如下:
预警等级:系统内置3个预警等级,用于区别不同程度的预警。
预警分数段:设置对应预警等级下数值区间(闭区间),如[0,60]则表示当质检方案所得绩效分在0到60之间时(包含0和60)会发送预警通知,如果绩效分高于60则不发送预警通知。
通知消息:是否启用消息通知,默认禁用。
通知方式:目前支持的通知方式有邮件、企业微信、钉钉、短信,勾选不同的通知方式会联动展示出多个配置区域,支持同时使用多种方式发送通知。具体配置方法参考其他类型下《消息推送》操作手册文档 。
示例:设置一个1级预警,当质检方案绩效得分低于60分时,以邮件的形式发送给指定用户。
首先前往【系统设置】-【企业消息集成】-【邮箱配置】页面确认发件人邮箱配置正确。
然后新建方案时新建一个预警设置,从机构用户中添加具体用户,可自动获取用户绑定的邮件信息。
当质检方案绩效所得分处于预警区间时,会自动发送消息通知到收件人邮箱
注意:发送企业微信、钉钉、邮件及短信之前需要先配置相关信息,邮件配置见《发件邮件配置》,短信配置见《手机短信服务商配置》、钉钉配置见《钉钉应用配置》、企业微信见《企业微信应用配置》。
3.执行质检方案
创建好质检方案后,接下来就是执行质检方案得到质检结果。这里我们来手动执行刚新建的质检方案。
在质检方案列表中找到刚新建的质检方案,点击“执行”,在弹出的对话框中选择数据期,设置结果表处理方式等,然后点击【确定】开始执行。
当质检方案配置过仅保留部分错误数据时,执行方案弹框不显示“同步上期例外”参数。
质检方案执行时会展示进度,直至100%。
执行结束后,点击方案名称或者日志,可查看执行日志。
进入方案执行日志列表标签页后,可再选择某行执行记录查看其执行的详情日志。
质检方案成功执行完成后,就可以去【质量监控】模块查看质检结果,下一章节我们将介绍如何查看质检结果以及智能修复。
请先登录