CN114676678B - 结构化查询语言数据的解析方法、装置和电子设备 - Google Patents

结构化查询语言数据的解析方法、装置和电子设备 Download PDF

Info

Publication number
CN114676678B
CN114676678B CN202210371577.8A CN202210371577A CN114676678B CN 114676678 B CN114676678 B CN 114676678B CN 202210371577 A CN202210371577 A CN 202210371577A CN 114676678 B CN114676678 B CN 114676678B
Authority
CN
China
Prior art keywords
target
data
information
tree
statement
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.)
Active
Application number
CN202210371577.8A
Other languages
English (en)
Other versions
CN114676678A (zh
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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology 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 Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Priority to CN202210371577.8A priority Critical patent/CN114676678B/zh
Publication of CN114676678A publication Critical patent/CN114676678A/zh
Application granted granted Critical
Publication of CN114676678B publication Critical patent/CN114676678B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/253Grammatical analysis; Style critique

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本公开提供了一种结构化查询语言数据的解析方法、装置、设备以及存储介质,涉及计算机技术领域,尤其涉及大数据、数据治理和数据血缘分析等技术领域,可应用于云计算场景下。具体实现方案为:对结构化查询语言数据进行解析,得到抽象语法树;根据抽象语法树,确定表信息和字段信息;根据表信息和字段信息,确定原始血缘树;以及根据元数据,对原始血缘树进行扩展,得到目标血缘树,作为解析结果。

Description

结构化查询语言数据的解析方法、装置和电子设备
技术领域
本公开涉及计算机技术领域,尤其涉及大数据、数据治理和数据血缘分析等技术领域,可应用于云计算场景下。
背景技术
数据血缘属于数据治理中的一个概念,是指在数据溯源的过程中找到相关数据之间的联系。数据治理时需要针对数据进行血缘分析,以便得到数据血缘。血缘分析是保证数据融合的一个手段,通过血缘分析可以实现数据融合处理过程的可追溯。
发明内容
本公开提供了一种结构化查询语言数据的解析方法、装置、设备以及存储介质。
根据本公开的一方面,提供了一种结构化查询语言数据的解析方法,包括:对结构化查询语言数据进行解析,得到抽象语法树;根据所述抽象语法树,确定表信息和字段信息;根据所述表信息和所述字段信息,确定原始血缘树;以及根据元数据,对所述原始血缘树进行扩展,得到目标血缘树,作为解析结果。
根据本公开的另一方面,提供了一种结构化查询语言数据的解析装置,包括:解析模块,用于对结构化查询语言数据进行解析,得到抽象语法树;第一确定模块,用于根据所述抽象语法树,确定所述结构化查询语言数据中用于数据选取的多个目标语句块,以及所述多个目标语句块之间的层级关系;第二确定模块,用于根据所述多个目标语句块和所述多个目标语句块之间的层级关系,确定原始血缘树;以及扩展模块,用于根据元数据,对所述原始血缘树进行扩展,得到目标血缘树,作为解析结果。
本公开的另一个方面提供了一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本公开实施例所示的方法。
根据本公开实施例的另一方面,提供了一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行本公开实施例所示的方法。
根据本公开实施例的另一方面,提供了一种计算机程序产品,包括计算机程序/指令,其特征在于,该计算机程序/指令被处理器执行时实现本公开实施例所示方法的步骤。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
附图用于更好地理解本方案,不构成对本公开的限定。其中:
图1是根据本公开实施例的可以应用结构化查询语言数据的解析方法的应用场景示意图;
图2示意性示出了根据本公开的实施例的结构化查询语言数据的解析方法的流程图;
图3示意性示出了根据本公开的实施例的对结构化查询语言数据进行解析,得到抽象语法树的方法的流程图;
图4示意性示出了根据本公开的实施例的根据抽象语法树,确定表信息和字段信息的方法的流程图;
图5示意性示出了根据本公开的实施例的对原始血缘树进行扩展的方法的流程图;
图6示意性示出了根据本公开的实施例的结构化查询语言数据的解析示意图;
图7示意性示出了根据本公开的实施例的原始血缘树的示意图;
图8示意性示出了根据本公开实施例的结构化查询语言数据的解析装置的框图;以及
图9示意性示出了可以用来实施本公开的实施例的示例电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
以下将结合图1对本公开提供的可以应用结构化查询语言数据的解析方法的应用场景进行描述。
图1是根据本公开实施例的可以应用结构化查询语言数据的解析方法的应用场景示意图。需要注意的是,图1所示仅为可以应用本公开实施例的应用场景的示例,以帮助本领域技术人员理解本公开的技术内容,但并不意味着本公开实施例不可以用于其他设备、系统、环境或场景。
如图1所示,该应用场景100包括数据处理系统101、血缘解析系统102和数据库103。
数据处理系统101可以用于处理结构化查询语言(Structured Query Language,SQL)数据。其中,结构化查询语言数据例如可以包括SQL操作语句(statement)。SQL操作语句可以包括对数据库103进行数据存取、查询、更新和管理等操作的程序指令。
血缘解析系统102可以用于对结构化查询语言数据进行解析,以确定SQL数据所涉及的字段和数据表的数据血缘信息。
数据库103可以用于存储数据表以及数据表的元数据。其中,元数据可以包括数据表中包含的所有字段。
根据本公开的实施例,血缘解析系统102可以从数据处理系统101获取结构化查询语言数据。然后可以对结构化查询语言数据进行解析,得到抽象语法树。根据抽象语法树,确定表信息和字段信息。根据表信息和字段信息,确定原始血缘树。接着可以从数据库103中获取元数据,根据元数据,对原始血缘树进行扩展,得到目标血缘树,作为解析结果。
根据本公开的实施例,解析结果表示了数据的血缘,可以帮助用户理解数据流转过程。例如用户在操作数据表或字段时,可以根据解析结果确定该数据表或字段的上游数据表,以及上游数据表中的各字段,从而了解数据表或字段的数据来源。另外,用户在操作数据表或字段时,还可以根据解析结果确定该数据表或字段的下游数据表,以及下游数据表中的各字段,从而了解操作该数据表或字段时会对哪些数据产生影响。另外,解析结果还可以用于对数据质量问题定位分析,数据差异分析,指标分析等。
在本公开的技术方案中,所涉及的用户个人信息的收集、存储、使用、加工、传输、提供、公开和应用等处理,均符合相关法律法规的规定,采取了必要保密措施,且不违背公序良俗。
在本公开的技术方案中,在获取或采集用户个人信息之前,均获取了用户的授权或同意。
以下将结合图2对本公开提供的结构化查询语言数据的解析方法进行描述。
图2示意性示出了根据本公开的实施例的结构化查询语言数据的解析方法的流程图。
如图2所示,该结构化查询语言数据的解析方法200包括在操作S210,对结构化查询语言数据进行解析,得到抽象语法树。
根据本公开的实施例,结构化查询语言数据例如可以包括SQL操作语句。其中,SQL操作语句可以包括数据存取、查询、更新和管理等操作的程序指令。
根据本公开的实施例,抽象语法树可以用于抽象化表示结构化查询语言数据的语法信息和词法信息。
然后,在操作S220,根据抽象语法树,确定表信息和字段信息。
根据本公开的实施例,表信息可以为用于标识数据表的信息。表信息例如可以包括数据表的表名。字段信息可以为用于标识字段的信息。字段信息例如可以包括字段名。
根据本公开的实施例,根据抽象语法树确定的表信息可以有一个或多个。根据抽象语法树确定的字段信息可以有一个或多个。
根据本公开的另一实施例,表信息还可以包括数据表的别名和对应的语句块等信息。
根据本公开的实施例的另一实施例,除了字段名之外,字段信息例如可以还包括字段指代标识等。其中,字段指代标识例如可以为星号“*”,“*”可以用于指代对应数据表中的全部字段。
在操作S230,根据表信息和字段信息,确定原始血缘树。
根据本公开的实施例,原始血缘树可以用于抽象化表示多个目标语句块之间的语法结构。表信息和字段信息中的每个可以对应于原始血缘树中的一个表节点。
根据本公开的实施例,例如可以根据表信息和字段信息中的每个,确定原始血缘树中的一个表节点。然后可以根据表信息和字段信息之间的层级关系,确定原始血缘树中表节点之间的层级关系。其中,表信息和字段信息之间的层级关系可以根据抽象语法树确定。从而原始血缘树可以表示结构化查询语言数据中包含的数据表之间的关系以及数据表与字段之间的关系。
根据本公开的实施例,原始血缘树相比抽象语法树,减少了不需要的语法信息,使得数据血缘的提取更为直观。
在操作S240,根据元数据,对原始血缘树进行扩展,得到目标血缘树,作为解析结果。
根据本公开的实施例,原始血缘树可以表示结构化查询语言数据中包含的数据表之间的关系以及数据表与字段之间的关系,但是不能完整反映字段与字段之间的关系,具有局限性。
基于此,可以根据元数据,对原始血缘树进行扩展,确定与字段信息和表信息相关的扩展字段,将扩展字段添加至血缘树中对应表节点,得到目标血缘树,作为解析结果。从而可以更完整地反映查询语言数据中的数据血缘关系。
相关技术在确定数据血缘时,对数据引擎存在依赖,需要数据引擎内部提供相关的钩子函数进行支持。
根据本公开实施例的结构化查询语言数据的解析方法,能够在不需要钩子函数的情况下,对结构化查询语言数据进行解析,得到目标血缘树。另外,目标血缘树相比抽象语法树,减少了不需要的语法信息,使得数据血缘关系更为直观。
根据本公开的另一实施例,在得到解析结果之后,还可以根据解析结果,对目标数据进行数据溯源,得到与目标数据对应的相关字段信息和/或相关表信息。目标数据例如可以包括表名或字段名。其中,相关字段信息例如可以包括目标数据的上游字段的字段名和下游字段的字段名等。相关表信息例如可以包括目标数据的上游数据表的表名和下游数据表的表名等。
根据本公开的实施例,当发现数据问题时可以通过解析结果,追根溯源,快速地定位到问题数据的来源和加工过程,减少数据问题排查分析的时间和难度。
以下将结合图3对本公开提供的对结构化查询语言数据进行解析,得到抽象语法树的方法进行描述。
图3示意性示出了根据本公开的实施例的对结构化查询语言数据进行解析,得到抽象语法树的方法的流程图。
如图3所示,对结构化查询语言数据进行解析,得到抽象语法树的方法310包括在操作S311,将结构化查询语言数据拆分为多个语法单元。
然后,在操作S312,对多个语法单元进行语法分析,得到多个语法单元之间的上下文关系。
在操作S313,根据多个语法单元,确定抽象语法树中的多个语法节点。
根据本公开的实施例,多个语法单元中的每个语法节点可以对应一个节点
在操作S314,根据多个语法单元之间的上下文关系,确定多个语法节点之间的层级关系。
根据本公开的实施例,例如可以根据预定字典,对多个语法单元进行词法解析,以将结构化查询语言数据拆分为不可再分的语法单元,也称为Token。
根据本公开的实施例,例如可以通过预设语法规则,对多个语法单元进行语法分析,确定多个语法单元之间的上下文关系。
根据本公开的实施例,然后可以根据语法单元以及语法单元之间的上下文关系,将语法单元转换为抽象语法树中的节点。
以下将结合图4对本公开提供的根据抽象语法树,确定表信息和字段信息的方法进行描述。
图4示意性示出了根据本公开的实施例的根据抽象语法树,确定表信息和字段信息的方法的流程图。
如图4所示,根据抽象语法树,确定表信息和字段信息的方法420包括在操作S421,根据抽象语法树,确定结构化查询语言数据中用于数据选取的多个目标语句块。
根据本公开的实施例,目标语句块即结构化查询语言数据中用于数据选取的语句块。示例性地,本实施例中,目标语句块例如可以包括select语句块以及select语句的附属语句块等。
根据本公开的实施例,例如可以确定抽象语法树中与数据选取相关的多个目标分支以及多个目标分支之间的层级关系。然后根据多个目标分支中的语法节点,确定多个目标语句块。根据多个目标分支之间的层级关系,确定多个目标语句块之间的层级关系。可以理解的是,多个目标语句块之间的层级关系,即与多个目标语句块对应的表信息和字段信息之间的层级关系。
在操作S422,提取多个目标语句块中的表信息和字段信息。
根据本公开的实施例,例如可以针对每个目标语句块,提取每个目标语句块中包含的表信息和/或字段信息。
根据本公开的实施例,目标语句块例如可以包括主语句块和数据表语句块。其中,主语句块例如可以包括statement语句块,即结构化查询语言数据中的主体语句。特殊地,当结构化查询语言数据包含WITH语句时,主语句块包括结构化查询语言数据的主体部分,不包含WITH语句。数据表语句块例如可以包括包含数据表的表信息的语句。
基于此,提取多个目标语句块中的表信息和字段信息例如与包括:提取主语句块中的表信息和字段信息,以及提取数据表语句块中的表信息。
根据本公开的另一实施例,除了主语句块和数据表语句块之外,目标语句块还包括附属语句块。其中,附属语句块例如可以包括子查询语句块、主合并语句块、子合并语句块、主复用查询语句块和子复用查询语句块中的至少一个。其中,子查询语句块例如可以包括SUBQUERY语句。主合并语句块例如可以包括UNION语句块,即UNION语句的顶级结构,用于与UNION_STATEMENT语句块衔接。子合并语句块例如可以包括UNION_STATEMENT语句块,即UNION的子语句块。主复用查询语句块例如可以包括WITH_PARENT语句块,即With的顶级结构,WITH_PARENT语句块下可以挂多个WITH语句块,用于与With语句块衔接。子复用查询语句块例如可以包括WITH语句块。WITH语句块例如可以采用with select xxx as xxx2的格式。
基于此,提取多个目标语句块中的表信息和字段信息还可以包括:提取附属语句块中的字段信息。
以下将结合图5对本公开提供的对原始血缘树进行扩展的方法进行描述。
图5示意性示出了根据本公开的实施例的对原始血缘树进行扩展的方法的流程图。
如图5所示,对原始血缘树进行扩展的方法540可以包括操作S541~S546。
在操作S541,获取原始血缘树中一个表节点。
在操作S542,确定表节点是否包含表信息。如果表节点包含表信息,则执行操作S543。否则,执行操作S544。
在操作S543,根据元数据,确定与表信息对应的第一扩展字段,并将第一扩展字段添加至表节点中。然后返回操作S541,以获取原始血缘树中另一个表节点。
根据本公开的实施例,例如可以根据元数据,确定表信息所对应的数据表中的所有字段,作为的第二扩展字段。
在操作S544,确定表节点是否包含字段信息且字段信息指示的是未知字段。如果表节点包含字段信息且字段信息指示的是未知字段,则执行操作S545。否则,返回操作S541,以获取原始血缘树中另一个表节点。
根据本公开的实施例,字段信息例如可以包括字段指代标识等。其中,字段指代标识例如可以为星号“*”,“*”可以用于指代对应数据表中的全部字段。当字段信息为字段指代标识的情况下,表示字段信息指示的是未知字段。
在操作S545,根据元数据,确定与字段信息对应的第二扩展字段,并将第二扩展字段添加至表节点中。然后返回操作S541,以获取原始血缘树中另一个表节点。
根据本公开的实施例,例如可以根据元数据,确定字段指代标识所对应的数据表中的所有字段,作为的第二扩展字段。
下面参考图6,结合具体实施例对上文所示的结构化查询语言数据的解析方法做进一步说明。本领域技术人员可以理解,以下示例实施例仅用于理解本公开,本公开并不局限于此。
示例性地,本实施例中,结构化查询语言数据可以为SQL语句。
图6示意性示出了根据本公开的实施例的结构化查询语言数据的解析示意图。
在图6中示出了,可以对SQL语句进行词法和语法解析,得到抽象语法树。
根据抽象语法树,确定多个与选取操作相关的目标语句块和多个目标语句块之间的层级关系。提取多个目标语句块中的表信息和字段信息。根据多个目标语句块之间的层级关系确定表信息和字段信息之间的层级关系。
根据表信息和字段信息,确定原始血缘树。例如,可以根据表信息和字段信息,确定原始血缘树中的多个表节点。然后可以根据与表信息和字段信息对应的目标语句块之间的层级关系,确定多个表节点之间的层级关系。
例如,数据表语句块中的表信息可以包括表名、别名、字段和语句块等。对于与数据表语句块对应的表节点,表节点可以包括表名、别名、字段和语句块等属性。
对于主语句块中的表信息可以包括别名、字段和语句块等。对于与主语句块对应的表节点,表节点可以包括别名、字段和语句块等属性。
对于附属语句块中的表信息可以包括别名、字段和语句块等。对于与附属语句块对应的表节点,表节点可以包括别名、字段和语句块等属性。
其中,附属语句块例如可以包括子查询语句块、主合并语句块、子合并语句块、主复用查询语句块和子复用查询语句块等。
然后,可以根据元数据,对原始血缘树进行扩展,得到目标血缘树,作为解析结果。
示例性地,本实施例中,结构化查询语言数据可以包括:
insert into table stu_score select name,score
from(select score,stu_id from test_score)t1
left join(select*from stu)t2
on t1.stu_id=t2.id;
经过解析后,可以得到原始血缘树。下面结合图7对该原始血缘树进行说明。
图7示意性示出了根据本公开的实施例的原始血缘树的示意图。
如图7所示,原始血缘树可以包括表节点701、702、703、704和705。其中,表节点701对应于主语句块,类型为STATEMENT。表节点702对应于子查询语句块,类型为SUBQUERY。表节点703对应于另一子查询语句块,类型为SUBQUERY。表节点704对应于数据表语句块,类型为TABLE。表节点705对应于另一数据表语句块,类型为TABLE。
本实施例中,表节点701中的数据例如表1所示。其中,null表示为空。
表1
本实施例中,表节点702中的数据例如表2所示。
表名 null
别名 t1
语句块 (select score,stu_id from test_score)t1
字段 score,stu_id
表2
本实施例中,表节点703中的数据例如表3所示。
表名 null
别名 t2
语句块 (select*from stu)t2
字段 *
表3
本实施例中,表节点704中的数据例如表4所示。
表名 test_score
别名 null
语句块 test_score
表4
本实施例中,表节点705中的数据例如表5所示。
表名 stu
别名 null
语句块 stu
表5
接下来,可以根据原始血缘树,确定字段的血缘关系。
示例性地,本实施例中,可以按照从底向上的层序遍历原始血缘树。原始血缘树中的非TABLE节点,判断它的字段来源。如果字段所在表节点的子节点只有一个时,字段来源于唯一的子节点。例如select a,b from tablel,此时a,b字段来源于tablel表中的a,b字段。
如果字段所在表节点的子节点具有多个时,可以在该多个子节点中查找是否有字段名称匹配的字段,以此找到字段来源的表及字段。其中,如果子节点为TABLE类型,则需要依赖元数据查询该子节点中的所有字段。
根据本公开的实施例,有的语句块中,字段名是包含在函数中的。例如upper(′字段A′),则可以针对该函数,向下访问到函数的主键字段名columnRef,从而获取字段名A。
根据本公开的实施例,有的语句块中,字段名是包含在运算表达式中的。例如字段B>1。则可以针对运算表达式,向下访问到运算表达式的主键字段名columnRef,从而获取字段名B。
特殊的,若字段为t1.a的形式。可以将别名改为对应的表名。例如,对于语句块select t1.a,t1.b from tablel t1,table2 t2,可以根据表名t1与tablel的对应关系,确定t1.a->tablel.a。
根据本公开的实施例,可以将原始血缘树中的表节点压入栈中,此时栈中表节点依次为表节点701、702、703、704和705。其中,表节点701位于栈底,表节点705位于栈顶。
利用栈的特性,深度最大的节点就在栈的顶部。因此,可以通过依次获取栈顶,就可以实现以从底向上的层序遍历原始血缘树中的每个节点的目的。
基于此,从栈顶取出一个表节点,提取该表节点中的字段信息和/或表信息。然后可以根据节点之间的层级关系,可以确定字段信息与数据表的从属关系。
例如,从栈顶取出表节点705,确定表节点705类型为TABLE,则跳过。
然后,从栈顶取出表节点704,确定表节点704类型为TABLE,则跳过。
接着,从栈顶取出表节点703,确定表节点703类型为SUBQUERY,提取到字段信息为*,其中,*代表来源于表的所有字段。此时可以根据元数据,确定字段关系*->(id,name),然后可以将表节点703中的*转换为对应的具体字段(id,name),即id->stu.id,name->stu.name。
接下来,从栈顶取出表节点702,确定表节点703类型为SUBQUERY,提取到字段信息为score,stu_id,它的子节点只有一个,表名为test_score。此时可以确定该字段关系score->(test_score.sorce),stu_id->(test_score.stu_id)。
再之后,从栈顶取出表节点701,确定表节点701类型为STATEMENT,提取到字段信息为name,score。它的子节点有两个,因此可以对每个子节点进行字段名匹配。推断关系为:
name->表节点703.name->stu.name。
socre->表节点702。
score->test_score.sorce。
另外,可以根据元数据,确定表节点705、704所对应的数据表中的字段,将该字段添加至表节点705、704中。从而原始血缘树转换为目标血缘树。通过该目标血缘树可以展示数据表与数据表之间的关系,数据表与字段之间的关系,以及字段与字段之间的关系。
以下将结合图8对本公开提供的结构化查询语言数据的解析装置进行描述。
图8示意性示出了根据本公开实施例的结构化查询语言数据的解析装置的框图。
如图8所示,结构化查询语言数据的解析装置800包括解析模块810、第一确定模块820、第二确定模块830和扩展模块840
解析模块810,用于对结构化查询语言数据进行解析,得到抽象语法树。
第一确定模块820,用于根据抽象语法树,确定结构化查询语言数据中用于数据选取的多个目标语句块,以及多个目标语句块之间的层级关系。
第二确定模块830,用于根据多个目标语句块和多个目标语句块之间的层级关系,确定原始血缘树。
扩展模块840,用于根据元数据,对原始血缘树进行扩展,得到目标血缘树,作为解析结果。
根据本公开的实施例,本公开还提供了一种电子设备、一种可读存储介质和一种计算机程序产品。
图9示意性示出了可以用来实施本公开的实施例的示例电子设备900的框图。电子设备旨在表示各种形式的数字计算机,诸如,膝上型计算机、台式计算机、工作台、个人数字助理、服务器、刀片式服务器、大型计算机、和其它适合的计算机。电子设备还可以表示各种形式的移动装置,诸如,个人数字处理、蜂窝电话、智能电话、可穿戴设备和其它类似的计算装置。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本公开的实现。
如图9所示,设备900包括计算单元901,其可以根据存储在只读存储器(ROM)902中的计算机程序或者从存储单元908加载到随机访问存储器(RAM)903中的计算机程序,来执行各种适当的动作和处理。在RAM 903中,还可存储设备900操作所需的各种程序和数据。计算单元901、ROM 902以及RAM 903通过总线904彼此相连。输入/输出(I/O)接口905也连接至总线904。
设备900中的多个部件连接至I/O接口905,包括:输入单元906,例如键盘、鼠标等;输出单元907,例如各种类型的显示器、扬声器等;存储单元908,例如磁盘、光盘等;以及通信单元909,例如网卡、调制解调器、无线通信收发机等。通信单元909允许设备900通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元901可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元901的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元901执行上文所描述的各个方法和处理,例如结构化查询语言数据的解析方法。例如,在一些实施例中,结构化查询语言数据的解析方法可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元908。在一些实施例中,计算机程序的部分或者全部可以经由ROM 902和/或通信单元909而被载入和/或安装到设备900上。当计算机程序加载到RAM 903并由计算单元901执行时,可以执行上文描述的结构化查询语言数据的解析方法的一个或多个步骤。备选地,在其他实施例中,计算单元901可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行结构化查询语言数据的解析方法。
本文中以上描述的系统和技术的各种实施方式可以在数字电子电路系统、集成电路系统、现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、复杂可编程逻辑设备(CPLD)、计算机硬件、固件、软件、和/或它们的组合中实现。这些各种实施方式可以包括:实施在一个或者多个计算机程序中,该一个或者多个计算机程序可在包括至少一个可编程处理器的可编程系统上执行和/或解释,该可编程处理器可以是专用或者通用可编程处理器,可以从存储系统、至少一个输入装置、和至少一个输出装置接收数据和指令,并且将数据和指令传输至该存储系统、该至少一个输入装置、和该至少一个输出装置。
用于实施本公开的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
为了提供与用户的交互,可以在计算机上实施此处描述的系统和技术,该计算机具有:用于向用户显示信息的显示装置(例如,CRT(阴极射线管)或者LCD(液晶显示器)监视器);以及键盘和指向装置(例如,鼠标或者轨迹球),用户可以通过该键盘和该指向装置来将输入提供给计算机。其它种类的装置还可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的传感反馈(例如,视觉反馈、听觉反馈、或者触觉反馈);并且可以用任何形式(包括声输入、语音输入或者、触觉输入)来接收来自用户的输入。
可以将此处描述的系统和技术实施在包括后台部件的计算系统(例如,作为数据服务器)、或者包括中间件部件的计算系统(例如,应用服务器)、或者包括前端部件的计算系统(例如,具有图形用户界面或者网络浏览器的用户计算机,用户可以通过该图形用户界面或者该网络浏览器来与此处描述的系统和技术的实施方式交互)、或者包括这种后台部件、中间件部件、或者前端部件的任何组合的计算系统中。可以通过任何形式或者介质的数字数据通信(例如,通信网络)来将系统的部件相互连接。通信网络的示例包括:局域网(LAN)、广域网(WAN)和互联网。
计算机系统可以包括客户端和服务器。客户端和服务器一般远离彼此并且通常通过通信网络进行交互。通过在相应的计算机上运行并且彼此具有客户端-服务器关系的计算机程序来产生客户端和服务器的关系。
服务器可以是云服务器,又称为云计算服务器或云主机,是云计算服务体系中的一项主机产品,以解决了传统物理主机与VPS服务(″Virtual Private Server″,或简称″VPS″)中,存在的管理难度大,业务扩展性弱的缺陷。服务器也可以为分布式系统的服务器,或者是结合了区块链的服务器。
应该理解,可以使用上面所示的各种形式的流程,重新排序、增加或删除步骤。例如,本发公开中记载的各步骤可以并行地执行也可以顺序地执行也可以不同的次序执行,只要能够实现本公开公开的技术方案所期望的结果,本文在此不进行限制。
上述具体实施方式,并不构成对本公开保护范围的限制。本领域技术人员应该明白的是,根据设计要求和其他因素,可以进行各种修改、组合、子组合和替代。任何在本公开的精神和原则之内所作的修改、等同替换和改进等,均应包含在本公开保护范围之内。

Claims (8)

1.一种结构化查询语言数据的解析方法,包括:
根据预定字典,对查询语言数据中的语法单元进行词法解析,以将所述结构化查询语言数据拆分为不可再分的语法单元;
根据所述语法单元,确定抽象语法树,其中,所述抽象语法树中的节点与所述结构化查询语言数据中的语法单元一一对应;
确定所述抽象语法树中与数据选取相关的多个目标分支以及所述多个目标分支之间的层级关系;
根据所述多个目标分支中的语法节点,确定多个目标语句块,并根据所述多个目标分支之间的层级关系,确定所述多个目标语句块之间的层级关系,其中,所述目标语句块包括主语句块和附属语句块,其中,所述附属语句块包括子查询语句块、主合并语句块、子合并语句块、主复用查询语句块和子复用查询语句块;
提取所述多个目标语句块中的表信息和字段信息;其中,所述字段信息包括所述主语句块的字段信息和所述附属语句块的字段信息;
根据所述表信息和所述字段信息,确定原始血缘树中的多个表节点;
根据与所述表信息和所述字段信息对应的目标语句块之间的层级关系,确定所述多个表节点之间的层级关系;
将所述多个表节点压入栈中,以从底向上的层序遍历所述原始血缘树中的每个表节点;
提取所述多个表节点中的字段信息;
根据所述多个表节点之间的层级关系,确定所述表信息与所述字段信息的从属关系;以及
根据元数据,对所述原始血缘树进行扩展,得到目标血缘树,作为解析结果。
2.根据权利要求1所述的方法,其中,对结构化查询语言数据进行解析,得到抽象语法树,包括:
将所述结构化查询语言数据拆分为多个语法单元;
对所述多个语法单元进行语法分析,得到所述多个语法单元之间的上下文关系;
根据所述多个语法单元,确定所述抽象语法树中的多个语法节点;以及
根据所述多个语法单元之间的上下文关系,确定所述多个语法节点之间的层级关系。
3.根据权利要求1所述的方法,其中,所述目标语句块还包括数据表语句块;
所述提取所述多个目标语句块中的表信息和字段信息还包括:
在所述目标语句块包括数据表语句块的情况下,提取所述数据表语句块中的表信息。
4.根据权利要求1所述的方法,其中,所述根据元数据,对所述原始血缘树进行扩展,包括:
针对所述原始血缘树中每个表节点,
在所述表节点包含表信息的情况下,根据所述元数据,确定与所述表信息对应的第一扩展字段,并将所述第一扩展字段添加至所述表节点中;以及
在所述表节点包含字段信息且所述字段信息指示的是未知字段的情况下,根据所述元数据,确定与所述字段信息对应的第二扩展字段,并将所述第二扩展字段添加至所述表节点中。
5.根据权利要求1-4中任一项所述的方法,还包括:
根据所述解析结果,对目标数据进行数据溯源,得到与所述目标数据对应的相关字段信息和/或相关表信息。
6.一种结构化查询语言数据的解析装置,包括:
解析模块,用于根据预定字典,对查询语言数据中的语法单元进行词法解析,以将所述结构化查询语言数据拆分为不可再分的语法单元;根据所述语法单元,确定抽象语法树,其中,所述抽象语法树中的节点与所述结构化查询语言数据中的语法单元一一对应;
第一确定模块,用于确定所述抽象语法树中与数据选取相关的多个目标分支以及所述多个目标分支之间的层级关系;根据所述多个目标分支中的语法节点,确定多个目标语句块,并根据所述多个目标分支之间的层级关系,确定所述多个目标语句块之间的层级关系,其中,所述目标语句块包括主语句块和附属语句块,其中,所述附属语句块包括子查询语句块、主合并语句块、子合并语句块、主复用查询语句块和子复用查询语句块;
第二确定模块,用于
提取所述多个目标语句块中的表信息和字段信息,其中,所述字段信息包括所述主语句块的字段信息和所述附属语句块的字段信息;
根据所述表信息和所述字段信息,确定原始血缘树中的多个表节点;
根据与所述表信息和所述字段信息对应的目标语句块之间的层级关系,确定所述多个表节点之间的层级关系,以得到所述原始血缘树;
将所述多个表节点压入栈中,以从底向上的层序遍历所述原始血缘树中的每个表节点;
提取所述多个表节点中的字段信息;
根据所述多个表节点之间的层级关系,确定所述表信息与所述字段信息的从属关系;以及
扩展模块,用于根据元数据,对所述原始血缘树进行扩展,得到目标血缘树,作为解析结果。
7.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-5中任一项所述的方法。
8.一种存储有计算机指令的非瞬时计算机可读存储介质,其中,所述计算机指令用于使所述计算机执行根据权利要求1-5中任一项所述的方法。
CN202210371577.8A 2022-04-08 2022-04-08 结构化查询语言数据的解析方法、装置和电子设备 Active CN114676678B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210371577.8A CN114676678B (zh) 2022-04-08 2022-04-08 结构化查询语言数据的解析方法、装置和电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210371577.8A CN114676678B (zh) 2022-04-08 2022-04-08 结构化查询语言数据的解析方法、装置和电子设备

Publications (2)

Publication Number Publication Date
CN114676678A CN114676678A (zh) 2022-06-28
CN114676678B true CN114676678B (zh) 2023-10-27

Family

ID=82078690

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210371577.8A Active CN114676678B (zh) 2022-04-08 2022-04-08 结构化查询语言数据的解析方法、装置和电子设备

Country Status (1)

Country Link
CN (1) CN114676678B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117370377B (zh) * 2023-12-05 2024-02-06 子亥科技(成都)有限公司 一种基于结构化查询语言的三维场景管理方法及装置
CN117370620B (zh) * 2023-12-08 2024-04-05 广东航宇卫星科技有限公司 一种数据血缘的构建方法、装置、终端设备及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104424269A (zh) * 2013-08-30 2015-03-18 中国电信股份有限公司 数据血统分析方法与装置
CN109299073A (zh) * 2018-10-19 2019-02-01 杭州数梦工场科技有限公司 一种数据血缘的生成方法、系统、电子设备和存储介质
CN109325078A (zh) * 2018-09-18 2019-02-12 拉扎斯网络科技(上海)有限公司 基于结构数据的数据血缘确定方法及装置
CN113032362A (zh) * 2021-03-18 2021-06-25 广州虎牙科技有限公司 数据血缘分析方法、装置、电子设备和存储介质
CN113127478A (zh) * 2019-12-31 2021-07-16 奇安信科技集团股份有限公司 数据内生血缘关系的分析方法、装置和计算机设备
CN113672628A (zh) * 2021-10-22 2021-11-19 中航金网(北京)电子商务有限公司 数据血缘分析方法、终端设备及介质
CN113961584A (zh) * 2021-10-20 2022-01-21 平安银行股份有限公司 字段血缘分析方法、装置、电子设备及存储介质
CN114238416A (zh) * 2021-12-24 2022-03-25 四川新网银行股份有限公司 一种生成FlinkSQL字段血缘的方法及系统
CN114265945A (zh) * 2021-12-30 2022-04-01 多点生活(武汉)科技有限公司 血缘关系提取方法、装置及电子设备

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104424269A (zh) * 2013-08-30 2015-03-18 中国电信股份有限公司 数据血统分析方法与装置
CN109325078A (zh) * 2018-09-18 2019-02-12 拉扎斯网络科技(上海)有限公司 基于结构数据的数据血缘确定方法及装置
CN109299073A (zh) * 2018-10-19 2019-02-01 杭州数梦工场科技有限公司 一种数据血缘的生成方法、系统、电子设备和存储介质
CN113127478A (zh) * 2019-12-31 2021-07-16 奇安信科技集团股份有限公司 数据内生血缘关系的分析方法、装置和计算机设备
CN113032362A (zh) * 2021-03-18 2021-06-25 广州虎牙科技有限公司 数据血缘分析方法、装置、电子设备和存储介质
CN113961584A (zh) * 2021-10-20 2022-01-21 平安银行股份有限公司 字段血缘分析方法、装置、电子设备及存储介质
CN113672628A (zh) * 2021-10-22 2021-11-19 中航金网(北京)电子商务有限公司 数据血缘分析方法、终端设备及介质
CN114238416A (zh) * 2021-12-24 2022-03-25 四川新网银行股份有限公司 一种生成FlinkSQL字段血缘的方法及系统
CN114265945A (zh) * 2021-12-30 2022-04-01 多点生活(武汉)科技有限公司 血缘关系提取方法、装置及电子设备

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
金成植.《编译程序构造原理和实现技术》.高等教育出版社,2000,276-277. *

Also Published As

Publication number Publication date
CN114676678A (zh) 2022-06-28

Similar Documents

Publication Publication Date Title
US20190146985A1 (en) Natural language question answering method and apparatus
CN110908997B (zh) 数据血缘构建方法、装置、服务器及可读存储介质
KR102230661B1 (ko) Sql 검토 방법, 장치, 서버 및 저장 매체
CN114676678B (zh) 结构化查询语言数据的解析方法、装置和电子设备
US9971967B2 (en) Generating a superset of question/answer action paths based on dynamically generated type sets
CN111177315B (zh) 知识图谱的更新方法、装置及计算机可读存储介质
CN112015722A (zh) 数据库管理方法、数据血缘分析方法以及相关装置
CN113836314A (zh) 知识图谱构建方法、装置、设备以及存储介质
CN115145924A (zh) 数据处理方法、装置、设备及存储介质
CN108694172B (zh) 信息输出方法和装置
CN111492364B (zh) 数据标注方法、装置及存储介质
CN107644103B (zh) 一种可追溯信息来源的信息存储的方法和系统
CN116185389A (zh) 一种代码生成方法、装置、电子设备及介质
CN112860811B (zh) 数据血缘关系的确定方法、装置、电子设备和存储介质
JP2015225662A (ja) 人名ユニット辞書の拡張方法、人名言語の認識方法及び人名言語の認識装置
CN115080607A (zh) 一种结构化查询语句的优化方法、装置、设备及存储介质
CN115455091A (zh) 数据生成方法、装置、电子设备和存储介质
CN114443802A (zh) 一种接口文档处理方法、装置、电子设备和存储介质
CN111078727A (zh) 一种简要描述生成方法、装置及计算机可读存储介质
CN116303370B (zh) 一种脚本血缘解析方法、装置、存储介质、设备及产品
CN116089459B (zh) 数据检索方法、装置、电子设备及存储介质
CN115458103B (zh) 医疗数据处理方法、装置、电子设备及可读存储介质
CN113821533B (zh) 数据查询的方法、装置、设备以及存储介质
US20230205746A1 (en) Determination of recommended column types for columns in tabular data
CN118132550A (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
GR01 Patent grant
GR01 Patent grant