掌桥专利:专业的专利平台
掌桥专利
首页

数据检测方法及装置

文献发布时间:2023-06-19 11:02:01


数据检测方法及装置

技术领域

本申请涉及计算机技术领域,尤其涉及一种数据检测方法、装置、电子设备及计算机可读介质。

背景技术

证券行业对证券信息数据服务商所提供数据的准确性、完整性、及时性有很高的要求,每个交易日有海量、繁杂的数据需要处理,同时也需要对数据的采集、处理、发布等各个环节进行全面检测与监控,来确保数据的准确性、完整性、及时性。目前大多都是依赖于人工或简单的工具如查询分析器等进行检查与处理。随着需要检测的数据日益增多,由此带来的是工作强度大、操作繁琐、问题发现和处理不及时、处理过程无法追踪及溯源等弊端。

发明内容

本申请实施例提供一种数据检测方法,其能够保证数据的准确性、完整性、及时性。

本申请实施例提供一种数据检测方法,所述方法应用于数据检测系统,该系统具有用户交互界面、执行器,包括:

接收质检用户通过用户交互界面输入的待检数据的检测请求,其中,所述待检数据的检测请求包括待检测对象名称及其属性数据、数据检测周期、预警方式,及所述质检用户定义;

对所述检测请求按照预定条件进行有效性测试;

响应于测试通过的情况,按照检测请求的所述数据检测周期和所述优先级加入任务队列,生成检测任务,并将所述检测任务发送至所述执行器;

所述执行器按照异步方式执行所述检测任务,得到检测结果;

将所述检测结果发送至所述用户交互界面,并按照所述预警方式提示所述质检用户。

在一些实施例中,所述响应于测试通过的情况,按照检测请求的所述数据检测周期和所述优先级加入任务队列,生成检测任务,包括:

利用异步任务处理器或定时任务分配器根据所述数据检测周期和所述优先级,将标注为激活状态的所述检测请求生成检测任务对象,放入队列管理工具Celery任务队列中,生成检测任务。

在一些实施例中,所述执行器按照异步方式执行所述检测任务,得到检测结果,包括:

所述执行器根据所述检测任务的数量启动多个队列管理工具Celery集群,按照异步方式执行所述检测任务,得到检测结果。

在一些实施例中,所述执行器按照异步方式执行所述检测任务,得到检测结果,包括:

当接收到所述启动检测任务指令时,队列管理工具Celery通过调度进程Beat向Redis队列发布检测任务;

所述队列管理工具Celery的工作进程采用竞争模式从所述Redis队列中获取并执行所述检测任务,获得所述检测结果。

在一些实施例中,所述检测对象名称包括宏引用,所述执行器按照异步方式执行所述检测任务,得到检测结果,包括:

查询是否存在所述宏引用对应的宏变量的当前值;

响应于不存在当前值的情况,重新执行所述宏变量,获取所述当前值;

响应于存在当前值的情况,获取所述当前值,并以JSON方式将其嵌入至所述检测任务中,执行所述检测任务,得到检测结果。

在一些实施例中,所述宏变量包括数据库及所述数据库连接参数,检测结果集,系统公共函数及参数。

所述宏变量通过预定方式嵌入至所述宏引用中,其中,所述宏引用通过在SQL语句或脚本中采用预定标识所述宏变量。

在一些实施例中,所述将所述检测结果发送至所述用户交互界面,并按照所述预警方式提示所述质检用户,包括:

通过预警渠道,获取对应的数据预警信息,并将所述预警信息发送至用户交互界面;

接收所述预警信息对应的触发指令,输出预警处理交互界面;

接收并记录所述质检用户对所述预警信息的处理结果。

在一些实施例中,还一种数据检测装置,该装置包括:

接收模块,用于接收质检用户通过用户交互界面输入的待检数据的检测请求,其中,所述待检数据的检测请求包括待检测对象名称及其属性数据、数据检测周期、预警方式,及所述质检用户定义;

有效性测试模块,用于对所述检测请求按照预定条件进行有效性测试;

任务生成模块,用于响应于测试通过的情况,按照检测请求的所述数据检测周期和所述优先级加入任务队列,生成检测任务,并将所述检测任务发送至所述执行器;

检测模块,用于所述执行器按照异步方式执行所述检测任务,得到检测结果;

结果反馈模块,用于将所述检测结果发送至所述用户交互界面,并按照所述预警方式提示所述质检用户。

在一些实施例中,本申请还提出一种电子设备,包括存储器和处理器,所述存储器上存储有计算机可执行指令,所述处理器运行所述存储器上的计算机可执行指令时实现上述的方法。

在一些实施例中,本申请还提出一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现上述的方法。

通过上述实施例的数据检测方法,接收质检用户通过用户交互界面输入的待检数据的检测请求,对所述检测请求按照预定条件进行有效性测试;当测试通过时,按照检测请求的所述数据检测周期和所述优先级加入任务队列,生成检测任务,并将所述检测任务发送至所述执行器;所述执行器按照异步方式执行所述检测任务,得到检测结果;将所述检测结果发送至所述用户交互界面,并按照所述预警方式提示所述质检用户。通过上述的方式质检用户可以方便快捷的编制和管理自己的检测请求,同时也为质检用户提供对相应的预警信息处理和归档的功能,方便质检用户进行数据改进和错误追踪。协助质检用户高效的完成数据质量的跟踪与改进工作。检测请求被激活后,可以按照预先设定的数据检测间隔或周期,自动完成对检测请求所定义的各类数据进行检测,自动将检测结果推送给质检用户,大大的减轻了质检用户的工作强度。同时也对问题数据处理过程进行有效的追踪,协助质检用户简便高效的提高数据质量。

附图说明

为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍。

图1为一些实施例中的数据检测方法的应用场景示意图;

图2为一些实施例中的数据检测方法的流程示意图;

图3为一些实施例中的执行器数据检测的结构示意图;

图4为一些实施例中的数据检测装置的结构示意图。

图5为另一些实施例中的数据检测装置的结构示意图。

具体实施方式

下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本申请说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本申请。如在本申请说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当进一步理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

如在本说明书和所附权利要求书中所使用的那样,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。

作为专业的证券信息数据服务商,对所提供数据的准确性、完整性、及时性都有很高的要求。每天都有海量的、繁杂的数据需要处理,同时也需要对数据的采集、处理、发布等各个环节进行全面检测与监控,来确保数据的准确性、完整性、及时性。

随着需要检测的数据日益增多,各类数据间逻辑关系日益复杂,随之而来的是工作强度大、操作繁琐、问题发现和处理不及时、处理过程无法追踪及溯源等弊端。在本申请的实施例中提出一种数据检测方法,应用于数据检测系统,其可以检测诸如某天的数据缺失,数据超过给定的范围、数据不匹配等数据本身的问题。

该数据检测系统,如图1所示,该系统包括具有用户交互界面的终端100,和后台服务器200。质检用户(如质检员)通过用户交互界面输入数据检测需求,后台服务器200的执行器接收到数据检测需求后基于Celery分布式多任务处理的数据质量检测,获取检测结果反馈给终端100的质检用户,以便查看或处理相关问题。

在一些实施例中,如图2所示,提出一种数据检测方法,该方法包括:

步骤201,接收质检用户通过用户交互界面输入的待检数据的检测请求,其中,所述待检数据的检测请求包括待检测对象名称及其属性数据、数据检测周期、预警方式,及所述质检用户定义。

质检用户/质检员通过web用户交互界面,依据数据检测的业务逻辑,编制待检数据的检测请求。待检数据的检测请求包括待检测对象名称及其属性数据、数据提取SQL语句、检测逻辑脚本、质检用户定义及绑定、预警方式、数据检测周期等,均通过web用户交互页面方式提交并保存。

具体的,在web用户交互页面提供一些通用的数据检测用例或者范式,质检用户可以直接点击选择,或者手动输入检测对象等。

步骤203,对所述检测请求按照预定条件进行有效性测试。

Web用户交互界面提供待“检测请求”的测试按钮,可预先测试待测请求的有效性。具体实现过程为:临时生成一个高优先级的数据检测任务对象进入任务队列,交由服务器的执行器执行测试,根据返回的错误提示,修改检测请求直至测试通过后,保存并激活,待定时任务分配器beat处理。用户交互界面同时也提供检测请求的维护功能,包括保存、启停、删除、查询、修改等功能。

步骤205,响应于测试通过的情况,按照检测请求的所述数据检测周期和所述优先级加入任务队列,生成检测任务,并将所述检测任务发送至所述执行器。

在本实施例中,响应于测试通过的情况下,异步任务处理器或者定时任务分配器beat定时扫描已激活的待测请求,依据其数据检测周期和优先级,将该检测请求加入任务队列,生成检测任务。

步骤207,所述执行器按照异步方式执行所述检测任务,得到检测结果。

在本实施例中,采用分布式异步任务处理框架Celery执行所述检测任务,得到检测结果,并保存结果。通过上述方式可以同时检测多源的大量的数据检测任务。

步骤209,将所述检测结果发送至所述用户交互界面,并按照所述预警方式提示所述质检用户。

在本实施例中,通过回调服务反馈给终端100的所述用户交互界面。质检用户通过预警方式,获取对应的数据预警信息,并通过其中预警信息对应的“链接”进入到系统的预警处理交互界面,记录处理过程。该预警处理交互界面还提供预警信息查询、处理、修改等交互界面,维护历史的预警信息等功能。同时也为质检用户提供对相应的预警信息处理和归档的功能,方便质检用户进行数据改进和错误追踪,协助质检用户高效的完成数据质量的跟踪与改进工作。

通过上述实施例的数据检测方法,接收质检用户通过用户交互界面输入的待检数据的检测请求,对所述检测请求按照预定条件进行有效性测试;当测试通过时,按照检测请求的所述数据检测周期和所述优先级加入任务队列,生成检测任务,并将所述检测任务发送至所述执行器;所述执行器按照异步方式执行所述检测任务,得到检测结果;将所述检测结果发送至所述用户交互界面,并按照所述预警方式提示所述质检用户。通过上述的方式质检用户可以方便快捷的编制和管理自己的检测请求,同时也为质检用户提供对相应的预警信息处理和归档的功能,方便质检用户进行数据改进和错误追踪。协助质检用户高效的完成数据质量的跟踪与改进工作。检测请求被激活后,可以按照预先设定的数据检测间隔或周期,自动完成对检测请求所定义的各类数据进行检测,自动将检测结果推送给质检用户,大大的减轻了质检用户的工作强度。同时,也对问题数据处理过程进行有效的追踪,协助质检用户简便高效的提高数据质量。

在一些实施例中,如图3所示,所述响应于测试通过的情况,按照检测请求的所述数据检测周期和所述优先级加入任务队列,生成检测任务,包括:

利用异步任务处理器或定时任务分配器根据所述数据检测周期和所述优先级,将标注为激活状态的所述检测请求生成检测任务对象Task,放入队列管理工具Celery任务队列(Broker)中,生成检测任务。

在本实施例中,将标注为激活状态的所述检测请求自动向队列管理工具Celery中添加自动轮询任务(tasks)。由队列管理工具Celery调度进程Beat,并通过预先安装的IPMITOOL命令执行检测任务。当检测时间到达截至时间时,队列管理工具Celery调度进程Beat终止检测任务分配。

在一些实施例中,所述执行器按照异步方式执行所述检测任务,得到检测结果,包括:

所述执行器根据所述检测任务的数量启动多个队列管理工具Celery集群,按照异步方式执行所述检测任务,得到检测结果。

在一些实施例中,所述执行器按照异步方式执行所述检测任务,得到检测结果,包括:

当接收到所述启动检测任务指令时,队列管理工具Celery通过调度进程Beat向Redis队列发布检测任务。

当接收到所述启动监测任务指令时,队列管理工具Celery通过所述调度进程Beat向Redis队列发布监测任务。

所述队列管理工具Celery的工作进程(Workers,多进程模式)采用竞争模式从所述Redis队列中获取并执行所述检测任务,获得所述检测结果。

在本实施例中,通过Python等高级编程语言,依托于Redis+Celery等开源分布式工具,基于IPMITOOL命令实现自动化、长时间、高并发的数据检测任务。通过开源的分布式异步任务处理框架Celery,可以同时支持大量的数据检测任务。

在一些实施例中,所述检测对象名称包括宏引用,所述执行器按照异步方式执行所述检测任务,得到检测结果,包括:

查询是否存在所述宏引用对应的宏变量的当前值;

响应于不存在当前值的情况,重新执行所述宏变量或者定义,获取所述当前值;

响应于存在当前值的情况,获取所述当前值,并以JSON方式将其嵌入至所述检测任务中,执行所述检测任务,得到检测结果。

例如,通过制定一种标准的检测请求描述,来定义各种复杂的数据逻辑关系。我们通过以下JSON结构来定义检测请求:

Ruler={param1:json1,…,paramN:jsonN}

其中,param1-paramN,为检测请求需要的属性名称,json1-jsonN表示该属性的JSON数据。

如某个请求为:

请求解释器通过模式mode来区分获取数据途径(db/scrpt/api),然后执行并保存结果。本实施例支持从数据库(mysql、mssqlserver、oralce等)/python脚本/api等途径获取数据,通过扩展mode,还可以支持更多的数据获取方式。同样,请求的属性也可以按需扩展,以此来适应不同的业务需求。

当请求需要使用某些系统参数/变量如(股市交易日等)或其他检测请求的数据时,本实施例提供一种“宏引用”模式来描述。如:

此请求表示如果ruler检测请求中没有数据或修改时间小于某个时间,则调用回调函数预警。

数据检测周期period,采用CRON格式,同样本实施例中扩展了CRON描述的定义,在其中“day”域参数中加入了“trade_day”选项,表示只在“交易日”执行。如period="1521**trade_day"。

由此,可以解决绝大多数的数据质量检测需求。

“宏变量”具体实现过程如下:

执行器解析含有“宏引用”的检测请求时,先查询是否存在该“宏变量”的当前值,如果没有就重新执行一次(如果需要实时数据,可在使用后删除,保证下一次重新执行)。然后获取其当前值,并以JSON方式将其嵌入到“检测任务”中,然后再继续执行替换后的检测任务。

在一些实施例中,所述宏变量包括数据库及所述数据库连接参数,检测结果集,系统公共函数及参数等的变量;

所述宏变量通过预定方式嵌入至所述宏引用中,其中,所述宏引用通过在SQL语句或脚本中采用预定标识所述宏变量。

在本实施例中,宏变量包括数据库及其数据库连接参数,检测结果集、以及系统内部需要暴露的公共函数或参数等需要在运行时才能确定的变量或参数。

宏变量名在检测请求中name中定义,可以通过特定符号“{{}}”嵌入到需要引用的SQL语句或脚本中。其中,数组模式用“[下标]”,字典(键值对)模式用“.”,如

“{{名称}}”或“{{名称.属性}}”、“{{名称[n].属性}}”等。

通过“宏变量”定义和引用,来描述各类数据之间的依赖关系,其中“宏引用”表现为在SQL语句或脚本中特殊定义的标识,执行器执行时会使用其结果动态替换。

通过Python等高级编程语言,由执行器解释并引用相关“宏变量”,由此来定义检测请求中复杂的环境与数据依赖关系。

通过上述方式,可以自由定义多个数据源数据间的逻辑关系,提供简单的Python脚本来完成复杂的多检测请求逻辑关系。同时具备高度扩展性,来应对复杂的数据检测业务。

在一些实施例中,所述将所述检测结果发送至所述用户交互界面,并按照所述预警方式提示所述质检用户,包括:

通过预警渠道,获取对应的数据预警信息,并将所述预警信息发送至用户交互界面;

接收所述预警信息对应的触发指令,输出预警处理交互界面;

接收并记录所述质检用户对所述预警信息的处理结果。

在本实施例中,通过邮件、微信、钉钉等渠道通知质检用户。质检用户处理完毕后自动归档,以便维护历史的预警信息。

在一些实施例中,如图4所示,还提供一种数据检测装置,所述装置包括:

接收模块402,用于接收质检用户通过用户交互界面输入的待检数据的检测请求,其中,所述待检数据的检测请求包括待检测对象名称及其属性数据、数据检测周期、预警方式,及所述质检用户定义;

有效性测试模块404,用于对所述检测请求按照预定条件进行有效性测试;

任务生成模块406,用于响应于测试通过的情况,按照检测请求的所述数据检测周期和所述优先级加入任务队列,生成检测任务,并将所述检测任务发送至所述执行器;

检测模块408,用于所述执行器按照异步方式执行所述检测任务,得到检测结果;

结果反馈模块410,用于将所述检测结果发送至所述用户交互界面,并按照所述预警方式提示所述质检用户。

上述模块所实现的功能或操作步骤均与上文方法类似,具体参见相应部分,此处不再详述。

图5为本申请另一实施例提供的一种数据检测装置的结构示意图。该数据检测装置4000包括处理器41,还可以包括输入装置42、输出装置43和存储器44。该输入装置42、输出装置43、存储器44和处理器41之间通过总线相互连接。

存储器包括但不限于是随机存储记忆体(random access memory,RAM)、只读存储器(read only memory,ROM)、可擦除可编程只读存储器(erasable programmable readonly memory,EPROM)、或便携式只读存储器(compact disc read only memory,CDROM),该存储器用于相关指令及数据。

输入装置用于输入数据和/或信号,以及输出装置用于输出数据和/或信号。输出装置和输入装置可以是独立的器件,也可以是一个整体的器件。

处理器可以包括是一个或多个处理器,例如包括一个或多个中央处理器(centralprocessing unit,CPU),在处理器是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。处理器还可以包括一个或多个专用处理器,专用处理器可以包括GPU、FPGA等,用于进行加速处理。存储器用于存储网络设备的程序代码和数据。处理器用于调用该存储器中的程序代码和数据,执行上述方法实施例中的步骤。具体可参见方法实施例中的描述,在此不再赘述。

可以理解的是,图5仅仅示出了动作识别装置的简化设计。在实际应用中,动作识别装置还可以分别包含必要的其他元件,包含但不限于任意数量的输入/输出装置、处理器、控制器、存储器等,而所有可以实现本申请实施例的动作识别装置都在本申请的保护范围之内。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。所显示或讨论的相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者通过该计算机可读存储介质进行传输。该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是只读存储器(read onlymemory,ROM),或随机存储存储器(random access memory,RAM),或磁性介质,例如,软盘、硬盘、磁带、磁碟、或光介质,例如,数字通用光盘(digital versatile disc,DVD)、或者半导体介质,例如,固态硬盘(solid state disk,SSD)等。

以上上述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

相关技术
  • 异常数据检测方法及装置、机械故障检测方法及装置
  • 数据线检测方法/装置、地址线检测方法/装置
技术分类

06120112773886