CN113377801A - 数据检验方法、装置、电子设备及计算机存储介质 - Google Patents
数据检验方法、装置、电子设备及计算机存储介质 Download PDFInfo
- Publication number
- CN113377801A CN113377801A CN202010162512.3A CN202010162512A CN113377801A CN 113377801 A CN113377801 A CN 113377801A CN 202010162512 A CN202010162512 A CN 202010162512A CN 113377801 A CN113377801 A CN 113377801A
- Authority
- CN
- China
- Prior art keywords
- target
- information
- query
- target data
- data
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2433—Query languages
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供了一种数据检验方法、装置、电子设备及计算机存储介质。其中,所述数据检验方法包括:从与数据库系统对应的审计日志中,获取进行了数据库查询操作的结构化查询语句;对所述结构化查询语句进行语法解析,根据语法解析结果确定待检验的目标数据分片的信息和所述目标数据分片中的目标查询列的信息;根据所述目标数据分片的信息和所述目标查询列的信息,生成并输出用于对所述目标数据分片中的所述目标查询列进行检验的检验规则。通过本发明实施例,可以自动生成检验规则,提升效率。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种数据检验方法、装置、电子设备及计算机存储介质。
背景技术
随着大数据技术的发展,业务方在运营时探索了数据化运营的新模式,在这种模式中,通过对大数据进行业务分析确定运营策略。而数据化运营需要依赖对高质量的离线业务数据进行分析并能够为业务方提供决策支持。为此,需要对离线数据进行ETL(即离线数据的抽取Extract、转换Transform和加载Load),并产出离线业务数据模型(例如离线表)来进一步进行业务分析和决策。在ETL过程中,对离线业务数据的清洗极为重要,这直接关系到后续所有步骤产出的数据质量,决定了分析的效率和决策的正确性。
现有技术中,离线业务数据的质量检验最常用的方法是对存储离线业务数据的单个数据表中的某一列计算空值率、重复值率、和自定义业务逻辑等。
其中,计算空值率是十分有效的、确定离线业务数据质量的手段。以计算空值率为例,空值率等于数据表中某一列中值为“null”的记录数量在该列记录总数中的占比。空值率可以表示为:count(col is null)/count(*),其中,count(col is null)表示某一列中值为“null”的记录数量,count(*)表示该列所有记录的数量即记录总数。通过空值率可以表征数据表中的某一列是否带有足够多信息,如果空值率高,表示空值比较多,信息量不足,数据出现问题的可能性比较大。
但在某些情况下,例如,若计算空值率的数据表是稀疏表,那么计算出的整个数据表的总体空值率通常很高。但其本质原因是由于数据表稀疏导致的,因此该结果对实际的离线业务数据的质量影响并不大。但在现有的质量检验方式中,该结果会导致服务器清单表中的数据被认定为存在问题,需要排查数据ETL是否有缺陷。
尤其是在一些情况中,一个中间表被多个不同的业务场景使用,而在不同的业务场景的业务语义下,需要使用的中间表中的数据分片不同,这些数据分片的数据质量均需要保证。这种情况下,现有方式在定义检验规则时,只能由用户根据业务语义人工确定中间表中待检查的数据分片。但是,由于业务场景多、规则复杂等因素,导致人工针对每个数据分片逐个设定检验规则的工作量巨大,效率低下,而且无法覆盖全部业务语义和场景。
发明内容
有鉴于此,本发明实施例提供一种数据检验方案,以解决上述部分或全部问题。
根据本发明实施例的第一方面,提供了一种数据检验方法,包括:从与数据库系统对应的审计日志中,获取进行了数据库查询操作的结构化查询语句;对所述结构化查询语句进行语法解析,根据语法解析结果确定待检验的目标数据分片的信息和所述目标数据分片中的目标查询列的信息;根据所述目标数据分片的信息和所述目标查询列的信息,生成并输出用于对所述目标数据分片中的所述目标查询列进行检验的检验规则。
根据本发明实施例的第二方面,提供了一种数据检验装置,包括:获取模块,用于从与数据库系统对应的审计日志中,获取进行了数据库查询操作的结构化查询语句;解析模块,用于对所述结构化查询语句进行语法解析,根据语法解析结果确定待检验的目标数据分片的信息和所述目标数据分片中的目标查询列的信息;生成模块,用于根据所述目标数据分片的信息和所述目标查询列的信息,生成并输出用于对所述目标数据分片中的所述目标查询列进行检验的检验规则。
根据本发明实施例的第三方面,提供了一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如第一方面所述的数据检验方法对应的操作。
根据本发明实施例的第四方面,提供了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面所述的数据检验方法。
根据本发明实施例提供的数据检验方案,可以从审计日志中自动提前出进行了数据库查询操作的结构化查询语句,并通过对结构化查询语句进行语法解析获取待检验的目标数据分片和目标查询列,进而根据目标数据分片的信息和目标查询列的信息自动生成用于对其数据质量进行检验的检验规则,从而解决了现有技术中需要人工根据业务语义切分数据分片并手动根据数据分片生成对应的检验规则,如果业务语义产生变化需要检验其他数据分片时需要手动更改维护检验规则存在的工作量大、效率低的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明实施例中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1a为根据本发明实施例一的一种数据检验方法的步骤流程图;
图1b为根据本发明实施例一的一种数据检验方法的使用场景图;
图2a为根据本发明实施例二的一种数据检验方法的步骤流程图;
图2b为根据本发明实施例二的一种应用数据检验方法的数据库系统的结构示意图。
图3为根据本发明实施例三的一种数据检验装置的结构框图;
图4为根据本发明实施例四的一种电子设备的结构示意图。
具体实施方式
为了使本领域的人员更好地理解本发明实施例中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明实施例一部分实施例,而不是全部的实施例。基于本发明实施例中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本发明实施例保护的范围。
下面结合本发明实施例附图进一步说明本发明实施例具体实现。
实施例一
参照图1a,示出了根据本发明实施例一的一种数据检验方法的步骤流程图。
本实施例的数据检验方法包括以下步骤:
步骤S102:从与数据库系统对应的审计日志中,获取进行了数据库查询操作的结构化查询语句。
数据库系统中的审计日志是一种完整记录用户进行的数据库操作的结构化查询语句(SQL)的日志。其中包括但不限于查询类SQL语句、DDL(Data Definition Language数据库模式定义语言)语句和DML(Data Manipulation Language数据库操纵语言)语句等。进行了数据库查询操作的结构化查询语句也称为查询类SQL语句,其包括但不限于Select语句。通过对审计日志进行分析,可以从审计日志中提取出针对某一数据库的所有用户的查询类SQL语句,或者提取出部分目标用户的全部或部分查询类SQL语句。该类结构化查询语句可以有效反映当前被频繁操作或使用的数据分片,也即,需要对其进行数据检验,以保证其数据质量的数据分片。
在一具体实现中,由于业务需要可能随着时间的变化而变化,因此为了保证时效性,获取的查询类SQL语句为设定时间段内的查询类SQL语句。设定时间段可以根据需要确定,本实施例对此不作限制,例如为1个月、2周、1天、1小时等。
步骤S104:对所述结构化查询语句进行语法解析,根据语法解析结果确定待检验的目标数据分片的信息和所述目标数据分片中的目标查询列的信息。
目标数据分片可以理解为与业务语义对应的,根据业务需求需要保证数据质量的数据分片。目标查询列可以理解为目标数据分片中计算空值率和/或重复率的列,以根据计算结果表征数据质量。其中,业务语义也可以理解为业务需求。
本领域技术人员可以采用任何适当的方式对结构化查询语句进行语法解析,例如,使用现有的开源的SQL解析器进行语法解析,并获得对应的抽象语法树AST,或者使用数据库系统的数据库引擎提供的语法解析SDK进行解析,本实施例对此不作限制。
在一种可行方式中,语法解析出的抽象语法树即可以作为语法解析结果,根据语法解析结果可以获得条件子句,根据获得的条件子句即可确定用户查询操作针对的数据分片和数据分片中的查询列,这些数据分片和数据分片中的查询列是业务场景中经常使用的数据分片和查询列,也就是说是在业务语义下需要保证数据质量的数据分片和查询列,因此可以将这些数据分片确定为目标数据分片,将数据分片中的查询列确定为目标查询列。这样就实现了根据业务语义自动确定待检验的目标数据分片和目标查询列的目的。
下面以一具体的结构化查询语句为例进行说明,获取的结构化查询语句例如为“select*from tb where is_online=true group by biz_status”,其中,tb为数据表的表名,is_online和biz_status为数据表中的两个字段,where子句表示从数据表的is_online=true的数据分片中选取数据,并将选取出的数据按照biz_status进行分组。
在该结构化查询语句中确定的数据表中的目标数据分片为包括is_online字段的字段值为true的那些数据的数据分片,基于此,目标数据分片的信息可以表示为“is_online=true”,biz_status即为该目标数据分片中的目标查询列,基于此,可以将目标查询列的信息表示为“biz_status”。
步骤S106:根据所述目标数据分片的信息和所述目标查询列的信息,生成并输出用于对所述目标数据分片中的所述目标查询列进行检验的检验规则。
针对不同的目标查询列可以进行不同的检验操作,例如,进行空值率检验和/或重复率检验等。本领域技术人员可以根据大数据分析或者根据实际需求设定等方式确定目标查询列对应的检验操作。
在一种具体的生成检验规则的实现中,可以预设检验规则模板,生成检验规则时,将目标数据分片的信息和目标查询列的信息传入预设检验规则模板中,从而生成与目标数据分片和目标查询列对应的检验规则。
后续可以直接将检验规则输出到数据库系统的数据质量引擎中,使数据质量引擎根据检验规则进行检验,并确定目标数据分片的数据质量是否满足需要。其中,数据质量引擎可以是任何能够根据检验规则进行数据质量检验的引擎,例如,任何能够支持自定义配置的接口方式的质检引擎或功能模块均可。
通过上述过程可以实现根据数据库系统的审计日志自动确定目标数据分片和目标查询列,进而根据目标数据分片的信息和目标查询列的信息自动生成检验规则,以便后续对目标数据分片的数据质量进行检验。
如图1b所示,在一具体使用场景中,数据检验方法由检验模块实现,实现过程如下:
从数据库系统的数据库引擎中获取审计日志,对审计日志进行分析,获取其中的查询类SQL语句。通过对查询类SQL语句进行语法解析获取抽象语法树,根据抽象语法树获取其中的条件子句(即where子句),以根据条件子句定义的数据分片进行查询次数计数,以确定目标数据分片,此外,根据抽象语法树中的分组查询子句(即group子句)确定与各个目标数据分片中的查询列作为目标查询列。在确定了目标数据分片和目标查询列后生成相应的检验规则,将其输入数据质量引擎以进行后续的数据检验。
通过本实施例,可以从审计日志中自动提前出进行了数据库查询操作的结构化查询语句,并通过对结构化查询语句进行语法解析获取待检验的目标数据分片和目标查询列,进而根据目标数据分片的信息和目标查询列的信息自动生成用于对其数据质量进行检验的检验规则,从而解决了现有技术中需要人工根据业务语义切分数据分片并手动根据数据分片生成对应的检验规则,如果业务语义产生变化需要检验其他数据分片时需要手动更改检验规则存在的工作量大、效率低的问题。
本实施例的数据检验方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如平板电脑、手机等)和PC机等。
实施例二
参照图2a,示出了根据本发明实施例二的一种数据检验方法的步骤流程图。
在本实施例中,以设置有数据库引擎和数据质量引擎的数据库系统为例,对本发明实施例提供的数据检验方法进行说明。
以下,首先对上述数据库系统的结构进行示意性说明如图2b所示,其中,数据库系统包括存储有审计日志的数据库引擎(例如离线大数据引擎)和根据检验规则对数据进行质量检验的数据质量引擎中的数据质量模块,该数据库系统还包括用于执行本发明实施例的数据检验方法的检验模块,该检验模块可以集成在数据库引擎或者数据质量引擎中,也可以独立于数据库引擎和数据质量引擎设置。在一种具体实现方案中,所述检验模块可以实现为用于实现本发明实施例的数据检验方法的功能模块。图2b所示的检验模块,用于从数据库引擎获取审计日志,进行本实施例中所述的数据检验处理并生成相应的检验规则;进而,由数据质量模块使用该检验规则对从数据库引擎拉取的数据分片进行数据检验并获得检验结果
需要说明的是,数据库引擎不限于特定的数据库引擎,具有审计日志生成和存储功能即可,同理,数据质量引擎的数据质量模块可以是任何能够提供可自定义配置的接口的模块。
基于上述结构,本实施例的数据检验方法包括以下步骤:
步骤S202:从与数据库系统对应的审计日志中,获取进行了数据库查询操作的结构化查询语句。
在一种具体实现中,从数据库系统的数据库引擎中读取出审计日志,并对审计日志进行分析,以提取出预设时间段(例如1天)内的查询类SQL语句(例如Select语句)。虽然审计日志中有可能包含DDL语句和DML语句,但是能够反映业务语义需求的通常为用户的查询类SQL语句,因此只需要从审计日志中提取出查询类SQL语句即可。
步骤S204:对所述结构化查询语句进行语法解析,根据语法解析结果确定待检验的目标数据分片的信息和所述目标数据分片中的目标查询列的信息。
在一具体实现中,获取了结构化查询语句后,为了准确、快速地确定该结构化查询语句对应的业务语义需求的数据分片,步骤S204包括以下子步骤:
子步骤S2041:对所述结构化查询语句进行语法解析,获取与所述结构化查询语句对应的抽象语法树,从所述抽象语法树中获取至少一个条件子句、以及各所述条件子句对应的分组查询子句。
针对从审计日志中的获取的所有结构化查询语句(即查询类SQL语句),本领域技术人员可以采用任何适当的方式进行语法解析,并获得每个查询类SQL语句对应的抽象语法树AST作为语法解析结果。
根据语法解析结果,获取所有查询类SQL语句中包含的条件子句(例如where子句)以及各条件子句对应的分组查询子句(例如group子句)。
每个条件子句都包含条件字段和字段参数,例如,查询类SQL语句:select…from…where is_online=true group by biz_status,其中,条件子句为:where is_online=true,条件字段为:is_online,字段参数为:true。
条件子句对应的分组查询子句包含分组字段,例如,前述的查询类SQL语句中,分组查询子句为:group by biz_status,其中,分组字段为:biz_status。
子步骤S2042:根据各所述条件子句和对应的分组查询子句,确定待检验的目标数据分片的信息和所述目标数据分片中的目标查询列的信息。
由于获取的结构化查询语句中的条件子句指示了该语句操作的数据分片,因此根据条件子句就可以确定对应的数据分片。同理,分组查询子句指示了操作的查询列,因此根据分组查询子句可以确定数据分片中的查询列。
在一具体实现中,子步骤S2042包括以下过程:
过程A:根据各所述条件子句中的条件字段和字段参数,确定至少一个候选数据分片,并从候选数据分片中确定待检验的目标数据分片,获取所述目标数据分片的信息。
在查询类SQL语句中条件子句指示了业务语义中需要的数据分片,即满足where子句的筛选条件的数据分片才是业务语义中关注的数据分片,因此,需要对该数据分片进行数据质量检验,故而将根据条件子句中的条件字段和字段参数确定的数据分片作为数据质量检验的候选数据分片。
例如,前述的where子句中is_online=true的数据记录对应的数据分片作为一个候选数据分片。在实际使用场景中,可能多个查询类SQL语句对应同一个数据分片。
为了提升检验效率,在候选数据分片为多个时,可以仅对其中查询次数较多的数据分片(也就是业务语义中较为重要的数据分片)生成检验规则。
例如,对各所述候选数据分片进行计数,并根据计数结果从所述候选数据分片中确定所述目标数据分片,以获取目标数据分片的信息。
具体地,可以对各所述候选数据分片进行计数,确定用于指示各所述候选数据分片被查询次数的计数值;将各所述候选数据分片的计数值由高到低排序,并从排序结果中选取预设数量的所述候选数据分片确定为所述目标数据分片,以获取目标数据分片的信息。
设从审计日志中获取的查询类SQL语句的数量为100个,而这些查询类SQL语句中确定出的候选数据分片为10个,则可以计算每个候选数据分片对应的查询类SQL语句的数量,即每个候选数据分片的被查询次数。
根据每个候选数据分片的被查询次数,进行降序排序,以确定被查询次数最多的预设数量的候选数据分片作为目标数据分片。
目标数据分片的信息可以是指示该目标数据分片的条件子句中的条件字段和字段参数。例如,前述的is_online=true。
需要说明的是,预设数量可以根据需要设置,在本实施例中,预设数量为正整数。
过程B:根据各所述条件子句对应的分组查询子句的分组字段,确定各所述候选数据分片中的查询列,将所述目标数据分片中的查询列作为目标查询列,获取目标查询列的信息。
分组查询子句对应的分组字段表示是业务语义中比较关注的查询列,因此可以通过该查询列的空值率和/或重复率等表征对应的数据分片的数据质量,故而将分组查询子句的分组字段确定为候选数据分片中的查询列。
例如,前述的group子句中的biz_status即为对应的is_online=true的数据分片中的查询列。
由于各数据分片均具有对应的查询列,因此,在确定目标数据分片后,根据该对应关系就可以将目标数据分片中的查询列作为目标查询列。
目标查询列的信息可以是指示目标查询列的分组字段。例如,前述的biz_status。
在同一目标数据分片对应多个不同的查询列的情况,可以再对查询列的被查询次数进行计数,选取计数值最高的查询列作为与该目标数据分片对应的目标查询列。或者,也可以将与目标数据分片对应的所有查询列均确定为目标查询列,本实施例对此不作限制。
通过计数的方式可以准确地确定业务查询数量较多的数据分片,也就是对业务而言重要的数据分片,从而可以将其确定为目标数据分片,这样不仅保证了准确性,而且提升了效率。
步骤S206:根据所述目标数据分片的信息和所述目标查询列的信息,生成并输出用于对所述目标数据分片中的所述目标查询列进行检验的检验规则。
在本实施例中,可以根据目标数据分片的信息和所述目标查询列的信息生成新的检验规则,也可以针对已有的检验规则进行更新,使其能够适应业务场景的业务语义,解决现有技术中由于查询分析的业务场景多、逻辑复杂、并且经常变化的原因导致的数据质量检验的检验规则维护工作量大、不能及时适应业务场景需求变化的问题。
在一种可行方式中,生成新的检验规则时,步骤S206包括以下子步骤:
子步骤S2061a:根据目标查询列的信息,从预设的配置文件中确定用于对所述目标查询列进行检验的原始检验规则。
用户可以根据业务需要将一些目标查询列对应的检验项目的原始检验规则预设在配置文件中,这样在根据审计日志获取目标数据分片的信息和目标查询列的信息后,根据配置文件查找到目标查询列对应的原始检验规则,后续可以根据目标数据分片的信息和目标查询列的信息对原始检验规则进行改写就可以生成新的检验规则。通过配置文件的方式,一方面配置文件的适用性更好,借助于现有配置文件的处理流程即可实现,降低了实现成本;另一方面,配置文件占用空间较小,可以有效节省方案实现所需资源。
子步骤S2062a:根据所述目标数据分片的信息和所述原始检验规则,生成并输出用于指示对所述目标数据分片中的所述目标查询列进行检验的检验规则。
例如,将所述目标数据分片的信息作为所述原始检验规则中用于指示待检验的数据分片的参数,生成并输出用于指示对所述目标数据分片中的所述目标查询列进行检验的检验规则。
在一具体示例中,从审计日志中获取的查询列SQL语句中,针对数据表的表名为“ecs_dw.nc_full_table”的数据表,确定目标数据分片的信息为“is_online_nc=true”,目标数据分片中的目标查询列的信息为“ip”。
根据目标查询列查找配置文件,确定该目标查询列对应的用于计算空值率的原始检验规则。原始检验规则例如为:select count(目标查询列is null)/count(*)as ratefrom ecs_dw.nc_full_table where ds='${bizdate}'and目标数据分片。
将目标数据分片的信息和目标查询列的信息作为参数传入原始检验规则中,就可以生成新的检验规则,即:select count(ip is null)/count(*)as rate from ecs_dw.nc_full_table where ds='${bizdate}'and is_online_nc=true。
或者,根据目标查询列查询配置文件,确定与目标查询列对应的用于计算重复率的原始检验规则。原始检验规则例如为:select count(*)from(select目标查询列fromecs_dw.nc_full_table where ds='${bizdate}'and目标数据分片group by目标查询列having count(*)>1)a。
将目标数据分片的信息和目标查询列的信息作为参数传入原始检验规则中,就可以生成新的检验规则,即:select count(*)from(select ip from ecs_dw.nc_full_tablewhere ds='${bizdate}'and is_online_nc group by ip having count(*)>1)a。
这样实现了自动化地生成新的检验规则,而且当业务语义变换,查询次数较多的数据分片也会随之变化,此时根据审计日志获得的目标数据分片也会随之变化,进而可以生成针对新的目标数据分片的检验规则,由此实现了准确、自动地根据业务语义生成检验规则。
在另一种可行方式中,更新已有的检验规则时,所述步骤S206包括以下子步骤:
子步骤S2061b:根据所述目标查询列的信息,从数据质量引擎中获取用于对所述目标查询列进行检验的检验规则。
针对不同的数据质量引擎可以采用与之对应的方式查询与目标查询列对应的检验规则,本实施例对此不作限制。
子步骤S2062b:根据所述目标数据分片的信息,将匹配的所述检验规则更新为用于指示对所述目标数据分片中的所述目标查询列进行检验的检验规则并输出。
在本步骤中更新检验规则的方式可以与前述子步骤S2062a中的方式相同,故不再赘述。
这样可以实现针对已有的检验规则根据业务语义进行自动更新,无需工作人员手动维护检验规则,减少了工作量。
生成的检验规则可以输出到数据质量引擎,由数据质量引擎根据检验规则对相应的目标数据分片的数据质量进行检验,以及时发现不满足需求的数据分片,从而保证后续数据分析的质量。
在本实施例中,通过自动解析包含用户使用数据、分析数据的行为信息的审计日志,自动生成检验规则,并且随着时间推移,自动可以分析业务场景需求变化,充分地利用了审计日志,实现了根据审计日志自动化提取业务逻辑对应的数据分片,并针对数据分片自动化生成检验数据质量的检验规则,实现了高效的数据质量检查,实现无人值守的情况下自动根据业务逻辑的变化而对相应的数据分片进行数据质量自动巡检,解决了现有技术中需要人工根据业务场景来自定义各种数据质量检验规则,导致工作量大,效果差的问题。
通过本实施例,可以从审计日志中自动提前出进行了数据库查询操作的结构化查询语句,并通过对结构化查询语句进行语法解析获取待检验的目标数据分片和目标查询列,进而根据目标数据分片的信息和目标查询列的信息自动生成用于对其数据质量进行检验的检验规则,从而解决了现有技术中需要人工根据业务语义切分数据分片并手动维护检验规则存在的工作量大、效率低的问题。
本实施例的方法实现了自动化地根据记录用户查询、分析操作的审计日志切分出数据切片,并且精确地生成符合业务语义需求的数据质量检验规则。解决了现有技术中的数据质量检验方法,需要用户自定义SQL或检验规则,手工配置待检验的数据分片的方式存在的:当一张公共的中间表,被大量应用到不同的业务场景中,每个业务场景需要检验的数据分片不尽相同时,需要人工根据每个业务场景定制对应的检验规则和数据分片,工作量大、且随着各业务场景的需求变化,需要手工维护和配置规则,导致维护难度大的问题。
本实施例的数据检验方法可以由任意适当的具有数据处理能力的电子设备执行,包括但不限于:服务器、移动终端(如平板电脑、手机等)和PC机等。
实施例三
参照图3,示出了根据本发明实施例三的一种数据检验装置的结构框图。
本实施例的数据检验装置包括:获取模块302,用于从与数据库系统对应的审计日志中,获取进行了数据库查询操作的结构化查询语句;解析模块304,用于对所述结构化查询语句进行语法解析,根据语法解析结果确定待检验的目标数据分片的信息和所述目标数据分片中的目标查询列的信息;生成模块306,用于根据所述目标数据分片的信息和所述目标查询列的信息,生成并输出用于对所述目标数据分片中的所述目标查询列进行检验的检验规则。
可选地,所述解析模块304包括:子句提取模块3041,用于对所述结构化查询语句进行语法解析,获取与所述结构化查询语句对应的抽象语法树,从所述抽象语法树中获取至少一个条件子句、以及各所述条件子句对应的分组查询子句;确定模块3042,用于根据各所述条件子句和对应的分组查询子句,确定待检验的目标数据分片的信息和所述目标数据分片中的目标查询列的信息。
可选地,所述确定模块3042包括:数据分片确定模块,用于根据各所述条件子句中的条件字段和字段参数,确定至少一个候选数据分片,并从候选数据分片中确定待检验的目标数据分片,获取所述目标数据分片的信息;查询列确定模块,用于根据各所述条件子句对应的分组查询子句的分组字段,确定各所述候选数据分片中的查询列,并将所述目标数据分片中的查询列作为目标查询列,获取目标查询列的信息。
可选地,所述数据分片确定模块用于根据各所述条件子句中的条件字段和字段参数确定至少一个候选数据分片,对各所述候选数据分片进行计数,并根据计数结果从所述候选数据分片中确定所述目标数据分片,获取目标数据分片的信息。
可选地,所述数据分片确定模块用于根据各所述条件子句中的条件字段和字段参数确定至少一个候选数据分片,对各所述候选数据分片进行计数,确定用于指示各所述候选数据分片被查询次数的计数值;将各所述候选数据分片的计数值由高到低排序,并从排序结果中选取预设数量的所述候选数据分片确定为所述目标数据分片,获取目标数据分片的信息。
可选地,所述生成模块306包括:第一匹配模块3061a,用于根据目标查询列的信息,从预设的配置文件中确定用于对所述目标查询列进行检验的原始检验规则;第一规则生成模块3062a,用于根据所述目标数据分片的信息和所述原始检验规则,生成并输出用于指示对所述目标数据分片中的所述目标查询列进行检验的检验规则。
可选地,所述第一规则生成模块3062a用于将所述目标数据分片的信息作为所述原始检验规则中、用于指示待检验的数据分片的参数,生成并输出用于指示对所述目标数据分片中的所述目标查询列进行检验的检验规则。
可选地,所述生成模块306包括:第二匹配模块3061b,用于根据所述目标查询列的信息,从数据质量引擎中获取用于对所述目标查询列进行检验的检验规则;第二规则生成模块3062b,用于根据所述目标数据分片的信息,将匹配的所述检验规则更新为用于指示对所述目标数据分片中的所述目标查询列进行检验的检验规则并输出。
本实施例的数据检验装置用于实现前述多个方法实施例中相应的数据检验方法,并具有相应的方法实施例的有益效果,在此不再赘述。此外,本实施例的数据检验装置中的各个模块的功能实现均可参照前述方法实施例中的相应部分的描述,在此亦不再赘述。
实施例四
参照图4,示出了根据本发明实施例六的一种电子设备的结构示意图,本发明具体实施例并不对电子设备的具体实现做限定。
如图4所示,该电子设备可以包括:处理器(processor)402、通信接口(Communications Interface)404、存储器(memory)406、以及通信总线408。
其中:
处理器402、通信接口404、以及存储器406通过通信总线408完成相互间的通信。
通信接口404,用于与其它电子设备如终端设备或服务器进行通信。
处理器402,用于执行程序410,具体可以执行上述数据检验方法实施例中的相关步骤。
具体地,程序410可以包括程序代码,该程序代码包括计算机操作指令。
处理器402可能是中央处理器CPU,或者是特定集成电路ASIC(ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。电子设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器406,用于存放程序410。存储器406可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序410具体可以用于使得处理器402执行以下操作:从与数据库系统对应的审计日志中,获取进行了数据库查询操作的结构化查询语句;对所述结构化查询语句进行语法解析,根据语法解析结果确定待检验的目标数据分片的信息和所述目标数据分片中的目标查询列的信息;根据所述目标数据分片的信息和所述目标查询列的信息,生成并输出用于对所述目标数据分片中的所述目标查询列进行检验的检验规则。
在一种可选的实施方式中,程序410还用于使得处理器402在对所述结构化查询语句进行语法解析,根据语法解析结果确定待检验的目标数据分片的信息和所述目标数据分片中的目标查询列的信息时,对所述结构化查询语句进行语法解析,获取与所述结构化查询语句对应的抽象语法树,从所述抽象语法树中获取至少一个条件子句、以及各所述条件子句对应的分组查询子句;根据各所述条件子句和对应的分组查询子句,确定待检验的目标数据分片的信息和所述目标数据分片中的目标查询列的信息。
在一种可选的实施方式中,程序410还用于使得处理器402在根据各所述条件子句和对应的分组查询子句,确定待检验的目标数据分片的信息和所述目标数据分片中的目标查询列的信息时,根据各所述条件子句中的条件字段和字段参数,确定至少一个候选数据分片,并从候选数据分片中确定待检验的目标数据分片,获取所述目标数据分片的信息;根据各所述条件子句对应的分组查询子句的分组字段,确定各所述候选数据分片中的查询列,并将所述目标数据分片中的查询列作为目标查询列,获取目标查询列的信息。
在一种可选的实施方式中,程序410还用于使得处理器402在从候选数据分片中确定待检验的目标数据分片,获取所述目标数据分片的信息时,对各所述候选数据分片进行计数,并根据计数结果从所述候选数据分片中确定所述目标数据分片,获取目标数据分片的信息。
在一种可选的实施方式中,程序410还用于使得处理器402在对各所述候选数据分片进行计数,并根据计数结果从所述候选数据分片中确定所述目标数据分片,获取目标数据分片的信息时,对各所述候选数据分片进行计数,确定用于指示各所述候选数据分片被查询次数的计数值;将各所述候选数据分片的计数值由高到低排序,并从排序结果中选取预设数量的所述候选数据分片确定为所述目标数据分片,获取目标数据分片的信息。
在一种可选的实施方式中,程序410还用于使得处理器402在根据所述目标数据分片的信息和所述目标查询列的信息,生成并输出用于对所述目标数据分片中的所述目标查询列进行检验的检验规则时,根据目标查询列的信息,从预设的配置文件中确定用于对所述目标查询列进行检验的原始检验规则;根据所述目标数据分片的信息和所述原始检验规则,生成并输出用于指示对所述目标数据分片中的所述目标查询列进行检验的检验规则。
在一种可选的实施方式中,程序410还用于使得处理器402在根据所述目标数据分片的信息和所述原始检验规则,生成并输出用于指示对所述目标数据分片中的所述目标查询列进行检验的检验规则时,将所述目标数据分片的信息作为所述原始检验规则中、用于指示待检验的数据分片的参数,生成并输出用于指示对所述目标数据分片中的所述目标查询列进行检验的检验规则。
在一种可选的实施方式中,程序410还用于使得处理器402在根据所述目标数据分片的信息和所述目标查询列的信息,生成并输出用于对所述目标数据分片中的所述目标查询列进行检验的检验规则时,根据所述目标查询列的信息,从数据质量引擎中获取用于对所述目标查询列进行检验的检验规则;根据所述目标数据分片的信息,将匹配的所述检验规则更新为用于指示对所述目标数据分片中的所述目标查询列进行检验的检验规则并输出。
程序410中各步骤的具体实现可以参见上述数据检验方法实施例中的相应步骤和单元中对应的描述,在此不赘述。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的设备和模块的具体工作过程,可以参考前述方法实施例中的对应过程描述,在此不再赘述。
通过本实施例的电子设备,可以从审计日志中自动提前出进行了数据库查询操作的结构化查询语句,并通过对结构化查询语句进行语法解析获取待检验的目标数据分片和目标查询列,进而根据目标数据分片的信息和目标查询列的信息自动生成用于对其数据质量进行检验的检验规则,从而解决了现有技术中需要人工根据业务语义切分数据分片并手动根据数据分片生成对应的检验规则,如果业务语义产生变化需要检验其他数据分片时需要手动更改维护检验规则存在的工作量大、效率低的问题。
需要指出,根据实施的需要,可将本发明实施例中描述的各个部件/步骤拆分为更多部件/步骤,也可将两个或多个部件/步骤或者部件/步骤的部分操作组合成新的部件/步骤,以实现本发明实施例的目的。
上述根据本发明实施例的方法可在硬件、固件中实现,或者被实现为可存储在记录介质(诸如CD ROM、RAM、软盘、硬盘或磁光盘)中的软件或计算机代码,或者被实现通过网络下载的原始存储在远程记录介质或非暂时机器可读介质中并将被存储在本地记录介质中的计算机代码,从而在此描述的方法可被存储在使用通用计算机、专用处理器或者可编程或专用硬件(诸如ASIC或FPGA)的记录介质上的这样的软件处理。可以理解,计算机、处理器、微处理器控制器或可编程硬件包括可存储或接收软件或计算机代码的存储组件(例如,RAM、ROM、闪存等),当所述软件或计算机代码被计算机、处理器或硬件访问且执行时,实现在此描述的数据检验方法。此外,当通用计算机访问用于实现在此示出的数据检验方法的代码时,代码的执行将通用计算机转换为用于执行在此示出的数据检验方法的专用计算机。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明实施例的范围。
以上实施方式仅用于说明本发明实施例,而并非对本发明实施例的限制,有关技术领域的普通技术人员,在不脱离本发明实施例的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明实施例的范畴,本发明实施例的专利保护范围应由权利要求限定。
Claims (11)
1.一种数据检验方法,包括:
从与数据库系统对应的审计日志中,获取进行了数据库查询操作的结构化查询语句;
对所述结构化查询语句进行语法解析,根据语法解析结果确定待检验的目标数据分片的信息和所述目标数据分片中的目标查询列的信息;
根据所述目标数据分片的信息和所述目标查询列的信息,生成并输出用于对所述目标数据分片中的所述目标查询列进行检验的检验规则。
2.根据权利要求1所述的方法,其中,所述对所述结构化查询语句进行语法解析,根据语法解析结果确定待检验的目标数据分片的信息和所述目标数据分片中的目标查询列的信息,包括:
对所述结构化查询语句进行语法解析,获取与所述结构化查询语句对应的抽象语法树,从所述抽象语法树中获取至少一个条件子句、以及各所述条件子句对应的分组查询子句;
根据各所述条件子句和对应的分组查询子句,确定待检验的目标数据分片的信息和所述目标数据分片中的目标查询列的信息。
3.根据权利要求2所述的方法,其中,所述根据各所述条件子句和对应的分组查询子句,确定待检验的目标数据分片的信息和所述目标数据分片中的目标查询列的信息,包括:
根据各所述条件子句中的条件字段和字段参数,确定至少一个候选数据分片,并从候选数据分片中确定待检验的目标数据分片,获取所述目标数据分片的信息;
根据各所述条件子句对应的分组查询子句的分组字段,确定各所述候选数据分片中的查询列,并将所述目标数据分片中的查询列作为目标查询列,获取目标查询列的信息。
4.根据权利要求3所述的方法,其中,所述从候选数据分片中确定待检验的目标数据分片,获取所述目标数据分片的信息,包括:
对各所述候选数据分片进行计数,并根据计数结果从所述候选数据分片中确定所述目标数据分片,获取目标数据分片的信息。
5.根据权利要求4所述的方法,其中,所述对各所述候选数据分片进行计数,并根据计数结果从所述候选数据分片中确定所述目标数据分片,获取目标数据分片的信息,包括:
对各所述候选数据分片进行计数,确定用于指示各所述候选数据分片被查询次数的计数值;
将各所述候选数据分片的计数值由高到低排序,并从排序结果中选取预设数量的所述候选数据分片确定为所述目标数据分片,获取目标数据分片的信息。
6.根据权利要求1-5中任一项所述的方法,其中,所述根据所述目标数据分片的信息和所述目标查询列的信息,生成并输出用于对所述目标数据分片中的所述目标查询列进行检验的检验规则,包括:
根据目标查询列的信息,从预设的配置文件中确定用于对所述目标查询列进行检验的原始检验规则;
根据所述目标数据分片的信息和所述原始检验规则,生成并输出用于指示对所述目标数据分片中的所述目标查询列进行检验的检验规则。
7.根据权利要求6所述的方法,其中,所述根据所述目标数据分片的信息和所述原始检验规则,生成并输出用于指示对所述目标数据分片中的所述目标查询列进行检验的检验规则,包括:
将所述目标数据分片的信息作为所述原始检验规则中、用于指示待检验的数据分片的参数,生成并输出用于指示对所述目标数据分片中的所述目标查询列进行检验的检验规则。
8.根据权利要求1-5中任一项所述的方法,其中,所述根据所述目标数据分片的信息和所述目标查询列的信息,生成并输出用于对所述目标数据分片中的所述目标查询列进行检验的检验规则,包括:
根据所述目标查询列的信息,从数据质量引擎中获取用于对所述目标查询列进行检验的检验规则;
根据所述目标数据分片的信息,将匹配的所述检验规则更新为用于指示对所述目标数据分片中的所述目标查询列进行检验的检验规则并输出。
9.一种数据检验装置,包括:
获取模块,用于从与数据库系统对应的审计日志中,获取进行了数据库查询操作的结构化查询语句;
解析模块,用于对所述结构化查询语句进行语法解析,根据语法解析结果确定待检验的目标数据分片的信息和所述目标数据分片中的目标查询列的信息;
生成模块,用于根据所述目标数据分片的信息和所述目标查询列的信息,生成并输出用于对所述目标数据分片中的所述目标查询列进行检验的检验规则。
10.一种电子设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-8中任一项所述的数据检验方法对应的操作。
11.一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现如权利要求1-8中任一所述的数据检验方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010162512.3A CN113377801A (zh) | 2020-03-10 | 2020-03-10 | 数据检验方法、装置、电子设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010162512.3A CN113377801A (zh) | 2020-03-10 | 2020-03-10 | 数据检验方法、装置、电子设备及计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113377801A true CN113377801A (zh) | 2021-09-10 |
Family
ID=77568809
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010162512.3A Pending CN113377801A (zh) | 2020-03-10 | 2020-03-10 | 数据检验方法、装置、电子设备及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113377801A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117390106A (zh) * | 2023-12-11 | 2024-01-12 | 杭州网易云音乐科技有限公司 | 数据处理方法、装置、存储介质和计算设备 |
-
2020
- 2020-03-10 CN CN202010162512.3A patent/CN113377801A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117390106A (zh) * | 2023-12-11 | 2024-01-12 | 杭州网易云音乐科技有限公司 | 数据处理方法、装置、存储介质和计算设备 |
CN117390106B (zh) * | 2023-12-11 | 2024-03-12 | 杭州网易云音乐科技有限公司 | 数据处理方法、装置、存储介质和计算设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20190197174A1 (en) | Method and system for replicating data to heterogeneous database and detecting synchronization error of heterogeneous database through sql packet analysis | |
CN111210842B (zh) | 语音质检方法、装置、终端及计算机可读存储介质 | |
CN109933514B (zh) | 一种数据测试方法和装置 | |
CN110427188B (zh) | 单测断言程序的配置方法、装置、设备及存储介质 | |
CN111400186A (zh) | 性能测试方法及系统 | |
CN110209700B (zh) | 一种数据流关联方法、装置、电子设备及存储介质 | |
US20190370152A1 (en) | Automatic intelligent cloud service testing tool | |
US9037552B2 (en) | Methods for analyzing a database and devices thereof | |
US8489631B2 (en) | Distributing a query | |
CN115757150A (zh) | 一种生产环境测试方法、装置、设备及存储介质 | |
CN107871055B (zh) | 一种数据分析方法和装置 | |
CN113377801A (zh) | 数据检验方法、装置、电子设备及计算机存储介质 | |
US10003492B2 (en) | Systems and methods for managing data related to network elements from multiple sources | |
CN107273293B (zh) | 大数据系统性能测试方法、装置及电子设备 | |
CN115576831A (zh) | 一种测试案例推荐方法、装置、设备及存储介质 | |
CN115455091A (zh) | 数据生成方法、装置、电子设备和存储介质 | |
CN115048359A (zh) | 一种多类型接入数据源的通用数据处理架构设计方法 | |
CN110781647B (zh) | 一种基于Flink实现数据格式校验的方法 | |
CN111399843B (zh) | 将sql运行信息映射到sql文件的方法、系统及电子设备 | |
CN113868141A (zh) | 数据测试方法、装置、电子设备及存储介质 | |
CN113342632A (zh) | 仿真数据自动化处理方法、装置、电子设备及存储介质 | |
CN113010483A (zh) | 一种海量日志管理方法和系统 | |
CN116401177B (zh) | 一种ddl正确性检测方法、设备及介质 | |
CN117331926B (zh) | 一种数据稽核方法、装置、电子设备和存储介质 | |
CN116401410B (zh) | 多场景图数据库接入图谱数据的方法、装置、存储介质和设备 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40058147 Country of ref document: HK |