CN115658072A - 数据血缘解析方法、装置、设备及计算机可读存储介质 - Google Patents

数据血缘解析方法、装置、设备及计算机可读存储介质 Download PDF

Info

Publication number
CN115658072A
CN115658072A CN202211382215.5A CN202211382215A CN115658072A CN 115658072 A CN115658072 A CN 115658072A CN 202211382215 A CN202211382215 A CN 202211382215A CN 115658072 A CN115658072 A CN 115658072A
Authority
CN
China
Prior art keywords
sql
relationship
target
blood
keywords
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
Application number
CN202211382215.5A
Other languages
English (en)
Inventor
贾晓惠
段容
崔莹琰
苏建清
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Construction Bank Corp
CCB Finetech Co Ltd
Original Assignee
China Construction Bank Corp
CCB Finetech Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by China Construction Bank Corp, CCB Finetech Co Ltd filed Critical China Construction Bank Corp
Priority to CN202211382215.5A priority Critical patent/CN115658072A/zh
Publication of CN115658072A publication Critical patent/CN115658072A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种数据血缘解析方法、装置、设备及计算机可读存储介质。其中,该方法包括:获取SQL语句;将SQL语句输入至自定义语法的Antrl解析器中,得到抽象语法树,抽象语法树包括自定义语法中的多个关键字;基于自定义语法和关键字,将抽象语法树封装成多个目标片段,目标片段为包括目标关键字的SQL片段;对目标片段进行解析,得到SQL业务对象,SQL业务对象包括插入表对象、插入字段对象和SQL片段对象;基于插入表、插入字段和SQL片段对象,构建字段间的血缘关系和表间的血缘关系。根据本申请实施例的数据血缘解析方法,能够根据自定义的语法规则对SQL进行解析,满足更多的语法解析需求,以及实现数据血缘解析方案的落地。

Description

数据血缘解析方法、装置、设备及计算机可读存储介质
技术领域
本申请属于数据血缘解析技术领域,尤其涉及一种数据血缘解析方法、装置、设备及计算机可读存储介质。
背景技术
在大数据时代背景下,复杂丰富的数据信息之间,通过联合整合、转化变换,加工生成新的数据。新数据从其生产、加工整合、变换流通到最终被应用,会与加工前的原始数据之间存在关联关系,这种数据间的关联关系可以称为数据血缘关系,即数据间的链路关系。
数据血缘解析是实现数据血缘的一种技术手段。现有技术中,有专门的解析器可以对SQL语句进行解析。但是,JSQLParser解析器和Druid解析器无法灵活根据需求的语法生成解析器,而Antlr解析器并非专门的SQL解析器,不能直接对SQL进行解析。
发明内容
本申请实施例提供了一种数据血缘解析方法、装置、设备、计算机可读存储介质及计算机程序产品,能够根据自定义的语法规则对SQL进行解析,满足更多的语法解析需求,以及实现数据血缘解析方案的落地。
第一方面,本申请实施例提供了一种数据血缘解析方法,该方法包括:
获取SQL语句;
将所述SQL语句输入至自定义语法的Antrl解析器中,得到抽象语法树,所述抽象语法树包括所述自定义语法中的多个关键字;
基于所述自定义语法和所述关键字,将所述抽象语法树封装成多个目标片段,所述目标片段为包括目标关键字的SQL片段;
对所述目标片段进行解析,得到SQL业务对象,所述SQL业务对象包括插入表对象、插入字段对象和SQL片段对象;
基于所述插入表对象、所述插入字段对象和所述SQL片段对象,构建字段间的血缘关系和表间的血缘关系。
在一种可能的实现方式中,所述SQL片段对象包括from业务对象;
所述基于所述插入表对象、所述插入字段对象和所述SQL片段对象,构建字段间的血缘关系和表间的血缘关系,包括:
从所述插入表对象中获取插入表信息,以及从所述from业务对象中获取虚拟表信息;
基于所述插入表信息,遍历构建插入表的字段与对应的select表达式的字段的第一血缘关系,以及基于所述虚拟表信息,遍历构建虚拟表的字段与对应的select表达式的字段的第二血缘关系;
将所述第一血缘关系和所述第二血缘关系确定为字段间的血缘关系。
在一种可能的实现方式中,所述基于所述插入表对象、所述插入字段对象和所述SQL片段对象,构建字段间的血缘关系和表间的血缘关系,包括:
从所述第一血缘关系中获取与所述插入表对应的第一上游表;
在所述第一上游表为物理表的情况下,构建所述插入表与所述第一上游表之间的第三血缘关系;
将所述第三血缘关系确定为所述表间的血缘关系。
在一种可能的实现方式中,所述方法还包括:
在所述第一上游表为虚拟表的情况下,遍历所述虚拟表对应的第二血缘关系;
从所述第二血缘关系中获取与所述虚拟表对应的第二上游表;
在所述第二上游表为物理表的情况下,构建所述插入表和所述第二上游表之间的第四血缘关系;
将所述第四血缘关系确定为所述表间的血缘关系。
在一种可能的实现方式中,所述获取SQL语句,包括:
利用文件浏览器ES获取数据库日志;
基于预设关键字,从所述数据库日志中抽取具有血缘关系的SQL语句,其中,所述预设关键字用于表征血缘关系。
在一种可能的实现方式中,所述获取SQL语句,包括:
获取SQL脚本;
对所述SQL脚本进行作业关联,确定目标SQL脚本,所述目标SQL脚本为实际应用的SQL脚本;
实例化运行所述目标SQL脚本,得到与所述目标SQL脚本对应的脚本日志;
从所述脚本日志中抽取SQL语句。
第二方面,本申请实施例提供了一种数据血缘解析装置,该装置包括:
获取模块,用于获取SQL语句;
输入模块,用于将所述SQL语句输入至自定义语法的Antrl解析器中,得到抽象语法树,所述抽象语法树包括所述自定义语法中的多个关键字;
封装模块,用于基于所述自定义语法和所述关键字,将所述抽象语法树封装成多个目标片段,所述目标片段为包括目标关键字的SQL片段;
解析模块,用于对所述目标片段进行解析,得到SQL业务对象,所述SQL业务对象包括插入表对象、插入字段对象和SQL片段对象;
构建模块,用于基于所述插入表对象、所述插入字段对象和所述SQL片段对象,构建字段间的血缘关系和表间的血缘关系。
第三方面,本申请实施例提供了一种电子设备,该设备包括:处理器以及存储有计算机程序指令的存储器;
所述处理器执行所述计算机程序指令时实现上述第一方面中任一种可能的实现方法中的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序指令,计算机程序指令被处理器执行时实现上述第一方面中任一种可能的实现方法中的方法。
第五方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品中的指令由电子设备的处理器执行时,使得电子设备执行如上述第一方面中任一种可能的实现方法中的方法。
本申请实施例的数据血缘解析方法、装置、设备、计算机可读存储介质及计算机程序产品,通过基于Antrl解析器自定义开发SQL语法解析规则,以及将待解析的SQL语句输入至自定义语法的Antrl解析器中,能够基于自定义语法中的关键字生成抽象语法树。通过基于自定义语法和关键字将抽象语法树封装成多个目标片段,以及对目标片段进行解析,能够得到插入表对象、插入字段对象和SQL片段对象等SQL业务对象。通过基于SQL业务对象构建字段间的血缘关系和表间的血缘关系,能够实现数据血缘解析方案的落地。如此,根据本申请实施例,能够根据自定义的语法规则对SQL进行解析,满足更多的语法解析需求,以及实现数据血缘解析方案的落地。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单的介绍,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据血缘解析方法的流程示意图;
图2是本申请实施例提供的一种实时轮询查询SQL物料的流程示意图;
图3是本申请实施例提供的一种离线查询SQL物料的流程示意图;
图4是本申请实施例提供的一种获取基于SQL脚本的SQL语句的流程示意图;
图5是本申请实施例提供的一种构建from业务对象的流程示意图;
图6是本申请实施例提供的一种构建projection业务对象的流程示意图;
图7是本申请实施例提供的一种构建where业务对象的流程示意图;
图8是本申请实施例提供的一种通过SQL解析消费服务对SQL语句进行处理的流程示意图;
图9是本申请实施例提供的一种解析服务SQL业务对象的示意图;
图10是本申请实施例提供的一种构建SQL血缘的流程示意图;
图11是本申请实施例提供的一种血缘服务输出信息的示意图;
图12是本申请实施例提供的一种数据血缘解析装置的结构示意图;
图13是本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将详细描述本申请的各个方面的特征和示例性实施例,为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本申请进行进一步详细描述。应理解,此处所描述的具体实施例仅意在解释本申请,而不是限定本申请。对于本领域技术人员来说,本申请可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本申请的示例来提供对本申请更好的理解。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
另外,本申请技术方案中对数据的获取、存储、使用、处理等均符合国家法律法规的相关规定。
如背景技术部分所述,为了解决现有技术问题,本申请实施例提供了一种数据血缘解析方法、装置、设备、计算机可读存储介质及计算机程序产品。
下面首先对本申请实施例所提供的数据血缘解析方法进行介绍。
图1示出了本申请实施例提供的一种数据血缘解析方法的流程示意图。如图1所示,本申请实施例提供的数据血缘解析方法包括以下步骤:
S110、获取SQL语句;
S120、将SQL语句输入至自定义语法的Antrl解析器中,得到抽象语法树,抽象语法树包括自定义语法中的多个关键字;
S130、基于自定义语法和关键字,将抽象语法树封装成多个目标片段,目标片段为包括目标关键字的SQL片段;
S140、对目标片段进行解析,得到SQL业务对象,SQL业务对象包括插入表对象、插入字段对象和SQL片段对象;
S150、基于插入表对象、插入字段对象和SQL片段对象,构建字段间的血缘关系和表间的血缘关系。
本申请实施例的数据血缘解析方法通过基于Antrl解析器自定义开发SQL语法解析规则,以及将待解析的SQL语句输入至自定义语法的Antrl解析器中,能够基于自定义语法中的关键字生成抽象语法树。通过基于自定义语法和关键字将抽象语法树封装成多个目标片段,以及对目标片段进行解析,能够得到插入表对象、插入字段对象和SQL片段对象等SQL业务对象。通过基于SQL业务对象构建字段间的血缘关系和表间的血缘关系,能够实现数据血缘解析方案的落地。如此,根据本申请实施例,能够根据自定义的语法规则对SQL进行解析,满足更多的语法解析需求,以及实现数据血缘解析方案的落地。
下面介绍上述各个步骤的具体实现方式。
在一些实施例中,在S110中,SQL语句可以是承载数据关系的物料。SQL物料可以从数据库日志中采集,也可以从脚本中采集。其中,脚本作为数据加工的载体,蕴含着业务逻辑和数据关系,若能通过批量解析这些数据脚本,自动提炼出背后的数据逻辑,则可以实现数据血缘的解析。另外,数据库日志作为脚本运行的实例化数据,也可以具有这样的功能。
基于此,为了得到基于数据库日志的SQL语句,在一些实施例中,上述S110具体可以包括:
利用文件浏览器ES获取数据库日志;
基于预设关键字,从数据库日志中抽取具有血缘关系的SQL语句,其中,预设关键字用于表征血缘关系。
这里,数据库日志可以按日存放在文件浏览器ES中。利用文件浏览器ES获取数据库日志可以是查询ES中存储的数据库日志。其中,为了查询ES中存储的数据库日志,可以先对ES进行初始配置,即配置实时获取SQL物料对应的schema系统用户。查询ES中存储的数据库日志的过程可以是实时轮询查询,也可以是离线查询。
作为一种示例,实时轮询查询SQL物料的具体过程可以如图2所示。在图2中,每隔半小时可以遍历获取当前实时schema,以及获取当前schema最新查询日期。若能查询到日期记录,则可以获取当前实时查询的索引文件的searchid。若查询不到日期记录,则可以根据规则新增当前schema索引查询日期,在新增当前schema索引查询日期之后,即可以获取当前实时查询的索引文件的searchid。若能获取到searchid,则可以根据searchid搜索下一页,并获取下一页对应的日志信息进行业务处理。若未获取到searchid,则可以通过searchafter搜索第一页,并获取第一页对应的日志信息进行业务处理。若能获取到日志记录,则可以更新记录schema最新索引文件的searchid,并返回执行根据最新的searchid搜索下一页。若未获取到日志记录,则对应的无日志记录可以加1,若超过10次均无日志记录,则可以更新当前schema最新查询索引日期为下一日,并返回执行获取当前实时查询的索引文件的searchid。
作为另一种示例,离线查询SQL物料的具体过程可以如图3所示。在图3中,可以首先获取最新离线查询日期。若有日期记录,则可以根据离线查询日期获取索引文件。若无日期记录,则可以初始化当前离线查询日期为t-14。其中,t可以是当前日期。在确定离线查询日期后,即可以根据离线查询日期获取索引文件,以及获取当前日期的离线schema。根据离线schema,可以searchafter的方式对索引文件进行搜索,以及返回searchid。根据返回的最新searchid搜索下一页,并获取下一页的日志信息进行业务处理。若有日志记录,则可以返回执行获取当前日志的离线schema,若无日志记录,则可以更新最新离线查询日期为后一日或后两日等。
基于此,作为又一种示例,在通过查询ES获取到SQL物料后,可以过滤掉指定表以及去掉SQL物料中的注释。其中,过滤的指定表的类型可以是GP系统内部表、MPP系统内部表和自定义配置表等。之后,可以基于预设关键字抽取具有血缘关系的SQL语句。其中,具有血缘关系的SQL语句可以是血缘类型的SQL。预设关键字例如可以为create、table、from、insert、update等。血缘类型的SQL例如可以包括:create table from、insert from、update from、create view from等。在得到具有血缘关系的SQL语句之后,可以去掉SQL语句中的字符串常量和数字常量,并对去掉字符串常量和数字常量的SQL语句进行MD5加密以生成SQL的唯一ID。如此,即可基于上述处理之后的SQL语句构建消息对象,并发送消息对象至解析引擎。其中,发送至解析引擎的SQL消息对象可以包括日志来源、IP、端口、集群、用户、数据库、会话、SQL打印时间、标准化SQL、原始SQL和日志来源类型等。解析引擎可以实时推送消息至Kafka,Kafka可以具有12个分区。另外,在得到具有血缘关系的SQL语句之后,可以对SQL类型进行Redis日统计,并存储为oracle表。
这样,通过配置实时获取物料对应的schema系统用户,将索引文件按日期生成,按需获取当前需要查询的索引文件,然后拼接query段、from段、size段和sort段,并采用timestamp作为排序,接着获取分页结构集进行SQL标准化业务处理,然后从返回的最后一条数据里拿到sort属性的值,再将最新索引值放到searchafter段里进行搜索查询,能够得到基于数据库日志的SQL语句。
基于此,为了得到基于SQL脚本的SQL语句,在一些实施例中,上述S110具体还可以包括:
获取SQL脚本;
对SQL脚本进行作业关联,确定目标SQL脚本,目标SQL脚本为实际应用的SQL脚本;
实例化运行目标SQL脚本,得到与目标SQL脚本对应的脚本日志;
从脚本日志中抽取SQL语句。
这里,获取基于SQL脚本的SQL语句的流程示意图可以如图4所示。在图4中,获取到的可以是脚本压缩包,在对脚本压缩包进行加压缩之后,可以得到SQL脚本。另外,由于脚本里的SQL属于非实例化的物料,往往会存在一些变量信息。同时,结合生产实际,脚本往往是绑定作业运行的。因此,为了获取当前态真正运行的脚本血缘,可以根据目前所执行的作业来对应脚本解析血缘关系,以达到解析出来的血缘是当前态存在的数据血缘关系。如此,可以将解压出来的脚本与作业进行关联,得到目标SQL脚本。通过遍历查询目标SQL脚本,当遍历失败时可以终止当前流程,以防止出现生产问题,当遍历成功时可以进一步获取作业参数信息,同时关联获取作业环境变量,并设置相应的环境变量。其中,通过设置环境变量可以获取实例化的数据表schema信息,以满足表信息的要素信息,来定位唯一表关系,实现精准化的血缘关系。在设置环境变量之后,即可以实例化运行目标SQL脚本(即执行脚本)以获取脚本日志,再从脚本日志中抽取SQL语句。
这样,通过实例化运行目标SQL脚本得到脚本日志,再从脚本日志中抽取SQL语句,能够得到基于SQL脚本的SQL语句。
在一些实施例中,在S120中,自定义语法中的多个关键字可以包括insert、select、from、where、groupby、orderby、condition、projection等。
作为一种示例,在得到SQL语句之后,可以将SQL语句放进消息队列(MessageQueue,MQ)中,以及通过SQL解析消费服务对SQL语句进行处理。其中,通过SQL解析消费服务对SQL语句进行处理具体可以包括将SQL语句输入至自定义语法的Antrl解析器中。自定义语法的Antrl解析器可以将SQL语句转化为抽象语法树(Abstract Syntax Tree,AST)。
作为另一种示例,在将SQL语句输入至自定义语法的Antrl解析器中之前,还可以验证SQL语法的合法性,在合法的情况下,将SQL语句转化为抽象语法树。
在一些实施例中,在S130中,目标片段可以是在SQL语句中,目标关键字及其之后相关部分的语法片段。目标片段可以包括insert片段、from片段、where片段、groupby片段、condition片段、projection片段等。其中,insert片段具体可以包括insertTable片段和insertColumns片段。
作为一种示例,基于自定义语法和关键字,通过遍历抽象语法树可以得到多个目标片段。
在一些实施例中,在S140中,对目标片段进行解析得到SQL业务对象的过程可以是构建SQL业务对象的过程。在SQL业务对象中,插入表对象可以通过构建insertTable业务对象得到,插入字段对象可以通过构建insertColumns业务对象得到,SQL片段对象可以通过构建from业务对象、condition业务对象、projection业务对象、where业务对象、groupby业务对象、orderby业务对象等得到。
作为一种示例,from业务对象中可以包括condition业务对象,构建from业务对象的流程示意图可以如图5所示。
作为一种示例,构建projection业务对象的流程示意图可以如图6所示。
作为一种示例,构建where业务对象的流程示意图可以如图7所示。
基于此,作为一种示例,通过SQL解析消费服务对SQL语句进行处理的流程示意图可以如图8所示。其中,异常封装处理具体可以为将解析异常的SQL语句放进消息队列MQ中,并进行重试以继续进行解析。
基于此,如图9所示,SQL业务对象可以包括插入表对象、插入字段对象和SQL片段对象。其中,SQL片段对象可以包括映射表达式、From段、Where段、GroupBy段和orderBy段。映射表达式可以通过构建projection业务对象得到,From段可以通过构建from业务对象得到,Where段可以通过构建where业务对象得到。
在一些实施例中,在S150中,字段间的血缘关系和表间的血缘关系均可以属于SQL血缘对象。
为了得到字段间的血缘关系,在一些实施例中,SQL片段对象可以包括from业务对象。基于此,上述S150具体可以包括:
从插入表对象中获取插入表信息,以及从from业务对象中获取虚拟表信息;
基于插入表信息,遍历构建插入表的字段与对应的select表达式的字段的第一血缘关系,以及基于虚拟表信息,遍历构建虚拟表的字段与对应的select表达式的字段的第二血缘关系;
将第一血缘关系和第二血缘关系确定为字段间的血缘关系。
这里,插入表信息中可以包括插入表的字段与对应的select表达式的字段,虚拟表信息中心可以包括虚拟表的字段与对应的select表达式的字段。
这样,通过遍历构建插入表的字段与对应的select表达式的字段的第一血缘关系,和虚拟表的字段与对应的select表达式的字段的第二血缘关系,能够得到字段间的血缘关系。
基于此,为了得到表间的血缘关系,在一些实施例中,上述S150具体还可以包括:
从第一血缘关系中获取与插入表对应的第一上游表;
在第一上游表为物理表的情况下,构建插入表与第一上游表之间的第三血缘关系;
将第三血缘关系确定为表间的血缘关系。
在第一上游表为虚拟表的情况下,遍历虚拟表对应的第二血缘关系;
从第二血缘关系中获取与虚拟表对应的第二上游表;
在第二上游表为物理表的情况下,构建插入表和第二上游表之间的第四血缘关系;
将第四血缘关系确定为表间的血缘关系。
这里,根据与插入表的字段对应的select表达式的字段可以确定与插入表对应的第一上游表。同样,根据与虚拟表的字段对应的select表达式的字段可以确定与虚拟表对应的第二上游表。
这样,在插入表的上游表为物理表的情况下,可以得到表间的血缘关系。
基于上述各实施例,构建SQL血缘的流程示意图可以如图10所示。
另外,血缘服务输出信息的示意图可以如图11所示。这里,通过将构建的SQL血缘关系落地输出上下游表字段关系,以及字段加工规则与表级关联条件与限定条件,可以实现血缘解析的输出。由于物料的特性化执行,可解析落地的数据可以有所不同,其中,由于数据库日志的实时性,以及广泛性,可以根据血缘解析信息,落地对应数据的访问热度信息,根据不同的SQL操作类型,如select、insert、create等,实现相关表的不同操作类型的访问统计,结合统计结果来分析表对应的访问热度。
基于上述实施例提供的数据血缘解析方法,相应地,本申请还提供了数据血缘解析装置的具体实现方式。请参见以下实施例。
如图12所示,本申请实施例提供的数据血缘解析装置1200包括以下模块:
获取模块1210,用于获取SQL语句;
输入模块1220,用于将SQL语句输入至自定义语法的Antrl解析器中,得到抽象语法树,抽象语法树包括自定义语法中的多个关键字;
封装模块1230,用于基于自定义语法和关键字,将抽象语法树封装成多个目标片段,目标片段为包括目标关键字的SQL片段;
解析模块1240,用于对目标片段进行解析,得到SQL业务对象,SQL业务对象包括插入表对象、插入字段对象和SQL片段对象;
构建模块1250,用于基于插入表对象、插入字段对象和SQL片段对象,构建字段间的血缘关系和表间的血缘关系。
下面对上述数据血缘解析装置1200进行详细说明,具体如下所示:
在其中一些实施例中,SQL片段对象可以包括from业务对象,基于此,构建模块1250具体可以包括:
第一获取子模块,用于从插入表对象中获取插入表信息,以及从from业务对象中获取虚拟表信息;
第一构建子模块,用于基于插入表信息,遍历构建插入表的字段与对应的select表达式的字段的第一血缘关系,以及基于虚拟表信息,遍历构建虚拟表的字段与对应的select表达式的字段的第二血缘关系;
第一确定子模块,用于将第一血缘关系和第二血缘关系确定为字段间的血缘关系。
在其中一些实施例中,构建模块1250具体还可以包括:
第二获取子模块,用于从第一血缘关系中获取与插入表对应的第一上游表;
第二构建子模块,用于在第一上游表为物理表的情况下,构建插入表与所述第一上游表之间的第三血缘关系;
第二确定子模块,用于将第三血缘关系确定为表间的血缘关系。
在其中一些实施例中,构建模块1250具体还可以包括:
遍历子模块,用于在第一上游表为虚拟表的情况下,遍历虚拟表对应的第二血缘关系;
第三获取子模块,用于从第二血缘关系中获取与虚拟表对应的第二上游表;
第三构建子模块,用于在第二上游表为物理表的情况下,构建插入表和第二上游表之间的第四血缘关系;
第三确定子模块,用于将第四血缘关系确定为表间的血缘关系。
在其中一些实施例中,获取模块1210具体可以包括:
第四获取子模块,用于利用文件浏览器ES获取数据库日志;
第一抽取子模块,用于基于预设关键字,从数据库日志中抽取具有血缘关系的SQL语句,其中,预设关键字用于表征血缘关系。
在其中一些实施例中,获取模块1210具体还可以包括:
第五获取子模块,用于获取SQL脚本;
作业关联子模块,用于对SQL脚本进行作业关联,确定目标SQL脚本,目标SQL脚本为实际应用的SQL脚本;
运行子模块,用于实例化运行目标SQL脚本,得到与目标SQL脚本对应的脚本日志;
第二抽取子模块,用于从脚本日志中抽取SQL语句。
本申请实施例的数据血缘解析装置通过基于Antrl解析器自定义开发SQL语法解析规则,以及将待解析的SQL语句输入至自定义语法的Antrl解析器中,能够基于自定义语法中的关键字生成抽象语法树。通过基于自定义语法和关键字将抽象语法树封装成多个目标片段,以及对目标片段进行解析,能够得到插入表对象、插入字段对象和SQL片段对象等SQL业务对象。通过基于SQL业务对象构建字段间的血缘关系和表间的血缘关系,能够实现数据血缘解析方案的落地。如此,根据本申请实施例,能够根据自定义的语法规则对SQL进行解析,满足更多的语法解析需求,以及实现数据血缘解析方案的落地。
基于上述实施例提供的数据血缘解析方法,本申请实施例还提供了电子设备的具体实施方式。图13示出了本申请实施例提供的电子设备1300示意图。
电子设备1300可以包括处理器1310以及存储有计算机程序指令的存储器1320。
具体地,上述处理器1310可以包括中央处理器(CPU),或者特定集成电路(Application Specific Integrated Circuit,ASIC),或者可以被配置成实施本申请实施例的一个或多个集成电路。
存储器1320可以包括用于数据或指令的大容量存储器。举例来说而非限制,存储器1320可包括硬盘驱动器(Hard Disk Drive,HDD)、软盘驱动器、闪存、光盘、磁光盘、磁带或通用串行总线(Universal Serial Bus,USB)驱动器或者两个或更多个以上这些的组合。在合适的情况下,存储器1320可包括可移除或不可移除(或固定)的介质。在合适的情况下,存储器1320可在综合网关容灾设备的内部或外部。在特定实施例中,存储器1320是非易失性固态存储器。
存储器可包括只读存储器(ROM),随机存取存储器(RAM),磁盘存储介质设备,光存储介质设备,闪存设备,电气、光学或其他物理/有形的存储器存储设备。因此,通常,存储器包括一个或多个编码有包括计算机可执行指令的软件的有形(非暂态)计算机可读存储介质(例如,存储器设备),并且当该软件被执行(例如,由一个或多个处理器)时,其可操作来执行参考根据本申请的一方面的方法所描述的操作。
处理器1310通过读取并执行存储器1320中存储的计算机程序指令,以实现上述实施例中的任意一种数据血缘解析方法。
在一个示例中,电子设备1300还可包括通信接口1330和总线1340。其中,如图13所示,处理器1310、存储器1320、通信接口1330通过总线1340连接并完成相互间的通信。
通信接口1330,主要用于实现本申请实施例中各模块、装置、单元和/或设备之间的通信。
总线1340包括硬件、软件或两者,将电子设备的部件彼此耦接在一起。举例来说而非限制,总线可包括加速图形端口(AGP)或其他图形总线、增强工业标准架构(EISA)总线、前端总线(FSB)、超传输(HT)互连、工业标准架构(ISA)总线、无限带宽互连、低引脚数(LPC)总线、存储器总线、微信道架构(MCA)总线、外围组件互连(PCI)总线、PCI-Express(PCI-X)总线、串行高级技术附件(SATA)总线、视频电子标准协会局部(VLB)总线或其他合适的总线或者两个或更多个以上这些的组合。在合适的情况下,总线1340可包括一个或多个总线。尽管本申请实施例描述和示出了特定的总线,但本申请考虑任何合适的总线或互连。
示例性的,电子设备1300可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、超级移动个人计算机(ultra-mobile personal computer,UMPC)、上网本或者个人数字助理(personal digital assistant,PDA)等。
该电子设备可以基于当前已拦截的垃圾短信以及用户举报的短信执行本申请实施例中的数据血缘解析方法,从而实现结合图1至图12描述的数据血缘解析方法和装置。
另外,结合上述实施例中的数据血缘解析方法,本申请实施例可提供一种计算机存储介质来实现。该计算机存储介质上存储有计算机程序指令;该计算机程序指令被处理器执行时实现上述实施例中的任意一种数据血缘解析方法。
需要明确的是,本申请并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本申请的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本申请的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
以上所述的结构框图中所示的功能块可以实现为硬件、软件、固件或者它们的组合。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本申请的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。“机器可读介质”可以包括能够存储或传输信息的任何介质。机器可读介质的例子包括电子电路、半导体存储器设备、ROM、闪存、可擦除ROM(EROM)、软盘、CD-ROM、光盘、硬盘、光纤介质、射频(RF)链路,等等。代码段可以经由诸如因特网、内联网等的计算机网络被下载。
还需要说明的是,本申请中提及的示例性实施例,基于一系列的步骤或者装置描述一些方法或系统。但是,本申请不局限于上述步骤的顺序,也就是说,可以按照实施例中提及的顺序执行步骤,也可以不同于实施例中的顺序,或者若干步骤同时执行。
上面参考根据本申请的实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本申请的各方面。应当理解,流程图和/或框图中的每个方框以及流程图和/或框图中各方框的组合可以由计算机程序指令实现。这些计算机程序指令可被提供给通用计算机、专用计算机、或其它可编程数据处理装置的处理器,以产生一种机器,使得经由计算机或其它可编程数据处理装置的处理器执行的这些指令使能对流程图和/或框图的一个或多个方框中指定的功能/动作的实现。这种处理器可以是但不限于是通用处理器、专用处理器、特殊应用处理器或者现场可编程逻辑电路。还可理解,框图和/或流程图中的每个方框以及框图和/或流程图中的方框的组合,也可以由执行指定的功能或动作的专用硬件来实现,或可由专用硬件和计算机指令的组合来实现。
以上所述,仅为本申请的具体实施方式,所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、模块和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。应理解,本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本申请的保护范围之内。

Claims (10)

1.一种数据血缘解析方法,其特征在于,包括:
获取SQL语句;
将所述SQL语句输入至自定义语法的Antrl解析器中,得到抽象语法树,所述抽象语法树包括所述自定义语法中的多个关键字;
基于所述自定义语法和所述关键字,将所述抽象语法树封装成多个目标片段,所述目标片段为包括目标关键字的SQL片段;
对所述目标片段进行解析,得到SQL业务对象,所述SQL业务对象包括插入表对象、插入字段对象和SQL片段对象;
基于所述插入表对象、所述插入字段对象和所述SQL片段对象,构建字段间的血缘关系和表间的血缘关系。
2.根据权利要求1所述的方法,其特征在于,所述SQL片段对象包括from业务对象;
所述基于所述插入表对象、所述插入字段对象和所述SQL片段对象,构建字段间的血缘关系和表间的血缘关系,包括:
从所述插入表对象中获取插入表信息,以及从所述from业务对象中获取虚拟表信息;
基于所述插入表信息,遍历构建插入表的字段与对应的select表达式的字段的第一血缘关系,以及基于所述虚拟表信息,遍历构建虚拟表的字段与对应的select表达式的字段的第二血缘关系;
将所述第一血缘关系和所述第二血缘关系确定为字段间的血缘关系。
3.根据权利要求2所述的方法,其特征在于,所述基于所述插入表对象、所述插入字段对象和所述SQL片段对象,构建字段间的血缘关系和表间的血缘关系,包括:
从所述第一血缘关系中获取与所述插入表对应的第一上游表;
在所述第一上游表为物理表的情况下,构建所述插入表与所述第一上游表之间的第三血缘关系;
将所述第三血缘关系确定为所述表间的血缘关系。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
在所述第一上游表为虚拟表的情况下,遍历所述虚拟表对应的第二血缘关系;
从所述第二血缘关系中获取与所述虚拟表对应的第二上游表;
在所述第二上游表为物理表的情况下,构建所述插入表和所述第二上游表之间的第四血缘关系;
将所述第四血缘关系确定为所述表间的血缘关系。
5.根据权利要求1所述的方法,其特征在于,所述获取SQL语句,包括:
利用文件浏览器ES获取数据库日志;
基于预设关键字,从所述数据库日志中抽取具有血缘关系的SQL语句,其中,所述预设关键字用于表征血缘关系。
6.根据权利要求1所述的方法,其特征在于,所述获取SQL语句,包括:
获取SQL脚本;
对所述SQL脚本进行作业关联,确定目标SQL脚本,所述目标SQL脚本为实际应用的SQL脚本;
实例化运行所述目标SQL脚本,得到与所述目标SQL脚本对应的脚本日志;
从所述脚本日志中抽取SQL语句。
7.一种数据血缘解析装置,其特征在于,所述装置包括:
获取模块,用于获取SQL语句;
输入模块,用于将所述SQL语句输入至自定义语法的Antrl解析器中,得到抽象语法树,所述抽象语法树包括所述自定义语法中的多个关键字;
封装模块,用于基于所述自定义语法和所述关键字,将所述抽象语法树封装成多个目标片段,所述目标片段为包括目标关键字的SQL片段;
解析模块,用于对所述目标片段进行解析,得到SQL业务对象,所述SQL业务对象包括插入表对象、插入字段对象和SQL片段对象;
构建模块,用于基于所述插入表对象、所述插入字段对象和所述SQL片段对象,构建字段间的血缘关系和表间的血缘关系。
8.一种电子设备,其特征在于,所述电子设备包括:处理器以及存储有计算机程序指令的存储器;
所述处理器执行所述计算机程序指令时实现如权利要求1-6任意一项所述的数据血缘解析方法。
9.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序指令,所述计算机程序指令被处理器执行时实现如权利要求1-6任意一项所述的数据血缘解析方法。
10.一种计算机程序产品,其特征在于,所述计算机程序产品中的指令由电子设备的处理器执行时,使得所述电子设备执行如权利要求1-6任意一项所述的数据血缘解析方法。
CN202211382215.5A 2022-11-07 2022-11-07 数据血缘解析方法、装置、设备及计算机可读存储介质 Pending CN115658072A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211382215.5A CN115658072A (zh) 2022-11-07 2022-11-07 数据血缘解析方法、装置、设备及计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211382215.5A CN115658072A (zh) 2022-11-07 2022-11-07 数据血缘解析方法、装置、设备及计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN115658072A true CN115658072A (zh) 2023-01-31

Family

ID=85015446

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211382215.5A Pending CN115658072A (zh) 2022-11-07 2022-11-07 数据血缘解析方法、装置、设备及计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN115658072A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116303370A (zh) * 2023-05-17 2023-06-23 建信金融科技有限责任公司 一种脚本血缘解析方法、装置、存储介质、设备及产品

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116303370A (zh) * 2023-05-17 2023-06-23 建信金融科技有限责任公司 一种脚本血缘解析方法、装置、存储介质、设备及产品
CN116303370B (zh) * 2023-05-17 2023-08-15 建信金融科技有限责任公司 一种脚本血缘解析方法、装置、存储介质、设备及产品

Similar Documents

Publication Publication Date Title
CN110908997B (zh) 数据血缘构建方法、装置、服务器及可读存储介质
EP4099170B1 (en) Method and apparatus of auditing log, electronic device, and medium
CN109522341B (zh) 实现基于sql的流式数据处理引擎的方法、装置、设备
CN112860727B (zh) 基于大数据查询引擎的数据查询方法、装置、设备及介质
CN109753596B (zh) 用于大规模网络数据采集的信源管理与配置方法和系统
CN114461644A (zh) 一种数据采集方法、装置、电子设备及存储介质
CN111427784B (zh) 一种数据获取方法、装置、设备及存储介质
CN112231417A (zh) 数据分类方法、装置、电子设备及存储介质
CN115658072A (zh) 数据血缘解析方法、装置、设备及计算机可读存储介质
CN110990350B (zh) 日志的解析方法及装置
CN114398394A (zh) 数据血缘解析方法、装置、设备及存储介质
CN106557483B (zh) 一种数据处理、数据查询方法及设备
CN112667619A (zh) 辅助检查数据的方法、装置、终端设备及存储介质
CN105512270B (zh) 一种确定相关对象的方法和装置
CN107644103B (zh) 一种可追溯信息来源的信息存储的方法和系统
CN111159213A (zh) 一种数据查询方法、装置、系统和存储介质
CN106682107B (zh) 数据库表关联关系确定方法及装置
CN115357625A (zh) 结构化数据比对方法、装置、电子设备及存储介质
EP4280565A1 (en) Sample message processing method and apparatus
CN113934430A (zh) 数据检索分析方法、装置、电子设备及存储介质
CN114116764A (zh) 一种基于语法树的指标查询方法、装置、介质及电子设备
CN112435151A (zh) 一种基于关联分析的政务信息数据处理方法及系统
CN111737571A (zh) 搜索方法、装置和电子设备
CN112527880B (zh) 大数据集群元数据信息的采集方法、装置、设备及介质
CN111045983A (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