CN115237636A - 实时数据质量检查及修复系统 - Google Patents
实时数据质量检查及修复系统 Download PDFInfo
- Publication number
- CN115237636A CN115237636A CN202210953054.4A CN202210953054A CN115237636A CN 115237636 A CN115237636 A CN 115237636A CN 202210953054 A CN202210953054 A CN 202210953054A CN 115237636 A CN115237636 A CN 115237636A
- Authority
- CN
- China
- Prior art keywords
- data
- algorithm
- checking
- repair
- repairing
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了实时数据质量检查及修复系统,包括消息队列、检查与修复引擎、管理平台;消息队列是消息传递的媒介,管理平台为用户提供各类规则配置与检查结果查询分析,检查与修复引擎执行消息读取,规则加载对数据进行检测与修复,并输出最终结果,本发明能够依据配置的检测与修复规则自动地对数据进行实时质量监控与修复,系统发现异常数据,可以根据配置的指定算法,结合历史数据分析,及时的对数据进行修复,解决了由于异常数据导致的数据缺失和业务的不连续问题,检查与修复引擎使用了java多线程的技术并结合消息队列多分区与消费者可不重复消费数据的特性,实现了数据的高性能的处理。
Description
技术领域
本发明涉及数据检查与修复领域,具体是涉及实时数据质量检查及修复系统。
背景技术
受益于5G技术的快速发展,物联网在生活中的应用越来越广,在大数据时代的背景下,大量的传感器数据上报的数据,实时性强、数据量大、数据种类多、数据极具价值,同时各种类型的传感器在使用过程中,受工作环境、网络、以及传感器自身质量所影响,上报的数据经常性的会发生数据“抖动”、误报、错报等情况,导致数据在使用过程中产生错误的结果,那么在传感器使用过程中保证上报数据的准确性就显得尤为重要。
目前市场解决以上问题常用以下两类方法:第一种是事中监控,借助于大数据流处理技术如 Spark Streaming,Flink等技术针对不同种类的数据特点进行定制化开发,实时对数据问题进行检查,存在的问题:依赖于开源大数据技术的实现存在部署笨重,调试费力并且经常需要根据业务变更或特定场景的进行代码调整,且只能对数据进行检测而不具备修复功能。
第二种是事后改善,在接收到上报的数据后,先将数据持久化到数据库,在数据落库后,借助于批处理技术,针对“静态”数据进行重新检索,分析判断数据的异常问题; 存在的问题:对于一些实时性要求高的场景无法满足需求,同时在数据落库再进行查询遍历数据也会造成计算资源的浪费。
发明内容
为了解决上述技术问题,本发明提供了如下的技术方案:
实时数据质量检查及修复系统,包括消息队列、检查与修复引擎、管理平台;
所述消息队列是数据源与检查与修复引擎之间数据传递的中间件,作为消息传递的媒介;
所述检查与修复引擎是基于java语言,采用Spring Boot开发框架研发,通过调用管理平台已配置的检查算法和修复算法对数据源上报的数据执行检查与修复处理,并输出最终检查与修复结果,根据管理平台配置的报告规则,对检查与修复后数据进行统计,生成报告,发送通知,检查与修复引擎包括:数据接收组件、检查与修复组件、结果输出组件、数据结构与规则加载组件、算法加载组件、数据持久化模块、报告生成与通知任务组件、结果存储数据库、缓存数据库;
所述数据接收组件是检查与修复引擎的数据入口,使用java语言实现了对消息队列的SDK进行封装,实现了多种类型的消息队列的“消费者”功能,用于消费“数据接收队列”中的数据,当数据接收组件接收不到数据时,消费线程将执行睡眠,睡眠时长通过检查与修复引擎的配置文件配置,睡眠结束后继续获取数据,数据接收组件会记录消费数据记录的条数;
所述检查与修复组件,是检查与修复引擎执行检查与修复规则的执行器,用于执行用户配置的检查与修复规则,执行规则后,根据规则的配置信息对异常数据进行标识与修复;
所述结果输出组件,是检查与修复引擎的数据出口,使用java语言对消息队列的SDK进行了封装,实现了消息队列的“生产者”功能,结果输出组件不对数据做任何处理,在接收到检查与修复组件传递的处理后的数据后,直接将检查与修复后的数据或未匹配到检查与修复后的数据,输出到消息队列的检查与修复结果消息队列中;
数据持久化模块用于执行将检查结果数据存储到数据库中,是一个单独的java进程,对消息队列的SDK进行了封装,实现了多种类型消息队列的“消费者”功能,数据持久化模块与消息队列建立连接后,会持续的消费“检查与修复结果队列”中检查与修复后的数据,将数据存入检查结果数据库中;
算法加载组件用于在检查与修复引擎启动的时候加载已配置的检查与修复算法,并将其装配到检查与修复组件;
数据结构与规则加载组件用于将管理平台中配置的检查与修复规则和数据结构加载到检查与修复引擎的运行内存中,是检查与修复引擎中一个单独周期任务线程类,随着检查与修复引擎的启动而运行,设定周期时间,进行更新和加载,周期时间是系统提前设定好的,可通过引擎的配置文件进行配置;
报告生成与通知任务组件是一个单独周期任务线程类,随着检查与修复引擎的启动而运行,用于将管理平台中配置的报告规则加载到检查与修复引擎的运行内存中,设定周期时间,进行更新和加载,周期时间是系统提前设定好的,可通过引擎的配置文件进行配置;
结果存储数据库用于存储经过检查与修复引擎检查和修复后的数据,结果存储数据库中的每张数据结果表都对应着一个类型的上报数据,表名为上报数据的业务标识字段的值;
缓存数据库用于缓存需要结合历史数据进行计算的检查或修复算法所需的历史数据;
所述管理平台是基于Spring Boot+Mybatis框架实现的web管理系统,用于管理与维护基础配置数据,对检查结果的查看、报告下载等功能。
作为本发明的一种优选技术方案,所述管理平台包括数据结构管理、检查与修复规则管理、报告规则管理、报告查看与下载、检查结果查询、人员管理、业务数据库;
所述数据结构管理提供对数据源上报的数据内容结构体进行定义以及关联维度信息配置的创建、修改、删除、查询、详细信息查看等功能,包括数据结构配置、关联维度信息配置;数据结构是数据源上报的数据的结构体的描述信息,数据结构配置时需与数据源上报的数据结构体一致,一个数据结构对应一种类型的上报数据;关联维度信息配置,主要用于在配置检查与修复规则时,用户可以对符合检查和修复规则的上报数据实体上报的数据进行匹配配置,是选择配置在数据库中的数据源上报数据实体的维度信息,维度信息支持多级关联,是在数据结构创建完成后,再进行配置;
所述检查与修复规则管理提供对检查与修复规则进行配置,包括创建、修改、删除、查询、列表展示及详细信息查看,是检查与修复引擎对数据进行检测与修复的依据;
所述报告规则管理提供对报告规则进行创建、修改、删除、查询、列表展示、详细信息查看功能,报告规则用于对检查与修复后的数据结果进行周期统计和检查结果通知方式的设置;
所述报告查看与下载提供查看报告规则产生的统计报告和报告明细下载的功能,报告查看与下载可以按时间、报告名称对报告进行筛选;
所述检查结果查询用于查询检查与修复后的数据;根据特定的过滤条件查询数据;
所述人员管理提供对报告通知人员信息进行管理的功能,包括人员添加、修改、删除、查询、列表展示以及详细信息查看等功能;
所述业务数据库,用于存储检查与修复引擎执行数据处理所需的业务数据。
作为本发明的一种优选技术方案,所述数据结构配置包括数据结构名称、业务标识、数据字段、描述信息,数据结构配置内容可进行添加、查看、修改、删除、详细信息查看;
所述数据结构名称是给配置的数据结构定义个名称,为方便用户对数据结构进行管理,数据结构名称支持输入中文、英文、数字或下划线,输入其他内容将无法通过校验并进行报错提示;
所述业务标识是该数据结构对应的上报的数据的类型,需要与数据源实际上报数据中的业务标识一致,业务标识支持输入英文、数字或下划线且必须以英文字母为开头,输入其他内容将无法通过校验并进行报错提示,业务标识配置后不能修改;
所述数据字段是对数据源上报数据的数据项的配置,支持配置一项或者多项,根据实际上报的数据内容进行匹配录入,在同一业务标识下,可配置多个数据字段,数据字段内容不允许为空,如果为空进行报错提示,且无法保存;添加数据字段输入内容包括:字段中文名称、字段英文名称、字段数据类型,其中数据类型为下拉选项,支持选择数值型、文本型、布尔型、时间型、对象型,选中已添加的数据字段,可以对添加的字段信息进行修改和删除操作;
所述描述信息,用户可以对数据结构添加描述信息,对数据结构内容进行说明,非必填项;
所述关联维度信息配置的内容包括关联关系名称、数据字段、维度表、维度字段;
所述关联关系名称,是对关联联系的简短描述,为方便用户对关联关系进行管理,关联关系名称支持输入中文、英文、数字或下划线;
所述数据字段是通过下拉选项选择,选项内容为数据结构配置中已添加的数据字段;
所述维度表是通过下拉选项选择,选项内容是上报数据实体的维度表;
所述维度字段是通过下拉选项选择,选项内容是选定的维度表内的字段内容,当选择的维度表后,维度字段的下拉选项自动匹配所选择的维度表内的维度字段内容;
所述检查与修复规则管理包括:规则名称、数据结构、匹配值配置、算法配置;
所述规则名称支持输入的内容包括:中文、英文、数字或下划线,输入其他内容无法通过校验并显示报错提示信息;
所述数据结构是通过下拉选项选择,可以选择已经在数据结构配置中配置好的数据结构;
所述匹配值配置用于选择检查与修复规则的执行对象,有添加按钮,点击后可以选择在数据结构中配置的关联关系的维度表,然后点击维度下输入域,弹出选项界面,进行选择,选项内容对应显示已选定的关联关系的维度表中的维度数据,做为此检查与修复规则要执行的对象;
所述算法配置,点击“添加算法”,弹出算法添加对话框,包括:字段、检查算法、修复算法;
所述字段从下拉菜单中选择,内容是所述数据结构中配置的数据字段,
所述检查算法从下拉菜单中选择,内容是算法配置表中的类型为检查算法的中文名称,
所述修复算法从下拉菜单中选择,内容是算法配置表中的类型为修复算法的中文名称;系统支持的检查算法和修复算法是在业务数据库中的算法配置表提前配置好的,如果用户开发了自定义算法,在算法开发完毕后,也需将算法信息配置到算法配置表中,并将自定义算法的实现工程jar包放到检查与修复引擎的根目录,否则检查与修复引擎执行自定义算法将会失败;检测算法与修复算法是成对配置,添加一种检查算法可以配置一个或者不配置修复算法,数据结构中的同一个数据字段支持配置多个检查算法,当一个检查与修复规则中同一个字段配置多个检查算法或者不同规则配置配置的数据结构字段是相同的,则当数据再第一次被修复过后就不再执行其他的检查与修复算法;
所述报告规则管理,创建内容包括:报告规则名称、生成报告周期、数据结构、通知阈值、通知级别、通知人员、通知方式;
所述报告规则名称支持输入中文、英文、数字或下划线,输入其他内容将无法通过校验并进行报错提示;生成报告周期支持输入crontab表达式,crontab表达式是一种定时任务执行时间的表达方式,可以设置多个执行时间,相邻两个执行时间构成一个报告周期,也可以设置以当前时间为开始的固定时间的报告周期;
所述数据结构是从下拉选项中选择,是用户已经在数据结构管理功能中配置好的数据结构名称;
所述通知阈值是判断是否发送通知的条件,用于与报告统计结果中数据正确率做对比,可以输入整数或小数;当数据正确率低于设置的通知阈值时,则执行报告统计结果的发送;
所述通知级别,代表了数据产生异常状态的严重程度,是通过下拉选项选择,选项内容包括:预警、一般、严重、重要;
所述通知人员,是指要接收报告通知的人员。通知人员支持配置多个,支持手动输入和从下拉选项中选择两种方式进行设置,手动输入的方式需填写人员名称、根据选定的通知方式,填写对应的地址信息;
所述通知方式,是通过复选框选择,支持多种通知方式同时通知,选择内容包括:邮件、短信、钉钉、微信、云之家,如果没有配置通知方式,则无法进行通知;
所述报告查看与下载中,报告列表展示内容包括:报告名称、数据正确率、任务开始时间、任务结束时间、任务执行时长;
所述报告名称是系统自动生成,由报告规则名称与报告执行统计的开始时间组成;
所述数据正确率是一个比值,是该报告规则统计周期内,报告规则统计出的检查与修复结果的总记录数与正确数的比值, 计算的公式为: 数据正确率=(检查条数-异常条数)/ 检查条数 X 100%;
所述任务开始时间为报告规则单个周期任务执行的开始时间;
所述任务结束时间为报告规则单个周期任务执行的结束时间;任务执行时长为报告规则单个周期执行的任务执行的时长,单位为秒;
用户点击报告列表中报告名称,显示统计报告页面,页面展示内容包括:数据结构、检查规则、统计数据开始时间、统计数据结束时间、数据正确率、检查数、正确数、异常数、不准确数、修复数、修复率、明细下载连接;
所述数据结构表示当前报告是对那类数据进行的统计,此处的数据结构就是配置检查与修复规则时选择的数据结构;所述检查规则,表示当前报告展示的是那个检测与修复规则检查与修复的结果;所述统计数据开始时间、统计数据结束时间表示当前报告统计数据的时间范围;所述数据正确率,统计报告页面展示的数据正确率与报告列表中展示的数据正确率是同一个值;所述检查数表示统计时间周期内总共检查的数据量;所述正确数显示的是统计时间周期内检查结果正常的数据条数;所述异常数显示的是统计时间周期内检查结果异常的数据条数;所述不准确数与异常数相同;所述修复数显示的是统计时间周期内检查结果为异常,已经有被修复算法修复的数据条数;所述修复率是修复数据占异常数的一个比值,计算的公式为:修复率=修复数/异常数*100%;所述明细下载连接,点击明细下载连接后下载文件的形式为Execl表格,文件内容包括:数据上报时间、上报数据主体标识、上报数据内容、各字段的检查算法标识、各字段的修复算法标识;
所述检查结果查询的筛选条件包括:数据结构名称、数据查询开始时间、数据查询结束时间、结果类型、数据字段、字段值过滤表达式;所述数据结构名称是通过下拉选项选择,选项内容为用户在数据结构管理功能中配置的数据结构名称,为必填项;所述数据查询开始时间与数据查询结束时间是要查询结果数据表中上报数据的时间范围,数据查询结束时间不能早于数据查询开始时间且不能晚于当前时间,数据查询开始时间与数据查询结束时间的时间跨度不能超过系统设定的时间长度:N个月,为必填项;结果类型是通过下拉选项选择,是对数据结果表中检查与修复结果状态进行筛选的选项,通过结果类型的选择可以实现对检查结果数据状态的筛选,结果类型包含:全部、检查异常、检查正常、未修复、已修复,当选择全部时则不对数据结果进行区分,默认为全部,为必填项;数据字段,是通过下拉选项选择,展示的内容为数据结构中定义的数据字段,数据字段名称与结果存储数据库中的结果数据表字段名是相同的,选择了数据字段后也就是要对数据结果表中的某个字段的结果值进行筛选,为选填项;字段值过滤表达式,是对数据过滤条件的配置,为选填项;
所述人员管理,设置的人员信息内容包括:人员姓名、人员电话、人员邮箱地址、人员微信号、人员的钉钉号、人员的云之家账号;人员姓名支持输入中文、英文,输入其他内容将无法通过校验并进行错误提示;人员电话值允许输入手机号,输入其他内容将无法通过校验并进行错误提示;人员邮箱地址,需符合邮件地址的格式,输入其他内容将无法通过校验并进行错误提示;人员电话、人员邮箱地址、人员微信号、人员的钉钉号、人员的云之家账号都为非必填项,但至少要填写一项;
业务数据库包括:数据结构表、检查与修复规则表、报告规则表、报告信息表、数据结构关联关系表、人员信息表、维度表、维度信息配置表、维度表字段信息表、算法配置表;
数据结构表用于存储通过管理平台配置的数据结构信息;检查与修复规则表用于存储通过管理平台配置的检查与修复规则信息;报告规则表用于存储通过管理平台配置的报告规则信息;报告信息表用于存储检查与修复引擎执行报告规则的统计结果信息;数据结构关联关系表用户存储数据结构与数据上报实体维度的关联关系;人员信息表用于存储报告规则通知的人员信息;
维度表是数据上报实体维度数据表,是根据实际业务需要录入到业务数据中,可能是一张或者多张表,主要记录数据上报实体的维度信息;维度信息配置表,用于记录已经录入业务系统中的维度数据表信息;维度表字段信息表,用于记录维度数据表中都包含了哪些字段,以上相关业务表需在检查与修复引擎执行数据处理前录入到业务表中;
算法配置表用于记录检查与修复引擎所能执行检查和修复算法,算法配置表字段包括:数据的主键、算法英文名称、算法中文名称、算法类型、是否需要缓存历史数据;数据的主键为数据库记录的唯一标识,不可重复;算法英文名称、算法中文名称是系统已有算法或者用户自定义算法的名称,用户自定义算法的名称由用户自行定义,算法的英文名称只允许输入英文、数字、下划线,中文名称可以输入中文、英文、数字、下划线,算法的中文名称和英文名称都不可空,且英文名称需与用户自定义算法实现类中算法英文名称变量的值一致;算法类型为标记算法是检查算法还是修复算法, 值为1 是修复算法,值为2是检查算法;是否需要缓存历史数据,用于标识该自定义算法是否需要结合历史数据进行计算,值为1 表示是,值为0表示否。
作为本发明的一种优选技术方案,所述消息队列可选择Kafka、RabbitMQ、RocketMQ、ActiveMQ中任意一种。
作为本发明的一种优选技术方案,所述数据字段是以树形进行维护的,所述业务标识为树的根节点,在根节点上右键添加数据字段、修改数据字段、删除字段,以及字段信息查看,实现对数据字段的维护,点击添加数据字段功能会弹出数据字段添加的对话框,添加数据字段,根节点不支持修改和删除操作;
所述检查结果查询中,N个月为3个月。
作为本发明的一种优选技术方案,所述检查算法中,系统已配置的算法包括:常量表达式 、连续重复值、负值、极大值、检查Groovy、最大值、最小值、平均值、标准差、四分位差;
负值,针对上报数据应为线性增长类的数据的场景,不需要配置数据参数,检查与修复组件会对配置了负值检查算法的字段自动记录上一次正确读数,如果被检查为异常的数据,则不会被记录,并将当前处理的数据与上一次正确读数对比,如果当前处理的数据小于上一次上报读数时,则将本次读数标记为异常,将数据异常标记字段的检查类型标识标识为-4;
极大值,针对数据具有极限值的场景,上报读数是不能超过一定范围的,如果上报读数超过此范围,则认为是异常数据,将数据异常标记字段的检查类型标识标识为 -5;
检查Groovy,针对具备一定编程基础的使用者,可以输入一段Groovy的脚本函数,函数的输入参数为本条数据与上一条数据,用户自定义判断逻辑,Groovy处理结果需返回true或false,当结果为true时,则认为是异常数据,将数据异常标记字段的检查类型标识标识为 -6;
最大值、最小值、平均值:针对简单计算场景,将数据与指定范围内历史数据产生的最大值、最小值、平均值做比较;该检查算法需指定历史数据缓存的范围和比较方式;指定范围的方式包括按次数、按时间范围,数据检查与修复组件会将符合算法配置范围内的数据自动存入缓存数据库中,数据异常标记字段的检查类型标识标记:最大值为-7、最小值为-8、平均值为-9;
标准差、四分位差:针对离群数据的检查方法,数据与指定范围内历史数据产生的标准差与四分位差做比较,标准差支持输入倍数,即当数据数据超过几倍的标准差值时标记为异常,该检查算法需指定历史数据缓存的范围和比较方式,指定范围的方式包括按次数、按时间范围,数据检查与修复组件会将符合算法配置范围内的数据自动存入缓存数据库中,数据异常标记字段的检查类型标识标记:标准差为-10、四分位差为-11;
常量表达式,针对如行业标准、国家标准或国际标准中规定的具有固定范围的数据可以使用常量表达式,该检查算法的输入参数为固定的表达式,数据异常标记字段的检查类型标识为-12;
连续重复值,针对数据变动比较频繁的场景,当处理的数据为连读多次获者一个周期内上报的值一直未发生变化,则认为是异常,该检查算法需指定历史数据缓存的范围和比较方式,指定范围的方式包括按次数、按时间范围,数据检查与修复组件会将符合算法配置范围内的数据自动存入缓存数据库中,数据异常标记字段的检查类型标识为-13;
系统已配置的修复算法包括:根据上一条、固定值、中位数、移动平均数 、指数平滑、修复Groovy、随机数;
根据上一条是将上一次读数做为本次异常数据修复数据,不需要配置参数,检查与修复组件会自动记录上一次读数,当检测的数据为异常数据时,使用此算法修复,将上一次读数作为本次修复的数据存入检测异常字段的修复值字段,并将数据修复标记字段标识为2;
固定值是将固定输入的数据做为异常数据修复数据,该修复算法需输入的参数为固定值,当检测的数据为异常数据时,使用此算法修复,将设定的固定值参数作为本次修复的数据存入检测异常字段的修复值字段,并将数据修复标记字段标识为1;
中位数是将指定范围内历史数据计算产生中位数,做为异常数据的修复数据,中位数修复算法输入的参数为:历史数据范围,指定范围的方式包括按次数、按时间范围;检查与修复组件会将符合中位数算法周期内的数据存入数据缓存中,用于计算出中位数;检查的异常数据修复时,将计算后中位数作为本次修复的数据存入检测异常字段的修复值字段,并将数据修复标记字段标识为4;
移动平均数,将指定范围内历史数据计算产生移动平均数,做为异常数据的修复数据,移动平均数的修复算法输入的参数为:历史数据范围,指定范围的方式包括按次数、按时间范围;检查与修复组件会将符合移动平均算法周期内的数据存入数据缓存中,用于计算出移动平均数,将计算后的移动平均数作为本次修复的数据存入检测异常字段的修复值字段,并将数据修复标记字段标识为5;
指数平滑,将指定范围内历史数据计算产生指数平滑结果,做为异常数据的修复数据,指数平滑算法输入的参数为:历史数据范围,指定范围的方式包括按次数、按时间范围、指数平滑的系数;检查与修复组件会将符合指数平滑法周期内的数据存入数据缓存中,计算出指数平滑结果,检查的异常数据修复时,将计算结果作为本次修复的数据存入检测异常字段的修复值字段,并将数据修复标记字段标识为6;
修复Groovy,针对具备一定编程基础的用户,可以输入一段Groovy的脚本函数,函数的输入参数为本次读数与上一次读数,用户自定义修复逻辑,函数的返回值应为一个读数,检查的异常数据修复时,将函数的返回值作为本次修复的数据存入检测异常字段的修复值字段,并将数据修复标记字段标识为7;
随机数是系统根据配置参数产生随机数做为修复数据,输入参数包括最大值、最小值、小数位数,最大值,表示产生的随机数不能大于此数;最小值表示产生的随机数不能小于此数;小数位表示随机数的精度即保留几位小数,当小数位数为0时,则产生整数,检查的异常数据修复时,将随机数作为本次修复的数据存入检测异常字段的修复值字段,并将数据修复标记字段标识为8;
作为本发明的一种优选技术方案,算法加载组件支持用户自定义检查与修复算法方法如下:
用户自定义的检查与修复算法必须以java语言实现,自定义算法的实现工程是maven工程,以pom的方式引入检查与修复引擎的算法接口jar包,jar包中包含了检查算法抽象类与修复算法抽象类,自定义检查算法实现类需继承jar包中检查算法抽象类,并实现抽象的检查方法,检查算法抽象类中的变量包括:检查算法英文名称、检查算法标识、检查算法缓存数据;检查算法英文名称,用户自定义的算法的名称,此名称用于记录到算法配置表的算法英文名字段,检查与修复引擎根据此名称将检查与修复规则配置的检查算法进行匹配,用户在实现自定义检查算法时必须给自定义算法定义名称,如果不定义名称,算法再加载时将会报错,并且算法将不会被装配到检查与修复组件中;检查算法标识,用于当自定义检查算法检查出异常数据时,记录到数据的数据异常标记字段,检查算法标识不能与已有的算法标识重复;检查算法缓存数据,如果自定义算法需要基于历史数据进行计算,可通过算法缓存数据变量获取历史数据;抽象的检查方法包括两个参数:当前处理的数据记录、上一次数据记录,自定义检查算法在实现抽象算法时可以基于以上两个参数实现数据逻辑的判断,自定义检查算法的返回值为Integer类型的值,返回0表示检查数据无异常,返回检查算法标识表示检查数据异常;自定义修复算法实现类需继承jar包中修复算法抽象类,并实现抽象的修复方法;修复算法抽象类中的变量包括:修复算法英文名称、修复算法标识、修复算法缓存数据;修复算法英文名称,用户自定义修复算法的名称,此名称用于记录到算法配置表的算法英文名字段,检查与修复引擎根据此名称将检查与修复规则配置的修复算法进行匹配,用户在实现自定义修复算法时必须给自定义修复算法定义名称,如果不定义名称,算法再加载时将会报错;修复算法标识,用于当自定义修复算法在对异常数据修复后,记录到数据的数据修复标记字段,修复算法标识不能与已有的修复算法标识重复;修复算法缓存数据,如果自定义修复算法需要基于历史数据进行计算,可通过修复算法缓存数据变量获取历史数据;修复算法的抽象方法,包括连个参数,当前上报数据记录、上一次正确数据记录,自定义修复算法在实现抽象算法时可以基于以上两个参数实现数据的判断逻辑,在计算出正确的结构后,需将修复值更新到当前上报数据记录的修复结果字段;在自定义算法开发完成后,将maven工程打包成jar包,在检测与修复引擎启动前,将jar包放在检测与修复引擎的根目录下,将算法信息配置到所述业务数据库中的算法配置表中,配置内容包括:算法的英文名称,中文名称,算法类型,是否需要缓存历史数据。英文名称需与自定义算法实现类中算法的英文名称变量的值一致,不能为空;中文名称为用户自定义,将会显示在检查与修复规则配置页面的算法选择下拉列表中,不能为空;算法类型,用于标识算法是检查算法还是修复算法;是否需要缓存历史数据,用于标识用户的自定义算法是否需要结合历史数据进行计算。将自定义算法的信息录入到算法配置表后,这样在管理平台配置检查与修复规则时,就可以选择到用户的自定义算法;在检测与修复引擎启动时,检查与修复算法加载组件将会加载用户自定义的检查与修复算法,并将其装配到检查与修复组件中。
作为本发明的一种优选技术方案,所述检查与修复引擎提供了启动与停止脚本,用于启动或停止引擎;所述检查与修复组件,在接收到数据接收组件传递过来的数据后,先根据上报数据中的业务标识与数据结构进行匹配,然后再根据数据结构关联的检查与修复规则,匹配到要执行检查与修复规则;进行匹配时分以下情况判断:第一种情况,未匹配到数据结构,则不进行任何处理,直接将数据发送给结果输出组件,进行结果输出;第二种情况,匹配到数据结构,但未匹配到检查与修复规则,不进行任何处理,直接将数据发送给结果输出组件,进行结果输出;第三种情况,匹配到规则,判断数据中的“上报数据实体标识”是否在检查与修复规则的“匹配值配置”的设定中:如果不在“匹配值配置”的设定中则不对数据执行此条检查与修复规则,直接将数据发送给结果输出组件,进行结果输出;如果在修复规则的“匹配值配置”的设定中,则进行检测与修复算法的执行;执行检查与修复算法时,当算法需要结合历史数据进行计算时,检查与修复组件会将上报数据存入缓存数据库中,当缓存的数据条数满足修复规则要求时,执行修复算法,进行结果输出;所述缓存数据库是redis;所述数据接收组件消费线程睡眠时长是3秒;所述数据持久化模块有实时入库线程和周期入库线程两种类型的工作线程,是并行执行的,数据持久化模块支持配置数据入库线程启动数,支持配置批量处理的数据条数或周期提交时间执行一次入库操作;数据持久化模块支持将数据持久化到多种类型的数据库中;数据结构与规则加载组件中的周期时间为30秒;报告生成与通知任务组件周期时间为60秒。
作为本发明的一种优选技术方案,所述数据持久化模块,执行一次入库操作数据条数设为1000、周期提交时间设为20秒,如果20秒内入库数据没有达到1000条,则数据由周期线程执行入库操作,如果在20秒内入库数据达到1000条则由实时入库线程执行入库操作;支持关系型数据、NoSql数据库、MPP数据库、时序数据库等多种类型的数据库,其中关系型数据库支持: MySql、PostgreSql、Oracle、SqlServer;NoSql数据库支持:HBase、Mongo;MPP数据库支持:GreenPlum;时序数据库支持:涛思时序库;
作为本发明的一种优选技术方案,数据源是检查与修复引擎处理的数据的来源,数据来源包含两类,一类是物联网终端网关,通过物联网协议接收或采集物联网终端传感器的数据,数据的采集和接收通常是按一定频率周期性进行的,不同类型的终端传感器的采集周期不同,物联网网关采集或接收到数据后即通过调用消息队列提供的客户端的SDK,将数据上传到消息队列中;另一类是软件业务系统,通过调用消息队列提供的客户端的SDK,将检测数据上传到消息队列中,数据源上报的数据是结构化的,支持通过JSON格式进行上报。有益效果:本发明基于行业标准、行业经验并结合历史数据分析,实时的对物联网终端及软件系统产生的数据的各类数据质量问题的识别、度量、修复,以提高数据质量和数据可用性,以java进程方式部署,更轻量级;以规则配置的方式,支持检测与修复算法多样,更灵活易用;用户根据指定的算法配置,结合历史数据分析,实时的对数据进行检查与修复,做到即发现即解决,从而为业务创新提供可靠的数据支撑,更节省计算资源,提高资源利用率。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:
图1是本发明的系统结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例
如图1所示,本发明实时数据质量检查及修复系统,包括消息队列、管理平台、检查与修复引擎;
数据源是检查与修复引擎处理的数据的来源,是消息队列“生产者”和“消费者”模式中“生产者”的角色。数据来源包含两类,一类是物联网终端网关,一类是软件业务系统,如水质检测系统。
消息队列通常是按照“生产者”和“消费者”的模式进行工作,把数据放入消息队列的叫做“生产者”,从消息队列里边取数据叫做“消费者”。“生产者”和“消费者”可以通过调用消息队列的客户端SDK程序,配置相应的IP和端口即可和消息队列进行数据传输。充分利用了消队列组件的高性能,高可用,可伸缩和最终一致性架构。本发明支持的消息队列有Kafka、RabbitMQ、RocketMQ、ActiveMQ,可以根据实际业务需要选择其中任意一种,本发明最优选择推荐使用Kafka消息队列。
管理平台是包括数据结构管理、检查与修复规则管理、报告规则管理、报告查看与下载、检查结果查询、人员管理等功能,是基于目前业界流行Spring Boot+Mybatis框架实现的web管理系统。
数据结构管理功能包括对数据结构的创建、修改、删除、查询、详细信息查看等功能。数据结构是数据源上报的数据的结构体的描述信息,数据结构配置时需与数据源上报的数据的结构体一致,创建数据结构输入包含:数据结构名称、业务标识、数据字段、描述信息。数据结构名称是给配置的数据结构定义个名称,为方便用户对数据结构进行管理,数据结构名称支持输入中文、英文、数字或下划线,输入其他内容将无法通过校验并进行报错提示,且无法保存;业务标识是该数据结构对应的上报的数据的类型,需要与数据源实际上报数据中的业务标识一致,业务标识支持输入英文、数字或下划线且必须以英文字母为开头,输入其他内容将无法通过校验并进行报错提示,业务标识配置后不能修改,数据字段是对数据源上报数据的数据项的配置,支持配置一项或者多项,根据实际上报的数据内容进行匹配录入,在同一业务标识下,可配置多个数据字段,不允许为空,如果为空无法保存并进行报错提示。数据字段是以树形进行维护的,业务标识为树的根节点,在根节点上右键可以添加数据字段、修改数据字段、删除数据字段,以及数据字段信息查看,实现对数据字段的维护。点击添加数据字段功能会弹出数据字段添加的对话框,添加数据字段,需要输入字段中文名称、字段英文名称、字段数据类型,其中数据类型为下拉选项,支持选择数值型、文本型、布尔型、时间型、对象型,选中已添加的数据字段,可以右键对添加的字段信息进行修改和删除操作,根节点不支持修改和删除操作;描述信息,用户可以对数据结构添加描述信息,对数据结构内容进行说明,方便管理,此字段为选填,可空。关联维度信息配置是在数据结构创建完成后,再进行配置,数据源上报数据的维度表需要提前配置到数据库中,维度表内的维度信息包括维度字段,配置数据结构关联维度信息需要输入关联关系名称、数据字段、维度表、维度字段,关联关系名称,是对关联联系的简短描述,为方便用户对关联关系进行管理,关联关系名称支持输入中文、英文、数字或下划线;数据字段是通过下拉选项选择,选项内容为数据结构配置中已添加的数据字段;维度表是通过下拉选项选择,选项内容是数据上报实体的维度表的表名;维度字段是通过下拉选项选择,选项内容是选维度表内的字段内容,当选择关联的维度表后,维度字段的下拉选项自动匹配所选择的维度表内的维度字段内容,维度,指人们观察事物的角度,是指一种视角,是确定事物的多方位、多角度、多层次的条件和概念。此处配置的维度信息内容是选择配置在数据库中的数据源上报数据实体的维度信息,维度信息支持多级关联。例如物联网终端网关作为上报数据的数据源,那么物联网设备就是数据上报的实体,此时如设备的生产厂商、设备型号等信息就是设备的维度信息。维度信息支持多级维度关联,例如不同的设备厂商又有不同的生产工艺段,那么生产工艺段与物联网设备之间就是通过设备厂商间接关联的,这种间接的关联关系称为维度的多级关联。在配置关联维度信息前需将维度数据录入到业务数据库中。
举例说明:以物联网终端网关作为上报数据源,上报水表数据为例,水表类设备的业务标识为“waterMeter”,水表类设备的支持上报的数据内容有“水表读数”,“数据上报时间”,上报数据实体标识为“水表设备编码”。
用户首先需根据水表上报的数据内容在结果存储数据库中建立数据结果表,用于存储检查与修复引擎处理后的数据,数据结果表的名称要与上报数据的业务标识一致,数据结果表的字段名称要与设备上报数据内容的字段名称一致,在上报数据内容字段的基础上为每个数据字段增加数据异常标记字段、修复结果字段、数据修复标记字段。
然后再根据水表上报的数据内容在数据结构管理功能中配置水表数据的数据结构信息,输入数据结构名称为:水表数据结构,输入业务标识为:waterMeter,配置数据字段,在“waterMeter”的根节点下添加“设备编码”字段和“数据内容”字段,然后再在“数据内容”字段下添加“水表读数”,“上报时间”,两个数据字段,字段类型分别选择数值型、时间型,配置完成后保存数据结构信息。
数据结构配置完成后进行数据结构关联维度信息的配置,在配置关联维度信息前需先将维度数据录入管理平台的业务数据中,在将维度数据录入后,还需要将存储维度数据的表信息录入到维度信息配置表和维度表字段信息表中。如水表设备有关联厂商维度信息,在管理平台的业务数据库中的维度数据表应该包括两张分别是设备数据表、设备厂商维度数据表。设备数据表中记录了所有上报数据的水表设备信息,每条设备信息中包括:设备唯一编码,即上报数据实体的标识、设备名称、设备厂商编码,即设备厂商维度数据表中厂商的唯一编码;设备厂商维度数据表中记录了水表设备的所有厂商的信息,包括:设备厂商唯一编码,设备厂商的名称。维度信息配置表用于记录已经录入业务系统中的维度数据表,表中包括:主键,即维度数据表的标识,由数据库自动生成、维度数据表英文名称、维度数据表中文名称。在上述例中,设备数据表、设备厂商维度数据表,应将上述两张维度表的信息录入到维度信息配置表, 维度表字段信息表用于记录维度数据表中,维度表字段信息表中包括:主键,即字段的唯一标识,由数据库自动生成,字段所属维度信息配置表的主键、字段的英文名称、字段的中文名称。
以水表设备为例配置的关联关系,输入关联关系名称:水表设备关联维度,选择的数据字段在数据结构中添加的“设备编码”字段,选择关联维度表为“设备数据表”,选择关联字段为“设备数据表”的“设备唯一编码”。
经过以上配置后,在配置检查与修复规则的“匹配值配置”时,就可以通过数据结构关联的数据维度表,关联出上报数据实体,作为检查与修复规则要生效的数据实体,如选择厂商维度表中的某个厂商,则当前配置的检查与修复规则只对选择的厂商下的设备上报的数据进行检查;在检查与修复引擎对上报数据执行过检查与修复后就会根据上报数据中的业务标识,将处理后的数据存入结果存储数据库中名称与业务标识一致的结果数据表中。
检查与修复规则管理功能包括检查与修复规则的创建、修改、删除、查询、列表展示及详细信息查看。创建检查与修复规则创建内容包含:规则名称、数据结构、匹配值配置以及算法配置。规则名称支持输入中文、英文、数字或下划线,输入其他内容将无法通过校验,并显示报错提示信息;数据结构是通过下拉选项选择,可以选择已经在数据结构配置中配置好的数据结构;匹配值配置,用于选择检查与修复规则的执行对象,在选定数据结构后,点击“匹配值配置”的添加下拉选项,就可以选择与数据结构具有关联关系的维度表,在选择关联的维度表后,维度表的下方出现输入域,点击输入域,弹出维度数据选择界面,进行选择,选项内容对应显示已选定的关联关系的维度表中的维度数据,做为此检查与修复规则要执行的对象;如选择厂商维度表中的某个厂商,则当前配置的检查与修复规则只对选择的厂商下的设备上报的数据进行检查;算法配置,点击“添加算法”,弹出算法添加对话框,算法添加对话输入包括:字段、检查算法、修复算法,字段为数据结构中定义的数据字段;检查算法可以用户自行配置,也可以从系统配置好的算法中选择;修复算法可以用户自行配置,也可以从系统配置好的算法中选择;系统支持的检查算法和修复算法是在业务数据库中的算法配置表提前配置好的,如果用户开发了自定义算法,在算法开发完毕后,也需将算法信息配置到算法配置表中,并将自定义算法的实现工程jar包放到检查与修复引擎的根目录,否则检查与修复引擎执行自定义算法将会失败。
下拉选项内容包括:常量表达式 、连续重复值、负值、极大值、Groovy、最大值、最小值、平均值、标准差、四分位差;修复算法下拉选项内容包括:根据上一条、固定值、中位数、移动平均数 、指数平滑、Groovy、随机数。检测算法与修复算法的配置成对出现的,添加一种检查算法可以配置一个或者不配置修复算法,数据结构中的同一个字段支持配置多个检查算法,当一个检查与修复规则中同一个字段配置多个检查算法或者不同规则配置配置的数据结构字段是相同的,则当数据再第一次被修复过后就不再执行其他的检查与修复算法。
报告规则管理功能包括报告规则的创建、修改、删除、查询、列表展示以及详细信息查看。报告规则的作用是在检查与修复引擎对数据执行检查与修复后,对检查与修复后的数据结果进行周期统计和检查结果通知的一种策略的定义。创建报告规则输入包括:报告规则名称、生成报告周期、数据结构、通知阈值、通知级别、通知人员、通知方式。报告规则名称支持输入中文、英文、数字或下划线,输入其他内容将无法通过校验;生成报告周期支持输入crontab表达式,crontab表达式是一种定时任务执行时间的表达方式,包含六个参数,从左向右依次为秒,输入值范围(1-59)、分,输入值范围(1-59)、小时,输入值范围(1-23)、日,输入值范围(1-31)、月,输入值范围(1-12)、星期,输入值范围(1-7),可以设置多个执行时间,相邻两个执行时间构成一个报告周期,也可以设置以当前时间为开始的固定时间的报告周期,本发明最优推荐按照每6小时执行周期进行报告生成配置;数据结构名称,是下拉选项,下拉选项的内容是用户已经在数据结构管理功能中配置好的数据结构名称。报告规则选择数据结构名称后,在检查与修复引擎执行报告规则,进行数据统计的时候会根据数据结构名称对应的业务标识找到对应结果存储数据库中的结果数据表,对数据进行统计;通知阈值,用于与报告统计结果中数据正确率做对比,当数据正确率低于设置的通知阈值时,则执行报告统计结果的发送,发送的内容包括:统计数据开始时间、统计数据结束时间、数据正确率、检查数、正确数、异常数、不准确数、修复数、修复率。通知阈值,可以填写1到100之间的数值,可以输入整数或小数;通知级别,是通过下拉选项选择,选项内容包括:预警、一般、严重、重要四个级别,代表了数据产生异常状态的严重程度,通知级别的严重程度信息可以引起用户的关注。通知人员,是指要接收报告通知的人员。通知人员支持配置多个,支持手动输入和下拉选项两种方式进行设置。如果采用下拉选的方式要求用户在配置通知人员前,在管理平台的人员管理功能中将人员的信息录入到管理平台中,如果选用手动输入的方式,需输入人员名称外,还需要根据选定的通知方式,填写具体的通知方式地址信息;通知方式,是复选框,支持多种通知方式同时通知,通知方式支持包括:邮件、短信、钉钉、微信、云之家,可以同时勾选邮件和钉钉,当统计结果的数据正确率低于设定的通知阈值时,则会通过邮件和钉钉两种方式对配置的通知人员进行通知,如果没有配置通知方式,则无法进行通知;
报告查看与下载,报告规则配置完成后,检查与修复引擎的报告生成与通知任务组件就会按照报告规则配置的报告生成周期,周期性的对结果存储数据库中与数据结构的业务标识相同名称的数据结果表进行数据统计,每个周期统计任务运行结束后,将统计的结果信息存储到业务数据库的报告信息表中。由于报告规则是周期运行的,所以一个报告规则会产生多条统计报告。报告查看页面以列表的形式对报告进行展示,支持按统计时间、报告名称对报告信息进行过滤筛选,报告列表展示内容包括:报告名称、数据正确率、任务开始时间、任务结束时间、任务执行时长。报告名称由报告规则名称与报告执行统计的开始时间组成,例如:报告规则名称为“报告规则”,报告规则执行的开始时间是“2022年10月10日9时58分0秒”则生成的报告名称为“报告规则-2022-10-10-09-58-00”;数据正确率是一个比值,是该报告规则统计周期内,报告规则统计出的检查与修复结果的总记录数与正确数的比值,计算的公式为:数据正确率=(检查条数-异常条数)/ 检查条数 X 100%;任务开始时间为报告规则单个周期任务执行的开始时间;任务结束时间为报告规则单个周期任务执行的结束时间;任务执行时长为报告规则单个周期执行的任务执行的时长,单位为秒。
用户点击报告列表中报告名称显示统计报告页面统计报告页面展示内容包括:数据结构、检查规则、统计数据开始时间、统计数据结束时间、数据正确率、检查数、正确数、异常数、不准确数、修复数、修复率以及明细下载连接。数据结构,表示当前报告是对那类数据进行的统计,此处的数据结构就是配置检查与修复规则时选择的数据结构;检查规则,表示当前报告展示的是那个检测与修复规则检查与修复的结果;统计数据开始时间、统计数据结束时间表示当前报告统计数据的时间范围;数据正确率,统计报告页面展示的数据正确率与报告列表中展示的数据正确率是同一个值;检查数表示统计时间周期内总共检查的数据量;正确数显示的是统计时间周期内检查结果正常的数据条数;异常数显示的是统计时间周期内检查结果异常的数据条数;不准确数与异常数相同;修复数显示的是统计时间周期内检查结果为异常,已经有被修复算法修复的数据条数;修复率是修复数据占异常数的一个比值,计算的公式为:修复率=修复数/异常数*100%;用户点击报告详情页面的明细下载连接后,会以Execl表格的形式将本条报告对应的统计数据开始时间,统计数据结束时间内的经过检查与修复后的明细数据下载到用户自己的计算机上。Execl文件内容包括:数据上报时间、上报数据业务标识、上报数据内容、各字段的检查算法标识、各字段的修复算法标识。
检查结果查询以更灵活的方式为用户提供了检查结果明细查询的功能,用户可以用通过检查结果查询,根据特定的过滤条件查询自己想要看到特定范围的检查与修复后数据,以便分析问题。检查结果查询支持以下查询条件进行筛选:数据结构名称、数据查询开始时间、数据查询结束时间、结果类型、数据字段、字段值过滤表达式。数据结构名称,是下拉选项,选项内容为用户在数据结构管理功能中配置的数据结构名称,因为数据结构的业务标识与结果存储数据库中的结果数据表名一致,选择了数据结构名称也就是选择了要查询哪类数据,如要查询上例中水表设备的检查结果,此处选择“水表数据结构”即可;数据查询开始时间与数据查询结束时间是要查询结果数据表中上报数据的时间范围,数据查询结束时间不能早于数据查询开始时间且不能晚于当前时间,数据查询开始时间与数据查询结束时间的时间跨度不能超过N个月,本发明最优推荐N为3,即查询时间的跨度不超过三个月;结果类型是下拉选项,是对数据结果表中检查与修复结果状态进行过滤的选项,通过结果类型的选择可以实现对检查结果数据状态的过滤。结果类型包含:全部、检查异常、检查正常、未修复、已修复,当选择全部时则不对数据结果进行区分,默认为全部;数据字段,是下拉选项,展示的内容为数据结构中定义的数据字段,数据字段名称与结果存储数据库中的结果数据表字段名是相同的,选择了数据字段后也就是要对数据结果表中的某个字段的结果值进行过滤。字段值过滤表达式,是对数据过滤条件的配置,相当于SQL语句中的Where条件。以查询水表设备检查结果为例,数据结构选择为“水表数据结构”,数据字段选择为“水表读数”,选择数据查询开始时间与数据查询结束时间,在 字段值过滤表达式 中输入水表读数 > 200,则代表要查询指定时间范围内所有水表读数大于200的数据。检查结果页面配置的参数,数据结构、开始时间、结束时间、结果类型为必填,数据字段和查询条件可选填。
人员管理功能包括人员添加、修改、删除、查询、列表展示以及详细信息查看等功能。添加人员信息输入包括:人员姓名、人员电话、人员邮箱地址、人员微信号、人员的钉钉号、人员的云之家账号等;人员姓名支持输入中文、英文,输入其他内容将无法通过校验并进行错误提示;人员电话值允许输入手机号,输入其他内容将无法通过校验并进行错误提示;人员邮箱地址,需符合邮件地址的格式,输入其他内容将无法通过校验并进行错误提示;人员电话、人员邮箱地址、人员微信号、人员的钉钉号、人员的云之家账号都为非必填项,但至少要填写一项。
检查与修复引擎是基于java语言,采用Spring Boot开发框架研发的一套软件系统,是本发明对数据进行处理,执行检查与修复算法业务的核心。Spring Boot是由Pivotal团队提供的全新开源程序开发框架,可以简化程序初始搭建以及开发过程。检查与修复引擎使用了java多线程的技术并结合消息队列多分区与消费者可不重复消费数据的特性,实现了数据的高性能的处理。基于以上实现技术以及特性,检查与修复引擎具有高并发,高吞吐,可扩展的特性。
检查与修复引擎用于通过消息队列读取数据源上报的数据,然后在根据通过管理平台设定的检查与修复规则对上报数据执行检查与修复处理,并最终将检查与修复后的数据写入到结果存储数据库中,以及根据管理平台设置的报告规则,对结果存储数据库中的数据进行周期性的统计,并生成统计报告,以用于对数据质量情况进行分析。检查与修复引擎在启动时首先会加载自身配置文件,配置文件中包含业务数据库的连接信息、消息队列的连接信息、缓存数据库的连接信息以及数据结构与规则加载组件、报告生成与通知任务组件执行加载数据的周期等配置信息,配置信息加载完成后,与业务数据库建立连接,并通过数据结构与规则加载组件读取业务数据库中的检查与修复规则、数据结构信息,将数据加载到检查与修复引擎的运行内存中,以便在接收到数据源上报数据后,进行检查与修复规则的匹配以及执行检查与修复规则的数据处理逻辑,将检查与修复规则信息和数据结构都加载到检查与修复引擎的运行内存中可以提高数据处理性能。数据结构与规则的数据加载完成后, 根据消息队列的连接信息,与消息队列建立连接,并开始消费“数据接收队列”中的数据,接收到数据后,检查与修复引擎收先会对上报数据的数据字段进行扩展,每个数据字段都会增加数据异常标记字段、修复结果字段、数据修复标记字段。数据异常标记字段用于记录该字段执行检查算法后,将该字段检查为异常数据的算法的标记值,默认为0,代表未执行检查算法;修复结果字段,用于记录该字段被检查为异常后,执行修复算法,对该字段进行修复的结果值。如果未经过修复,则该字段存储与原字段的值相同;数据修复标记字段,用于记录该字段被检查为异常后,执行修复算法,对该字段进行修复的算法的标记值,默认为0,代表未经过修复。数据字段扩展完后,根据上报数据中的业务标识与数据结果进行匹配,然后根据数据结构关联的检查与修复规则,匹配到要执行检查与修复规则。如果未匹配到数据结构,则不进行任何处理,直接将数据发送给结果输出组件,进行结果输出,如果匹配到数据结构,但未匹到配检查与修复规则,同样不进行任何处理,直接将数据发送给结果输出组件,进行结果输出。如果匹配到规则,则对匹配的规则进行遍历,逐条判断数据中的“上报数据实体标识”是否在检查与修复规则的“匹配值配置”的结果中,如果不在“匹配值配置”的结果中则不对数据执行此条检查与修复规则,直接将数据发送给结果输出组件,进行结果输出。如果在修复规则的“匹配值配置”的结果中,则进行检测与修复算法的执行。本发明支持检查算法包括:常量表达式 、连续重复值、负值、极大值、检查Groovy、最大值、最小值、平均值、标准差、四分位差;修复算法包括:根据上一条、固定值、中位数、移动平均数 、指数平滑、修复Groovy、随机数。检查与修复算法具体说明如下:
检查算法说明:
负值,针对上报数据应为线性增长类的数据的场景,如水表读数,正常的水表的最新一条读数都应该大于或等上一条读数,如果最新的读数小于上一条读数,则认为是异常。该检查算法不需要配置数据参数,检查与修复组件会对配置了负值检查算法的字段自动记录上一次正确读数(如果被检查为异常的数据,则不会被记录),并将当前处理的数据与上一次正确读数对比,如果当前处理的数据小于上一次上报读数时,则将本次读数标记为异常,将数据异常标记字段的检查类型标识标识为-4。
极大值,针对数据具有极限值的场景,例如类似水表、流量计,受设备自身口径的限制,上报读数是不能超过一定范围的,如果上报读数超过此范围,则认为是异常数据,将数据异常标记字段的检查类型标识标识为 -5。
检查Groovy,针对使用者具备一定编程基础的使用者,可以输入一段Groovy的脚本函数,函数的输入参数为本条数据与上一条数据,用户自定义判断逻辑,Groovy处理结果需返回true或false,当结果为true时,则认为是异常数据,将数据异常标记字段的检查类型标识标识为 -6。
最大值、最小值、平均值:针对简单计算场景,将数据与指定范围内历史数据产生的最大值、最小值、平均值做比较。该检查算法需指定历史数据缓存的范围和比较方式。指定范围的方式包括按次数、按时间范围,数据检查与修复组件会将符合算法配置范围内的数据自动存入缓存数据库中,如用户指定按次,记录10次,则会在算法数据库中缓存最近10条,数据上报实体对应字段的10条读数。比较方式支持大于、小于、等于、大于等于、小于等于。产生异常数据时,数据异常标记字段的检查类型标识分别为 -7、-8、-9(分别对应什么)。
标准差、四分位差,针对离群数据的检查方法。将数据与指定范围内历史数据产生的标准差与四分位差做比较,标准差支持输入倍数,即当数据数据超过几倍的标准差值时标记为异常。该检查算法需指定历史数据缓存的范围和比较方式。指定范围的方式包括按次数、按时间范围,数据检查与修复组件会将符合算法配置范围内的数据自动存入缓存数据库中,如用户指定按次,记录10次,则会在算法数据库中缓存最近10条,数据上报实体对应字段的10条读数。比较方式包括区间外、区间内。产生异常数据时,数据异常标记字段的检查类型标识分别为 -10、-11。
常量表达式,该检查算法的输入参数为固定的表达式,如: 7 > PH || PH > 14。表达式支持输入“&&”与符号,即当两边等式都成立时,表达式才成立;“||”或符号,即两边等式有一个成立时,即表达式成立。
连续重复值,针对数据变动比较频繁的场景,当处理的数据为连读多次获者一个周期内上报的值一直未发生变化,则认为是异常。该检查算法需指定历史数据缓存的范围和比较方式。指定范围的方式包括按次数、按时间范围,数据检查与修复组件会将符合算法配置范围内的数据自动存入缓存数据库中,如按次数配置为10,则在数据连续上报相同数据的低11次将数据标记为异常数据,比如流量计传感器上报的累计流量数据。产生异常数据时,数据异常标记字段的检查类型标识为-13。
修复算法说明:
固定值,将固定输入的数据做为异常数据修复数据。该修复算法需输入的参数为固定值。当检测的数据为异常数据时,使用此算法修复,将设定的固定值参数作为本次修复的数据存入检测异常字段的修复值字段,并将数据修复标记字段标识为1。
根据上一条,将上一次读数做为本次异常数据修复数据。不需要配置参数,检查与修复组件会自动记录上一次读数。当检测的数据为异常数据时,使用此算法修复,将上一次读数作为本次修复的数据存入检测异常字段的修复值字段,并将数据修复标记字段标识为2。
中位数,将指定范围内历史数据计算产生中位数,做为异常数据的修复数据。中位数修复算法输入的参数为:历史数据范围,指定范围的方式包括按次数、按时间范围。检查与修复组件会将符合中位数算法周期内的数据存入数据缓存中,以便用于计算产生中位数结果。如用户指定按次,记录10次,则会在算法数据库中缓存最近10条,数据上报实体对应字段的10条读数。检查的异常数据修复时,将计算后中位数作为本次修复的数据存入检测异常字段的修复值字段,并将数据修复标记字段标识为4。
移动平均数,将指定范围内历史数据计算产生移动平均数,做为异常数据的修复数据。移动平均数的修复算法输入的参数为:历史数据范围,指定范围的方式包括按次数、按时间范围。检查与修复组件会将符合移动平均算法周期内的数据存入数据缓存中,以便用于计算产生移动平均数结果。检查的异常数据修复时,将计算后的移动平均数作为本次修复的数据存入检测异常字段的修复值字段,并将数据修复标记字段标识为5。
指数平滑,将指定范围内历史数据计算产生指数平滑结果,做为异常数据的修复数据。指数平滑算法输入的参数为:历史数据范围,指定范围的方式包括按次数、按时间范围、指数平滑的系数。检查与修复组件会将符合指数平滑法周期内的数据存入数据缓存中,以便用于计算产生指数平滑结果。检查的异常数据修复时,将计算结果作为本次修复的数据存入检测异常字段的修复值字段,并将数据修复标记字段标识为6。
修复Groovy,针对使用者具备一定编程基础的使用者,可以输入一段Groovy的脚本函数,函数的输入参数为本次读数与上一次读数,用户自定义修复逻辑,函数的返回值应为一个读数。检查的异常数据修复时,将函数的返回值作为本次修复的数据存入检测异常字段的修复值字段,并将数据修复标记字段标识为7。
随机数,系统根据配置参数产生随机数做为修复数据。输入参数包括最大值、最小值、小数位数,最大值,表示产生的随机数不能大于此数;最小值表示产生的随机数不能小于此数;小数位表示随机数的精度即保留几位小数,当小数位数为0时,则产生整数。检查的异常数据修复时,将随机数作为本次修复的数据存入检测异常字段的修复值字段,并将数据修复标记字段标识为8。
检查与修复引擎启动后,在配置信息加载完成后,与业务数据库建立连接,引擎中的报告生成与通知任务组件会加载业务数据库中配置的报告规则,再根据报告规则的配置时间表达式,动态创建周期任务,每个周期任务都是一个单独的java线程,线程是cpu调度和分派的基本单位,他是比进程更小的能够独立运行的基本单位。每个报告规则会对应一个线程,各个线程间不相互影响,独立执行。对检查结果进行的统计,并生成检查报告,检查报告生成后,将检查结果值与报告规则配置的通知阈值进行比较,当检测结果值低于通知阈值时,根据配置的通知人员及通知方式发送通知,同时将检查报告的结果存入业务数据库的报告信息表中。
检查与修复引擎包括:数据接收组件、检查与修复组件、结果输出组件、数据结构与规则加载组件、算法加载组件、数据持久化模块、报告生成与通知任务组件、结果存储数据库、缓存数据库;
数据接收组件使用java语言实现了对消息队列的SDK进行了封装,实现了多种类型的消息队列的“消费者”功能,用于消费“数据接收队列”中的数据。检查与修复引擎在启动的过程中会加载配置文件,配置文件可以配置消息队列的类型、连接信息、消费方式,数据接收组件根据配置文件中配置的消息队列连接信息,与消息队列建立连接,并实时持续的消费消息队列中的数据,接收到数据后,会调用检查与修复组件的数据接收接口,将数据传递给检查与修复组件进行数据的检查与修复处理;当数据接收组件接收不到数据时,会将消费线程睡眠3秒,具体睡眠时间,可以通过配置文件中的配置参数修改,睡眠3秒后再次消费消息队列中的数据,数据接收组件会记录消费数据记录的条数。数据接收组件连接不同的消息队列时,消费方式是不同的,根据选择的消息队列类型不同进行消费方式的配置。当消息队列选择Kafka时,支持配置两种消费模式,可以指定其中任意一种,一是从指定日期开始消费,二是按偏移量(earliest、lastest)位置消费。earliest表示从消息队列的最早的一条消息开始消费,lastest表示从上次消费停止的位置开始消费,如消息队列中有10条数据,数据接收组件已经消费到第5条,这时停止检查与修复引擎,当检测与修复引擎下次启动时,如果消费方式配置的是earliest,则会从第1条数据开始消费,如果消费方式配置的是lastest,则会从第6条数据开始消费。当消息队列选择RabbitMQ、RocketMQ、ActiveMQ的时候,仅支持按照lastest的方式进行数据消费。
检查与修复组件用于执行用户配置的检查与修复规则,执行规则后,根据规则的配置信息对异常数据进行标识与修复。在接收到数据后,先根据上报数据中的业务标识与数据结构进行匹配,再根据数据结构关联的检查与修复规则,匹配到要执行检查与修复规则;进行匹配时分以下情况判断:第一种情况,未匹配到数据结构,则不进行任何处理,直接将数据发送给结果输出组件,进行结果输出;第二种情况,匹配到数据结构,但未匹配到检查与修复规则,不进行任何处理,直接将数据发送给结果输出组件,进行结果输出;第三种情况,匹配到规则,判断数据中的“上报数据实体标识”是否在检查与修复规则的“匹配值配置”的设定中,如果不在“匹配值配置”的设定中则不对数据执行此条检查与修复规则,直接将数据发送给结果输出组件,进行结果输出;如果在修复规则的“匹配值配置”的设定中,则进行检测与修复算法的执行;执行检查与修复算法时,当算法需要结合历史数据进行计算时,检查与修复组件会将上报数据存入缓存数据库中,当缓存的数据条数满足修复规则要求时,执行修复算法,进行结果输出;
需要结合历史数据计算的检查算法有:连续重复值、最大值、最小值、平均值、标准差、四分位差,需要结合历史数据计算修复算法有中位数、移动平均数 、指数平滑。
以水表数据为例,如对水表读数字段设置了平均值检查算法,算法配置历史数据缓存的周期为按次,频次为5,检查与修复组件在对水表数据执行平均值检查算法时,当第1次接收到水表读数时,因为缓存数据库中还没有缓存历史数据,检查算法并不会执行,检查与修复组件会将本次读数存入缓存数据库,直到水表第6次上报数据,此时缓存数据库中已经记录了5条历史数据,才会进行平均值检查算法的执行。检查与修复组件会根据算法配置历史数据缓存参数对缓存数据库中的数据进行维护,如上述实例中配置的缓存周期次数为5,在第6次接收到数据后,在检查算法执行后,检查与修复组件会删除第1条缓存的数据,同时将第6条接收的数据记录到缓存数据中。当检查与修复规则中存在一个字段配置多个检查算法或者匹配到的多个规则存在相同字段的多个检查算法的时候,当该字段值被检查为异常,但是没有被修复,则后续的检查算法会继续执行检查,当该字段值被检查为异常,并且被修复算法修复后,则后面的检查算法就不再继续执行,以避免数据重复修复。当依据检查算法检验出异常数据后,会在数据异常标记字段标记出检查算法的编码,检查无异常的数据则不进行处理,数据异常标记字段值为0。只有当数据检查为异常且配置了修复规则的情况下,才会对异常数据执行修复算法,修复算法执行后,计算出的正确结果将会被记录到修复结果字段中,并在数据修复标记字段标记出修复算法的编码。
检查与修复引擎采用redis作为缓存数据库,数据处理完成后,调用结果输出组件,将处理后数据发送到“检查与修复结果队列”中。
结果输出组件使用java语言对消息队列的SDK进行了封装,实现了消息队列的“生产者”功能,结果输出组件不对数据做任何处理,在接收到检查与修复组件传递的处理后的数据后,直接将检查与修复后的数据或未匹配到检查与修复后的数据,输出到消息队列的检查与修复结果消息队列中;
数据持久化模块,是一个单独的java进程,对消息队列的SDK进行了封装,实现了多种类型消息队列的“消费者”功能,数据持久化模块与消息队列建立连接后,会持续的消费“检查与修复结果队列”中检查与修复后的数据,将数据存入检查结果数据库中。数据持久化模块有实时入库线程和周期入库线程两种类型的数据入库工作线程,这两种线程是并行执行的,但不会重复执行相同的数据。例如:实时入库线程配置数据入库的条数为1000,则代表每1000条数据会执行一次入库操作,周期入库线程的数据是按照配置的数据处理时间来执行的,入配置的处理时间配置为20秒,则代表每隔20秒周期入库线程会执行一次入库操作,采用先满足条件的线程先执行的策略,即如果20秒内入库数据没有达到1000条,则数据由周期线程执行入库操作,如果在20秒内入库数据达到1000条则由实时入库线程执行入库操作。数据持久化模块支持配置数据入库线程启动数,支持配置批量处理的数据条数,以及周期提交时间,以提高数据处理的性能。数据持久化模块支持将数据持久化到多种类型的数据库中,支持关系型数据、NoSql数据库、MPP数据库、时序数据库等多种类型的数据库,其中关系型数据库支持MySql、PostgreSql、Oracle、SqlServer,NoSql数据库支持HBase、Mongo,MPP数据库支持GreenPlum,时序数据库支持涛思时序库,可根据实际业务中选用的数据库类型进行配置;本发明最优选择推荐使用GreenPlum数据库或涛思时序库。在数据持久化组件将数据持久化到数据库之前,用户需在数据库中建立好对应的数据表,数据表的名称要与数据结构的业务标识一致,数据表的字段名称要与数据结构的字段名称一致,在数据字段的基础上增加数据异常标记字段、修复结果字段、数据修复标记字段。
算法加载组件,用于在检查与修复引擎启动的时候加载用户自定义的检查与修复算法,并将其装配到检查与修复组件,系统可提前定义好规则,用户设置时从已有算法中选择,也可以自定义检查与修复算法,以满足不同场景数据处理的需求。用户自定义算法,必须以java语言实现,实现工程需是maven工程,以pom的方式引入检查与修复引擎的算法接口jar包,jar包中包含了检查算法抽象类与修复算法抽象类。自定义检查算法实现类需继承jar包中检查算法抽象类,并实现抽象的检查方法。检查算法抽象类中的变量包括:检查算法英文名称、检查算法标识、检查算法缓存数据。检查算法英文名称,用户自定义的算法的名称,此名称用于记录到算法配置表的算法英文名字段,检查与修复引擎根据此名称将检查与修复规则配置的检查算法进行匹配。用户在实现自定义检查算法时必须给自定义算法定义名称,如果不定义名称,算法再加载时将会报错,并且算法将不会被装配到检查与修复组件中;检查算法标识,用于当自定义检查算法检查出异常数据时,记录到数据的数据异常标记字段,检查算法标识不能与已有的算法标识重复。检查算法缓存数据,如果自定义算法需要基于历史数据进行计算,可通过算法缓存数据变量获取历史数据;抽象的检查方法,包括两个参数,当前处理的数据记录、上一次数据记录,自定义检查算法在实现抽象算法时可以基于以上两个参数实现数据逻辑的判断,自定义检查算法的返回值为Integer类型的值,返回0表示检查数据无异常,返回检查算法标识表示检查数据异常;自定义修复算法实现类需继承jar包中修复算法抽象类,并实现抽象的修复方法。修复算法抽象类中的变量包括:修复算法英文名称、修复算法标识、修复算法缓存数据。修复算法英文名称,用户自定义修复算法的名称,此名称用于记录到算法配置表的算法英文名字段,检查与修复引擎根据此名称将检查与修复规则配置的修复算法进行匹配。用户在实现自定义修复算法时必须给自定义修复算法定义名称,如果不定义名称,算法再加载时将会报错;修复算法标识,用于当自定义修复算法在对异常数据修复后,记录到数据的数据修复标记字段,修复算法标识不能与已有的修复算法标识重复。修复算法缓存数据,如果自定义修复算法需要基于历史数据进行计算,可通过修复算法缓存数据变量获取历史数据;修复算法的抽象方法,包括连个参数,当前上报数据记录、上一次正确数据记录,自定义修复算法在实现抽象算法时可以基于以上两个参数实现数据的判断逻辑,在计算出正确的结构后,需将修复值更新到当前上报数据记录的修复结果字段。在自定义算法开发完成后,将maven工程打包成jar包,在检测与修复引擎启动前,将jar包放在检测与修复引擎的根目录下,将算法信息配置到所述业务数据库中的算法配置表中,配置内容包括:算法的英文名称,中文名称,算法类型,是否需要缓存历史数据。英文名称需与自定义算法实现类中算法的英文名称变量的值一致,不能为空;中文名称为用户自定义,将会显示在检查与修复规则配置页面的算法选择下拉列表中,不能为空;算法类型,用于标识算法是检查算法还是修复算法;是否需要缓存历史数据,用于标识用户的自定义算法是否需要结合历史数据进行计算。将自定义算法的信息录入到算法配置表后,这样在管理平台配置检查与修复规则时,就可以选择到用户的自定义算法;在检测与修复引擎启动时,检查与修复算法加载组件将会加载用户自定义的检查与修复算法,并将其装配到检查与修复组件中。
数据结构与规则加载组件是一个单独周期任务线程类,随着检查与修复引擎的启动而运行,每隔一定时间会查询一次管理平台的业务数据库,间隔时间是系统提前设定好的,可通过引擎的配置文件进行配置,本发明最优推荐配置为30秒,将最新的数据结构和检查与修复规则更新到检查与修复引擎中,将最新的检查与修复规则应用到数据检查中。将数据结构和检查与修复规则的信息加载到引擎的运行内存中可以提高引擎处理数据的速度,上报数据执行检查与修复规则的算法逻辑都在引擎的运行内存中进行,减低引擎与业务数据库之间的交互,以提高引擎处理性能。
报告生成与通知任务组件,是每隔一定时间会查询一次管理平台的业务数据库,将最新的报告规则信息加载到检查与修复引擎的运行内存中,间隔时间最优推荐配置为60秒,报告生成与通知任务组件加载数据后会根据报告规则配置的“生成报告周期”动态创建周期任务,周期任务是一个单独的java线程,根据报告规则的配置信息执行数据统计,报告通知。每个报告规则会对应一个线程,各个线程间不相互影响,独立执行,对检查结果进行的统计。只有在检查与修复引擎启动的,报告生成与通知任务组件第一次加载数据时才会全部新建周期任务,后续再加载报告规则数据后,报告生成与通知任务组件判断当前的报告规则是否已启动了对应的周期任务,如果当前报告规则已经启动了周期任务,则将最新加载的报告配置信息更新到周期任务中,如果没有与当前报告规则对应的周期任务,才会创建新的周期任务。如果已经启动的周期任务对应的报告规则被删除,则会停止周期任务的执行,即销毁线程。周期任务运行后,根据报告规则信息中的数据结构获取“业务标识”,业务标识的名称与数据结果存储数据库的结果数据表名相同,再根据报告规则信息中“生成报告周期”计算统计数据的开始时间与结束时间,从而确定统计范围。周期任务线程根据确定的查询范围与结果数据表中的数据异常标记字段、数据修复标记字段,对结果数据进行统计查询,并将结果信息存入业务数据库的报告信息表中。报告信息入库后,周期任务会将报告规则中配置的通知阈值与检查结果进行比较,如果报告检查结果,低于报告规则中配置的通知阈值时,按照报告规则配置通知人员的通知方式发送报告通知。
业务数据库包括:数据结构表、检查与修复规则表、报告规则表、报告信息表、数据结构关联关系表、人员信息表、维度表、维度信息配置表、维度表字段信息表、算法配置表。算法配置表字段包括:数据的主键、算法英文名称、算法中文名称、算法类型、是否需要缓存历史数据,以上相关业务表需在检查与修复引擎执行数据处理前录入到业务表中。
缓存数据库,用于缓存需要结合历史数据进行计算的检查或修复算法所需的历史数据。
结果存储数据库,用于存储经过检查与修复引擎检查和修复后的数据。结果存储数据库中的每张数据结果表都对应着一个类型的上报数据,表名为上报数据的业务标识字段的值。
检查与修复引擎是一套基于java语言开发的程序,采用Spring Boot作为开发框架,是运行在计算机系统上的软件程序。检查与修复引擎提供了启动与停止脚本,方便用户在部署检查与修复引擎后,启动或停止引擎。检查与修复引擎有一个配置文件,用于记录与相关中间件的连接信息,包括有消息队列的连接信息、业务数据库的连接信息、缓存数据库的连接信息以及数据结构与规则加载组件、报告生成与通知任务组件执行任务周期配置信息、数据持久化组件数据入库的阈值数据。
系统启动过程:
将检查与修复引擎部署到计算机系统上后,根据实际部署信息调整配置文件中的各数据库与消息队列的连接信息。点击启动脚本,启动检查与修复引擎,算法加载组件执行自定义算法加载,如果用户开发了自定义算法,算法加载组件加载算法后将自定义算法装配到检查与修复组件,如果未加载到自定义算法,则不做任何处理。引擎读取配置文件中的信息,根据配置文件中业务数据库连接信息,与业务数据库建立连接,然后启动数据结构与规则加载组件将数据结构与规则信息加载检查与修复引擎的执行内存中,启动报告生成与通知任务组件,将报告规则信息加载到检查与修复组件的运行内存中,数据结构与规则加载组件、报告生成与通知任务组件启动后会按照配置文件中配置的周期时间,重复将配置的最新数据结构、检查与修复规则和报告规则数据更新到引擎运行内存中。调用数据接收组件与消息队列建立连接,消费数据,检查与修复组件根据数据检查与修复规则对数据进行处理,报告生成与通知任务组件根据报告规则,生成统计报告,并按配置发送报告通知。
数据检查与修复系统的工作原理:
1、检查与修复引擎运行所需基础数据配置:根据数据源上报数据的数据结构,在结果存储数据库创建结果数据表,结果数据表的表名与上报数据的业务标识相同,数据结果表的字段名称与数据内容的字段名称相同,并为每个字段增加数据异常标记字段、修复结果字段、数据修复标记字段。将维度数据录入管理平台的业务数据中,在将维度数据录入后,将存储维度数据的表信息录入到维度信息配置表和维度表字段信息表中。
2、配置数据结构和检查与修复规则:通过管理平台,创建数据结构,数据结构配置完成后,将数据结构信息存入业务数据库。通过管理平台,进行检查与修复规则的配置,选择已创建好的数据结构,选择要配置的数据字段,配置检查和修复算法。
3、加载自定义检查与修复算法:检查与修复引擎启动时,调用检查与修复算法加载组件,将用户自定义的检查与修复算法加载到检查与修复组件中,如果用户未配置自定义算法,则不做任何处理。
4、数据结构与规则加载组件:检查与修复引擎启动时,会启动数据结构与规则加载组件,数据结构与规则加载组件周期性的将数据结构和检查与修复规则的数据加载到检查与修复引擎的运行内存中,供检查与修复组件在处理数据时进行数据匹配。
5、数据源上报数据:数据源将产生的业务数据实时发送到消息队列的数据接收队列中。
6、数据接收组件消费数据:数据接收组件启动后与消息队列建立连接,并实时消费数据接收队列中的数据,当接收到数据后,调用检查与修复组件的数据接收接口,将数据传递给检查与修复组件进行数据的检查与修复处理。数据接收组件会记录消费数据记录的条数。
7、根据检查与修复规则进行数据检查与修复:数据接收组件消费到数据后,调用检查与修复组件的数据接收接口,将数据传递给检查与修复组件。检查与修复组件在接收到数据接收组件传递过来的数据后,根据上报数据中的业务标识与数据结果进行匹配,然后根据数据结构关联的检查与修复规则,匹配到要执行检查与修复规则。匹配到规则后,则对匹配的规则进行遍历,逐条判断数据中的“上报数据实体标识”是否在检查与修复规则的“匹配值配置”的设定结果中,如果不在“匹配值配置”的设定中则不对数据执行此条检查与修复规则,直接将数据发送给结果输出组件,进行结果输出。如果在修复规则的“匹配值配置”的设定中,则进行检测与修复算法的执行。
8、历史数据缓存和规则执行:当算法需要结合历史数据进行计算时,检查与修复组件会将上报数据存入缓存数据库。需要结合历史数据进行计算的算法只有当缓存数据库中缓存的数据满足算法执行的配置参数时,才会执行检查或修复算法,否则不会执行检查或修复算法。当依据检查算法被检验出异常的数据后,会在数据异常标记字段标记出检查算法的编码,检查无异常的数据则不进行处理,数据异常标记字段值为0。
9、结果输出组件输出数据:检查与修复组件执行完数据处理的逻辑后,调用结果输出组件接口,将处理后的数据发送到结果输出组件。结果输出组件将检查和修复后的数据发送到检查与修复结果消息队列中。
10、读取检查与修复后的数据:数据持久化模块是独立运行的java进程,启动后与消息队列建立连接,并实时不间断读取检查与修复结果队列中的数据。数据持久化模块读取到数据后,根据配置存储的结果数据库类型,将数据存入数据结果表中。
11、配置报告规则:数据存入结果存储数据后,用户可以通过管理平台配置报告规则,定期对检查结果进行统计,并生成检查报告。报告规则配置完成后,报告规则数据存入业务数据库的报告规则表。
12、检查与修复引擎加载报告规则数据:检查与修复引擎启动时,会启动报告生成与通知任务组件,报告生成与通知任务组件是一个周期任务线程。报告统计任务是根据报告规则中生成报告周期创建的周期任务线程,每个报告规则对应一个周期任务线程,每个周期任务线程按照报告规则配置信息对检查与修复后数据进行统计,并将统计结果存入业务数据库的报告信息表中,同时根据统计报告的数据正确率判断是否发送的报告通知,通知方式支持邮件、短信、钉钉、微信、云之家。
13、 报告查看与明细下载:用户可以通过报告查看与下载功能
查看报告规则产生的统计报告和对报告明细进行下载。报告查看内容为报告规则每个执行周期统计的结果。报告详细页面提供明细数据下载功能,可以查看统计周期内的所有明细数据,明细数据为结果存储数据库中对应数据结果表的数据。
14、检查结果查询:用户可以用通过检查结果查询功能,根据特定的过滤条件查询结果存储数据库中的结果数据表,查询特定范围的检查与修复后数据,以便分析问题。检查结果查询查询条件支持输入:数据结构名称、数据查询开始时间、数据查询结束时间、结果类型、数据字段、字段值过滤表达式,通过以上参数的配置,圈定要查询的数据类型和数据范围。
以超声波水表上报的数据为例,超声波水表的口径为DN25,上报周期为每天上报一次水表读数,水表上报读数的字段名称为reading,通过数据检查与修复系统对reading字段配置了“负值”的检查算法,没有配置修复算法,配置了“极大值”检查算法,和“根据上一条”的修复算法,如本次接收到的读数为0,上一次的读数为172474,本次读数小于上一次读数,此时会判断为“负值”的异常情况,由于数据检查与修复系统并没有配置修复算法,则只对异常数据进行标识,将异常类型字段 reading_error_type标识为-4;如水表的上一次读数为172546,本次读数为172940,口径为DN25的超声波水表的Q4(过载流量)为7.87m3/h,计算所得每日最大供水流量为188.88m3,本次上报的数据172940与前一日的上报的172546差值明显超过了日最大流量,顾被检测为“极大值”,同时数据的修复算法采用了“根据上一条”修复算法,经过实时数据数据质量检查与修复系统修复后,将使用“上一次”记录172546对数据172940进行替换,同时将异常类型字段 reading_error_type标识为-5,将修复字段reading_repair_type标识为2。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。
Claims (10)
1.实时数据质量检查及修复系统,其特征在于:包括消息队列、检查与修复引擎、管理平台;
所述消息队列是数据源与检查与修复引擎之间数据传递的中间件,作为消息传递的媒介;
所述检查与修复引擎是基于java语言,采用Spring Boot开发框架研发,通过调用管理平台已配置的检查算法和修复算法对数据源上报的数据执行检查与修复处理,并输出最终检查与修复结果,根据管理平台配置的报告规则,对检查与修复后数据进行统计,生成报告,发送通知,检查与修复引擎包括:数据接收组件、检查与修复组件、结果输出组件、数据结构与规则加载组件、算法加载组件、数据持久化模块、报告生成与通知任务组件、结果存储数据库、缓存数据库;
所述数据接收组件是检查与修复引擎的数据入口,使用java语言实现了对消息队列的SDK进行封装,实现了多种类型的消息队列的“消费者”功能,用于消费“数据接收队列”中的数据,当数据接收组件接收不到数据时,消费线程将执行睡眠,睡眠时长通过检查与修复引擎的配置文件配置,睡眠结束后继续获取数据,数据接收组件会记录消费数据记录的条数;
所述检查与修复组件,是检查与修复引擎执行检查与修复规则的执行器,用于执行用户配置的检查与修复规则,执行规则后,根据规则的配置信息对异常数据进行标识与修复;
所述结果输出组件,是检查与修复引擎的数据出口,使用java语言对消息队列的SDK进行了封装,实现了消息队列的“生产者”功能,结果输出组件不对数据做任何处理,在接收到检查与修复组件传递的处理后的数据后,直接将检查与修复后的数据或未匹配到检查与修复后的数据,输出到消息队列的检查与修复结果消息队列中;
数据持久化模块用于执行将检查结果数据存储到数据库中,是一个单独的java进程,对消息队列的SDK进行了封装,实现了多种类型消息队列的“消费者”功能,数据持久化模块与消息队列建立连接后,会持续的消费“检查与修复结果队列”中检查与修复后的数据,将数据存入检查结果数据库中;
算法加载组件用于在检查与修复引擎启动的时候加载已配置的检查与修复算法,并将其装配到检查与修复组件;
数据结构与规则加载组件用于将管理平台中配置的检查与修复规则和数据结构加载到检查与修复引擎的运行内存中,是检查与修复引擎中一个单独周期任务线程类,随着检查与修复引擎的启动而运行,设定周期时间,进行更新和加载,周期时间是系统提前设定好的,可通过引擎的配置文件进行配置;
报告生成与通知任务组件是一个单独周期任务线程类,随着检查与修复引擎的启动而运行,用于将管理平台中配置的报告规则加载到检查与修复引擎的运行内存中,设定周期时间,进行更新和加载,周期时间是系统提前设定好的,可通过引擎的配置文件进行配置;
结果存储数据库用于存储经过检查与修复引擎检查和修复后的数据,结果存储数据库中的每张数据结果表都对应着一个类型的上报数据,表名为上报数据的业务标识字段的值;
缓存数据库用于缓存需要结合历史数据进行计算的检查或修复算法所需的历史数据;
所述管理平台是基于Spring Boot+Mybatis框架实现的web管理系统,用于管理与维护基础配置数据,对检查结果的查看、报告下载等功能。
2.如权利要求1所述的实时数据质量检查及修复系统,其特征在于:所述管理平台包括数据结构管理、检查与修复规则管理、报告规则管理、报告查看与下载、检查结果查询、人员管理、业务数据库;
所述数据结构管理提供对数据源上报的数据内容结构体进行定义以及关联维度信息配置的创建、修改、删除、查询、详细信息查看等功能,包括数据结构配置、关联维度信息配置;数据结构是数据源上报的数据的结构体的描述信息,数据结构配置时需与数据源上报的数据结构体一致,一个数据结构对应一种类型的上报数据;关联维度信息配置,主要用于在配置检查与修复规则时,用户可以对符合检查和修复规则的上报数据实体上报的数据进行匹配配置,是选择配置在数据库中的数据源上报数据实体的维度信息,维度信息支持多级关联,是在数据结构创建完成后,再进行配置;
所述检查与修复规则管理提供对检查与修复规则进行配置,包括创建、修改、删除、查询、列表展示及详细信息查看,是检查与修复引擎对数据进行检测与修复的依据;
所述报告规则管理提供对报告规则进行创建、修改、删除、查询、列表展示、详细信息查看功能,报告规则用于对检查与修复后的数据结果进行周期统计和检查结果通知方式的设置;
所述报告查看与下载提供查看报告规则产生的统计报告和报告明细下载的功能,报告查看与下载可以按时间、报告名称对报告进行筛选;
所述检查结果查询用于查询检查与修复后的数据;根据特定的过滤条件查询数据;
人员管理提供对报告通知人员信息进行管理的功能,包括人员添加、修改、删除、查询、列表展示以及详细信息查看等功能;
业务数据库,用于存储检查与修复引擎执行数据处理所需的业务数据。
3.如权利要求2所述的实时数据质量检查及修复系统,其特征在于:
所述数据结构配置包括数据结构名称、业务标识、数据字段、描述信息,数据结构配置内容可进行添加、查看、修改、删除、详细信息查看;
所述数据结构名称是给配置的数据结构定义个名称,为方便用户对数据结构进行管理,数据结构名称支持输入中文、英文、数字或下划线,输入其他内容将无法通过校验并进行报错提示;
所述业务标识是该数据结构对应的上报的数据的类型,需要与数据源实际上报数据中的业务标识一致,业务标识支持输入英文、数字或下划线且必须以英文字母为开头,输入其他内容将无法通过校验并进行报错提示,业务标识配置后不能修改;
所述数据字段是对数据源上报数据的数据项的配置,支持配置一项或者多项,根据实际上报的数据内容进行匹配录入,在同一业务标识下,可配置多个数据字段,数据字段内容不允许为空,如果为空进行报错提示,且无法保存;添加数据字段输入内容包括:字段中文名称、字段英文名称、字段数据类型,其中数据类型为下拉选项,支持选择数值型、文本型、布尔型、时间型、对象型,选中已添加的数据字段,可以对添加的字段信息进行修改和删除操作;
所述描述信息,用户可以对数据结构添加描述信息,对数据结构内容进行说明,非必填项;
所述关联维度信息配置的内容包括关联关系名称、数据字段、维度表、维度字段;
所述关联关系名称,是对关联联系的简短描述,为方便用户对关联关系进行管理,关联关系名称支持输入中文、英文、数字或下划线;
所述数据字段是通过下拉选项选择,选项内容为数据结构配置中已添加的数据字段;
维度表是通过下拉选项选择,选项内容是上报数据实体的维度表的表名;
维度字段是通过下拉选项选择,选项内容是选定的维度表内的字段内容,当选择的维度表后,维度字段的下拉选项自动匹配所选择的维度表内的维度字段内容;
所述检查与修复规则管理包括:规则名称、数据结构、匹配值配置、算
法配置;
所述规则名称支持输入的内容包括:中文、英文、数字或下划线,输入其他内容无法通过校验并显示报错提示信息;
所述数据结构是通过下拉选项选择,可以选择已经在数据结构配置中配置好的数据结构;
匹配值配置用于选择检查与修复规则的执行对象,有添加按钮,点击后可以选择在数据结构中配置的关联关系的维度表,然后点击维度下输入域,弹出选项界面,进行选择,选项内容对应显示已选定的关联关系的维度表中的维度数据,做为此检查与修复规则要执行的对象;
算法配置,点击“添加算法”,弹出算法添加对话框,包括:字
段、检查算法、修复算法;
字段从下拉菜单中选择,内容是所述数据结构中配置的数据字段,
检查算法可以用户自行配置,也可以从系统配置好的算法中选择,
修复算法可以用户自行配置,也可以从系统配置好的算法中选择;
检测算法与修复算法是成对配置,添加一种检查算法可以配置一个或者不配置修复算法,数据结构中的同一个数据字段支持配置多个检查算法,当一个检查与修复规则中同一个字段配置多个检查算法或者不同规则配置配置的数据结构字段是相同的,则当数据再第一次被修复过后就不再执行其他的检查与修复算法;
所述报告规则管理,创建内容包括:报告规则名称、生成报告周期、数
据结构、通知阈值、通知级别、通知人员、通知方式;
报告规则名称支持输入中文、英文、数字或下划线,输入其他内
容将无法通过校验并进行报错提示;生成报告周期支持输入crontab表达式,crontab表达式是一种定时任务执行时间的表达方式,可以设置多个执行时间,相邻两个执行时间构成一个报告周期,也可以设置以当前时间为开始的固定时间的报告周期;
数据结构是从下拉选项中选择,是用户已经在数据结构管理功能中配置好的数据结构名称;
通知阈值是判断是否发送通知的条件,用于与报告统计结果中数据正确率做对比,可以输入整数或小数;当数据正确率低于设置的通知阈值时,则执行报告统计结果的发送;
通知级别,代表了数据产生异常状态的严重程度,是通过下拉选项选择,选项内容包括:预警、一般、严重、重要;
通知人员,是指要接收报告通知的人员,通知人员支持配置多个,支持手动输入和从下拉选项中选择两种方式进行设置,手动输入的方式需填写人员名称、根据选定的通知方式,填写对应的地址信息;
通知方式,是通过复选框选择,支持多种通知方式同时通知,选择内容包括:邮件、短信、钉钉、微信、云之家,如果没有配置通知方式,则无法进行通知;
所述报告查看与下载中,报告列表展示内容包括:报告名称、数据正确率、任务开始时间、任务结束时间、任务执行时长;
报告名称是系统自动生成,由报告规则名称与报告执行统计的开始时间组成;
数据正确率是一个比值,是该报告规则统计周期内,报告规则统计出的检查与修复结果的总记录数与正确数的比值, 计算的公式为: 数据正确率=(检查条数-异常条数)/ 检查条数 X 100%;
任务开始时间为报告规则单个周期任务执行的开始时间;
任务结束时间为报告规则单个周期任务执行的结束时间;
任务执行时长为报告规则单个周期执行的任务执行的时长,单位为秒;
用户点击报告列表中报告名称,显示统计报告页面,页面展示内容包括:数据结构、检查规则、统计数据开始时间、统计数据结束时间、数据正确率、检查数、正确数、异常数、不准确数、修复数、修复率、明细下载连接;
数据结构,表示当前报告是对那类数据进行的统计,此处的数据结构就是配置检查与修复规则时选择的数据结构;
检查规则,表示当前报告展示的是那个检测与修复规则检查与修复的结果;
统计数据开始时间、统计数据结束时间表示当前报告统计数据的时间范围;
数据正确率,统计报告页面展示的数据正确率与报告列表中展示的数据正确率是同一个值;
检查数表示统计时间周期内总共检查的数据量;
正确数显示的是统计时间周期内检查结果正常的数据条数;
异常数显示的是统计时间周期内检查结果异常的数据条数;
不准确数与异常数相同;
修复数显示的是统计时间周期内检查结果为异常,已经有被修复算法修复的数据条数;
修复率是修复数据占异常数的一个比值,计算的公式为:修复率=修复数/异常数*100%;
所述明细下载连接,点击明细下载连接后下载文件的形式为
Execl表格,文件内容包括:数据上报时间、上报数据主体标识、上报数据内容、各字段的检查算法标识、各字段的修复算法标识;
所述检查结果查询的筛选条件包括:数据结构名称、数据查询开始时间、数据查询结束时间、结果类型、数据字段、字段值过滤表达式;
数据结构名称是通过下拉选项选择,选项内容为用户在数据结构
管理功能中配置的数据结构名称,为必填项;
数据查询开始时间与数据查询结束时间是要查询结果数据表中上报数据的时间范围,数据查询结束时间不能早于数据查询开始时间且不能晚于当前时间,数据查询开始时间与数据查询结束时间的时间跨度不能超过系统设定的时间长度:N个月,为必填项;
结果类型是通过下拉选项选择,是对数据结果表中检查与修复结果状态进行筛选的选项,通过结果类型的选择可以实现对检查结果数据状态的筛选,结果类型包含:全部、检查异常、检查正常、未修复、已修复,当选择全部时则不对数据结果进行区分,默认为全部,为必填项;
数据字段,是通过下拉选项选择,展示的内容为数据结构中定义的数据字段,数据字段名称与结果存储数据库中的结果数据表字段名是相同的,选择了数据字段后也就是要对数据结果表中的某个字段的结果值进行筛选,为选填项;
字段值过滤表达式,是对数据过滤条件的配置,为选填项;
所述人员管理,设置的人员信息内容包括:人员姓名、人员电话、人员邮箱地址、人员微信号、人员的钉钉号、人员的云之家账号;人员姓名支持输入中文、英文,输入其他内容将无法通过校验并进行错误提示;人员电话值允许输入手机号,输入其他内容将无法通过校验并进行错误提示;人员邮箱地址,需符合邮件地址的格式,输入其他内容将无法通过校验并进行错误提示;人员电话、人员邮箱地址、人员微信号、人员的钉钉号、人员的云之家账号都为非必填项,但至少要填写一项;
业务数据库包括:数据结构表、检查与修复规则表、报告规则表、报告信息表、数据结构关联关系表、人员信息表、维度表、维度信息配置表、维度表字段信息表、算法配置表;
数据结构表用于存储通过管理平台配置的数据结构信息;检查与修复规则表用于存储通过管理平台配置的检查与修复规则信息;报告规则表用于存储通过管理平台配置的报告规则信息;报告信息表用于存储检查与修复引擎执行报告规则的统计结果信息;数据结构关联关系表用户存储数据结构与数据上报实体维度的关联关系;人员信息表用于存储报告规则通知的人员信息;
维度表是数据上报实体维度数据表,是根据实际业务需要录入到业务数据中,可能是一张或者多张表,主要记录数据上报实体的维度信息;维度信息配置表,用于记录已经录入业务系统中的维度数据表信息;维度表字段信息表,用于记录维度数据表中都包含了哪些字段,以上相关业务表需在检查与修复引擎执行数据处理前录入到业务表中;
算法配置表用于记录检查与修复引擎所能执行检查和修复算法,算法配置表字段包括:数据的主键、算法英文名称、算法中文名称、算法类型、是否需要缓存历史数据;数据的主键为数据库记录的唯一标识,不可重复;算法英文名称、算法中文名称是系统已有算法或者用户自定义算法的名称,用户自定义算法的名称由用户自行定义,算法的英文名称只允许输入英文、数字、下划线,中文名称可以输入中文、英文、数字、下划线,算法的中文名称和英文名称都不可空,且英文名称需与用户自定义算法实现类中算法英文名称变量的值一致;算法类型为标记算法是检查算法还是修复算法, 值为1 是修复算法,值为2是检查算法;是否需要缓存历史数据,用于标识该自定义算法是否需要结合历史数据进行计算,值为1 表示是,值为0表示否。
4.如权利要求1所述的实时数据质量检查及修复系统,其特征在于:所述消息队列可选择Kafka、RabbitMQ、RocketMQ、ActiveMQ中任意一种。
5.如权利要求3所述的实时数据质量检查及修复系统,其特征在于:所述数据字段是以树形进行维护的,所述业务标识为树的根节点,在根节点上右键添加数据字段、修改数据字段、删除字段,以及字段信息查看,实现对数据字段的维护,点击添加数据字段功能会弹出数据字段添加的对话框,添加数据字段,根节点不支持修改和删除操作;
所述检查结果查询中,N个月为3个月。
6.如权利要求3所述的实时数据质量检查及修复系统,其特征在于:所述检查算法中,系统已配置的算法包括:常量表达式 、连续重复值、负值、极大值、检查Groovy、最大值、最小值、平均值、标准差、四分位差;
负值,针对上报数据应为线性增长类的数据的场景,不需要配置数据参数,检查与修复组件会对配置了负值检查算法的字段自动记录上一次正确读数,如果被检查为异常的数据,则不会被记录,并将当前处理的数据与上一次正确读数对比,如果当前处理的数据小于上一次上报读数时,则将本次读数标记为异常,将数据异常标记字段的检查类型标识标识为-4;
极大值,针对数据具有极限值的场景,上报读数是不能超过一定范围的,如果上报读数超过此范围,则认为是异常数据,将数据异常标记字段的检查类型标识标识为 -5;
检查Groovy,针对具备一定编程基础的使用者,可以输入一段Groovy的脚本函数,函数的输入参数为本条数据与上一条数据,用户自定义判断逻辑,Groovy处理结果需返回true或false,当结果为true时,则认为是异常数据,将数据异常标记字段的检查类型标识标识为 -6;
最大值、最小值、平均值:针对简单计算场景,将数据与指定范围内历史数据产生的最大值、最小值、平均值做比较;该检查算法需指定历史数据缓存的范围和比较方式;指定范围的方式包括按次数、按时间范围,数据检查与修复组件会将符合算法配置范围内的数据自动存入缓存数据库中,数据异常标记字段的检查类型标识标记:最大值为-7、最小值为-8、平均值为-9;
标准差、四分位差:针对离群数据的检查方法,数据与指定范围内历史数据产生的标准差与四分位差做比较,标准差支持输入倍数,即当数据数据超过几倍的标准差值时标记为异常,该检查算法需指定历史数据缓存的范围和比较方式,指定范围的方式包括按次数、按时间范围,数据检查与修复组件会将符合算法配置范围内的数据自动存入缓存数据库中,数据异常标记字段的检查类型标识标记:标准差为-10、四分位差为-11;
常量表达式,针对如行业标准、国家标准或国际标准中规定的具有固定范围的数据可以使用常量表达式,该检查算法的输入参数为固定的表达式,数据异常标记字段的检查类型标识为-12;
连续重复值,针对数据变动比较频繁的场景,当处理的数据为连读多次获者一个周期内上报的值一直未发生变化,则认为是异常,该检查算法需指定历史数据缓存的范围和比较方式,指定范围的方式包括按次数、按时间范围,数据检查与修复组件会将符合算法配置范围内的数据自动存入缓存数据库中,数据异常标记字段的检查类型标识为-13;
系统已配置的修复算法包括:根据上一条、固定值、中位数、移动平均数 、指数平滑、修复Groovy、随机数;
根据上一条是将上一次读数做为本次异常数据修复数据,不需要配置参数,检查与修复组件会自动记录上一次读数,当检测的数据为异常数据时,使用此算法修复,将上一次读数作为本次修复的数据存入检测异常字段的修复值字段,并将数据修复标记字段标识为2;
固定值是将固定输入的数据做为异常数据修复数据,该修复算法需输入的参数为固定值,当检测的数据为异常数据时,使用此算法修复,将设定的固定值参数作为本次修复的数据存入检测异常字段的修复值字段,并将数据修复标记字段标识为1;
中位数是将指定范围内历史数据计算产生中位数,做为异常数据的修复数据,中位数修复算法输入的参数为:历史数据范围,指定范围的方式包括按次数、按时间范围;检查与修复组件会将符合中位数算法周期内的数据存入数据缓存中,用于计算出中位数;检查的异常数据修复时,将计算后中位数作为本次修复的数据存入检测异常字段的修复值字段,并将数据修复标记字段标识为4;
移动平均数,将指定范围内历史数据计算产生移动平均数,做为异常数据的修复数据,移动平均数的修复算法输入的参数为:历史数据范围,指定范围的方式包括按次数、按时间范围;检查与修复组件会将符合移动平均算法周期内的数据存入数据缓存中,用于计算出移动平均数,将计算后的移动平均数作为本次修复的数据存入检测异常字段的修复值字段,并将数据修复标记字段标识为5;
指数平滑,将指定范围内历史数据计算产生指数平滑结果,做为异常数据的修复数据,指数平滑算法输入的参数为:历史数据范围,指定范围的方式包括按次数、按时间范围、指数平滑的系数;检查与修复组件会将符合指数平滑法周期内的数据存入数据缓存中,计算出指数平滑结果,检查的异常数据修复时,将计算结果作为本次修复的数据存入检测异常字段的修复值字段,并将数据修复标记字段标识为6;
修复Groovy,针对具备一定编程基础的用户,可以输入一段Groovy的脚本函数,函数的输入参数为本次读数与上一次读数,用户自定义修复逻辑,函数的返回值应为一个读数,检查的异常数据修复时,将函数的返回值作为本次修复的数据存入检测异常字段的修复值字段,并将数据修复标记字段标识为7;
随机数是系统根据配置参数产生随机数做为修复数据,输入参数包括最大值、最小值、小数位数,最大值,表示产生的随机数不能大于此数;最小值表示产生的随机数不能小于此数;小数位表示随机数的精度即保留几位小数,当小数位数为0时,则产生整数,检查的异常数据修复时,将随机数作为本次修复的数据存入检测异常字段的修复值字段,并将数据修复标记字段标识为8。
7.如权利要求1所述的实时数据质量检查及修复系统,其特征
在于:算法加载组件支持用户自定义检查与修复算法方法如下:
用户自定义的检查与修复算法必须以java语言实现,自定义算法的实现工程是maven工程,以pom的方式引入检查与修复引擎的算法接口jar包,jar包中包含了检查算法抽象类与修复算法抽象类,自定义检查算法实现类需继承jar包中检查算法抽象类,并实现抽象的检查方法,检查算法抽象类中的变量包括:检查算法英文名称、检查算法标识、检查算法缓存数据;检查算法英文名称,用户自定义的算法的名称,此名称用于记录到算法配置表的算法英文名字段,检查与修复引擎根据此名称将检查与修复规则配置的检查算法进行匹配,用户在实现自定义检查算法时必须给自定义算法定义名称,如果不定义名称,算法再加载时将会报错,并且算法将不会被装配到检查与修复组件中;检查算法标识,用于当自定义检查算法检查出异常数据时,记录到数据的数据异常标记字段,检查算法标识不能与已有的算法标识重复;检查算法缓存数据,如果自定义算法需要基于历史数据进行计算,可通过算法缓存数据变量获取历史数据;抽象的检查方法包括两个参数:当前处理的数据记录、上一次数据记录,自定义检查算法在实现抽象算法时可以基于以上两个参数实现数据逻辑的判断,自定义检查算法的返回值为Integer类型的值,返回0表示检查数据无异常,返回检查算法标识表示检查数据异常;自定义修复算法实现类需继承jar包中修复算法抽象类,并实现抽象的修复方法;修复算法抽象类中的变量包括:修复算法英文名称、修复算法标识、修复算法缓存数据;修复算法英文名称,用户自定义修复算法的名称,此名称用于记录到算法配置表的算法英文名字段,检查与修复引擎根据此名称将检查与修复规则配置的修复算法进行匹配,用户在实现自定义修复算法时必须给自定义修复算法定义名称,如果不定义名称,算法再加载时将会报错;修复算法标识,用于当自定义修复算法在对异常数据修复后,记录到数据的数据修复标记字段,修复算法标识不能与已有的修复算法标识重复;修复算法缓存数据,如果自定义修复算法需要基于历史数据进行计算,可通过修复算法缓存数据变量获取历史数据;修复算法的抽象方法,包括连个参数,当前上报数据记录、上一次正确数据记录,自定义修复算法在实现抽象算法时可以基于以上两个参数实现数据的判断逻辑,在计算出正确的结构后,需将修复值更新到当前上报数据记录的修复结果字段;在自定义算法开发完成后,将maven工程打包成jar包,在检测与修复引擎启动前,将jar包放在检测与修复引擎的根目录下,将算法信息配置到所述业务数据库中的算法配置表中,配置内容包括:算法的英文名称,中文名称,算法类型,是否需要缓存历史数据,英文名称需与自定义算法实现类中算法的英文名称变量的值一致,不能为空;中文名称为用户自定义,将会显示在检查与修复规则配置页面的算法选择下拉列表中,不能为空;算法类型,用于标识算法是检查算法还是修复算法;是否需要缓存历史数据,用于标识用户的自定义算法是否需要结合历史数据进行计算,将自定义算法的信息录入到算法配置表后,这样在管理平台配置检查与修复规则时,就可以选择到用户的自定义算法;在检测与修复引擎启动时,检查与修复算法加载组件将会加载用户自定义的检查与修复算法,并将其装配到检查与修复组件中。
8.如权利要求1所述的实时数据质量检查及修复系统,其特征在于:
所述检查与修复引擎提供了启动与停止脚本,用于启动或停止引擎;
所述检查与修复组件,在接收到数据接收组件传递过来的数据后,
先根据上报数据中的业务标识与数据结构进行匹配,然后再根据数据
结构关联的检查与修复规则,匹配到要执行检查与修复规则;进行匹
配时分以下情况判断:
第一种情况,未匹配到数据结构,则不进行任何处理,直接将数据发送给结果输出组件,进行结果输出;
第二种情况,匹配到数据结构,但未匹配到检查与修复规则,不进行任何处理,直接将数据发送给结果输出组件,进行结果输出;
第三种情况,匹配到规则,判断数据中的“上报数据实体标识”是否在检查与修复规则的“匹配值配置”的设定中:
如果不在“匹配值配置”的设定中则不对数据执行此条检查与修复规则,直接将数据发送给结果输出组件,进行结果输出;
如果在修复规则的“匹配值配置”的设定中,则进行检测与修复算法的执行;
执行检查与修复算法时,当算法需要结合历史数据进行计算时,检查与修复组件会将上报数据存入缓存数据库中,当缓存的数据条数满足修复规则要求时,执行修复算法,进行结果输出;
所述缓存数据库是redis;
所述数据接收组件消费线程睡眠时长是3秒;
所述数据持久化模块有实时入库线程和周期入库线程两种类型的工作线程,是并行执行的,数据持久化模块支持配置数据入库线程启动数,支持配置批量处理的数据条数或周期提交时间执行一次入库操作;数据持久化模块支持将数据持久化到多种类型的数据库中;
数据结构与规则加载组件中的周期时间为30秒;
报告生成与通知任务组件周期时间为60秒。
9.如权利要求8所述的实时数据质量检查及修复系统,其特征在于:
所述数据持久化模块,执行一次入库操作数据条数设为1000、周期提交时间设为20秒,如果20秒内入库数据没有达到1000条,则数据由周期线程执行入库操作,如果在20秒内入库数据达到1000条则由实时入库线程执行入库操作;支持关系型数据、NoSql数据库、MPP数据库、时序数据库等多种类型的数据库,其中关系型数据库支持: MySql、PostgreSql、Oracle、SqlServer;NoSql数据库支持:HBase、Mongo;MPP数据库支持:GreenPlum;时序数据库支持:涛思时序库。
10.如权利要求1所述的实时数据质量检查及修复系统,其特征在于:
数据源是检查与修复引擎处理的数据的来源,数据来源包含两类,一类是物联网终端网关,通过物联网协议接收或采集物联网终端传感器的数据,数据的采集和接收通常是按一定频率周期性进行的,不同类型的终端传感器的采集周期不同,物联网网关采集或接收到数据后即通过调用消息队列提供的客户端的SDK,将数据上传到消息队列中;
另一类是软件业务系统,通过调用消息队列提供的客户端的SDK,将检测数据上传到消息队列中,数据源上报的数据是结构化的,支持通过JSON格式进行上报。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210953054.4A CN115237636A (zh) | 2022-08-10 | 2022-08-10 | 实时数据质量检查及修复系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210953054.4A CN115237636A (zh) | 2022-08-10 | 2022-08-10 | 实时数据质量检查及修复系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115237636A true CN115237636A (zh) | 2022-10-25 |
Family
ID=83679167
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210953054.4A Pending CN115237636A (zh) | 2022-08-10 | 2022-08-10 | 实时数据质量检查及修复系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115237636A (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115827777A (zh) * | 2022-11-21 | 2023-03-21 | 中国人民财产保险股份有限公司 | 一种多数据源的自适应同步与差异识别方法、装置及设备 |
CN116055350A (zh) * | 2023-01-03 | 2023-05-02 | 重庆长安汽车股份有限公司 | 一种基于Json的数据通信质量检测方法 |
CN116594965A (zh) * | 2023-05-16 | 2023-08-15 | 矩阵时光数字科技有限公司 | 一种支持多线程的随机数检测系统及方法 |
CN116738157A (zh) * | 2023-08-09 | 2023-09-12 | 柏森智慧空间科技集团有限公司 | 物业管理平台中数据预处理的方法 |
CN117235062A (zh) * | 2023-11-10 | 2023-12-15 | 广州汇通国信科技有限公司 | 基于数据中台的业务系统数据建模方法 |
CN117271485A (zh) * | 2023-09-07 | 2023-12-22 | 索菲亚家居股份有限公司 | 一种大数据质量管理方法及装置 |
CN117516670A (zh) * | 2024-01-04 | 2024-02-06 | 山东晨晖电子科技有限公司 | 一种物联网超声波水表的数据智能监测方法 |
CN117540343A (zh) * | 2024-01-09 | 2024-02-09 | 苏州元澄科技股份有限公司 | 一种数据融合方法与系统 |
-
2022
- 2022-08-10 CN CN202210953054.4A patent/CN115237636A/zh active Pending
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115827777A (zh) * | 2022-11-21 | 2023-03-21 | 中国人民财产保险股份有限公司 | 一种多数据源的自适应同步与差异识别方法、装置及设备 |
CN116055350A (zh) * | 2023-01-03 | 2023-05-02 | 重庆长安汽车股份有限公司 | 一种基于Json的数据通信质量检测方法 |
CN116055350B (zh) * | 2023-01-03 | 2024-05-14 | 重庆长安汽车股份有限公司 | 一种基于Json的数据通信质量检测方法 |
CN116594965A (zh) * | 2023-05-16 | 2023-08-15 | 矩阵时光数字科技有限公司 | 一种支持多线程的随机数检测系统及方法 |
CN116594965B (zh) * | 2023-05-16 | 2024-05-07 | 矩阵时光数字科技有限公司 | 一种支持多线程的随机数检测系统及方法 |
CN116738157A (zh) * | 2023-08-09 | 2023-09-12 | 柏森智慧空间科技集团有限公司 | 物业管理平台中数据预处理的方法 |
CN117271485A (zh) * | 2023-09-07 | 2023-12-22 | 索菲亚家居股份有限公司 | 一种大数据质量管理方法及装置 |
CN117235062A (zh) * | 2023-11-10 | 2023-12-15 | 广州汇通国信科技有限公司 | 基于数据中台的业务系统数据建模方法 |
CN117516670A (zh) * | 2024-01-04 | 2024-02-06 | 山东晨晖电子科技有限公司 | 一种物联网超声波水表的数据智能监测方法 |
CN117516670B (zh) * | 2024-01-04 | 2024-03-29 | 山东晨晖电子科技有限公司 | 一种物联网超声波水表的数据智能监测方法 |
CN117540343A (zh) * | 2024-01-09 | 2024-02-09 | 苏州元澄科技股份有限公司 | 一种数据融合方法与系统 |
CN117540343B (zh) * | 2024-01-09 | 2024-04-16 | 苏州元澄科技股份有限公司 | 一种数据融合方法与系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115237636A (zh) | 实时数据质量检查及修复系统 | |
US12002063B2 (en) | Method and system for generating ensemble demand forecasts | |
US8301386B1 (en) | Classification and web-based presentation of oil and gas SCADA data | |
CN113361663B (zh) | 基于人工智能的电网事件诊断自主学习方法及系统 | |
US10997195B1 (en) | System and methods for user-configurable virtual appliance for advanced analytics using streaming/IoT/big data | |
CN105843904A (zh) | 针对数据库运行性能的监控告警系统 | |
US20050021425A1 (en) | Method and system for supply chain management employing a visualization interface | |
US20130346163A1 (en) | Automatically measuring the quality of product modules | |
CN107408226A (zh) | 资产健康评分及其使用 | |
US20200134642A1 (en) | Method and system for validating ensemble demand forecasts | |
US11244280B2 (en) | Reducing food waste by using a machine learning model | |
US20120226625A1 (en) | Shipment evaluation system | |
CN113342625A (zh) | 一种数据监控方法及系统 | |
CN115964272A (zh) | 交易数据自动化测试方法、装置、设备及可读存储介质 | |
US20100274601A1 (en) | Supply chain perameter optimization and anomaly identification in product offerings | |
CN114443437A (zh) | 告警根因输出方法、装置、设备、介质和程序产品 | |
CN110825580A (zh) | Kuberrnates Pod健康监控方法 | |
CN114235108A (zh) | 基于数据分析燃气流量计异常状态检测方法和装置 | |
CN102308309A (zh) | 一组标准的映射技术 | |
CN106817233A (zh) | 一种云计算管理平台告警方法及计量监控平台 | |
CN109165212A (zh) | 一种大数据实时监控与稽核的方法 | |
CN115471092A (zh) | 食品生产报工方法、装置、电子设备及存储介质 | |
US9123020B2 (en) | Modeling, monitoring, and managing system dimensions for a service assurance system | |
Goosen | A system to quantify industrial data quality | |
Pan et al. | Quality monitoring and measuring for internet of services |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |