CN117370620B - 一种数据血缘的构建方法、装置、终端设备及存储介质 - Google Patents

一种数据血缘的构建方法、装置、终端设备及存储介质 Download PDF

Info

Publication number
CN117370620B
CN117370620B CN202311674786.0A CN202311674786A CN117370620B CN 117370620 B CN117370620 B CN 117370620B CN 202311674786 A CN202311674786 A CN 202311674786A CN 117370620 B CN117370620 B CN 117370620B
Authority
CN
China
Prior art keywords
field
type
blood
node
edge
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
CN202311674786.0A
Other languages
English (en)
Other versions
CN117370620A (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.)
GUANGDONG HANGYU SATELLITE TECHNOLOGY CO LTD
Original Assignee
GUANGDONG HANGYU SATELLITE 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 GUANGDONG HANGYU SATELLITE TECHNOLOGY CO LTD filed Critical GUANGDONG HANGYU SATELLITE TECHNOLOGY CO LTD
Priority to CN202311674786.0A priority Critical patent/CN117370620B/zh
Publication of CN117370620A publication Critical patent/CN117370620A/zh
Application granted granted Critical
Publication of CN117370620B publication Critical patent/CN117370620B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9027Trees
    • 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/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/253Grammatical analysis; Style critique
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本发明公开了一种数据血缘的构建方法、装置、终端设备及存储介质,所述方法,在获取SQL脚本后,对SQL脚本中的SQL语句进行解析,生成SQL语句对应的抽象语法树,然后根据抽象语法树中各节点之间的关系,构建用于表征各个节点之间的血缘关系的血缘二叉树,接着对血缘二叉树中的各表类型节点进行解析,获取各表类型节点所对应的字段,在遍历过程中将解析的字段逐层上浮至对应的连接符类型节点,以构建出多层字段级血缘。通过实施本发明,可以免去传统由人工手动配置数据血缘的方式,面对庞大的数据量和复杂调度依赖关系,可以更快速的对数据进行追根溯源,降低数据血缘关系的构建难度,提高数据血缘构建的工作效率。

Description

一种数据血缘的构建方法、装置、终端设备及存储介质
技术领域
本发明涉及数据库技术领域,尤其涉及一种数据血缘的构建方法、装置、终端设备及存储介质。
背景技术
在大数据时代中的数据产生、处理、加工、融合、流转、消亡等过程中,数据之间的关系非常复杂,急需一种数据血缘技术,对数据在全生命周期过程中自动记录数据血缘,可以随时当前数据(表、字段、标签)从哪里来、到哪里去,帮助数据生产者以及消费者更好对数据进行追根溯源,提升数据运维、数据治理的效率。随着业务扩张、数仓不断完善,数据中台的各种业务数据的数据量和元数据数量持续增长,面对日益复杂的调度依赖关系,当出现问题时需要快速追溯数据链路,所以需要一种方法高效输出血缘关系,保证血缘的时效性,帮助用户更好进行数据治理。
然而,目前常用的获取血缘关系方法是通过用户手动配置各个表和字段之间的依赖关系,用户手动配置血缘关系工作量大,面对庞大的数据量和复杂调度依赖关系,工作难度大,用户需要投入大量的时间和精力,工作效率低下。
发明内容
本发明提供了一种数据血缘的构建方法、装置、终端设备及存储介质,可以免去传统由人工手动配置数据血缘关系的方式,面对庞大的数据量和复杂调度依赖关系,可以更快速的对数据进行追根溯源,降低数据血缘关系的构建难度,提高工作效率。
本发明提供了一种数据血缘的构建方法,包括:获取SQL脚本,对所述SQL脚本中的SQL语句进行解析,生成所述SQL语句所对应的抽象语法树;
根据所述抽象语法树中各个节点之间的关系,构建用于表征各个节点之间的血缘关系的血缘二叉树;其中,所述血缘二叉树的节点类型包括:表类型节点和连接符类型节点;
遍历所述血缘二叉树中的各个节点,对遍历到的表类型节点进行解析,获取每一表类型节点的字段,并将获取的各个表类型节点的字段逐层上浮至对应的连接符类型节点,以根据所述上浮的各个表类型节点的字段,构建字段级血缘关系;
根据所述字段级血缘关系,生成多层字段级血缘。
进一步地,所述对所述SQL脚本中的SQL语句进行解析,生成所述SQL语句所对应的抽象语法树,包括:
对所述SQL脚本中的SQL语句进行词法解析,获取所述SQL语句所对应的各个单个词语或符号,对所述各个单个词语或符号进行语法解析,生成所述SQL语句所对应的抽象语法树。
进一步地,所述遍历所述血缘二叉树中的各个节点,对遍历到的表类型节点进行解析,获取每一表类型节点的字段,包括:
通过后续遍历的方式,对所述血缘二叉树中的各个节点进行遍历,确定各表类型节点的字段类型,根据所述字段类型对各表类型节点进行解析,以获取每一表类型节点的字段。
进一步地,所述表类型节点的字段类型包括:case when类型、cast类型、group_concat类型、concat类型、自定义函数类型以及括号类型;
所述根据所述字段类型对各表类型节点进行解析,包括:
在确定所述字段类型为case when类型时,解析所述字段中的then或者else表达式;
在确定所述字段类型为cast类型或者group_concat类型时,解析所述字段中的第一个参数表达式;
在确定所述字段类型为concat类型或者自定义函数类型时,遍历所述字段中所有参数的表达式;
在确定所述字段类型为括号类型时,获取所述字段中括号内的表达式。
进一步地,所述将获取的各个表类型节点的字段逐层上浮至对应的连接符类型节点,包括:
在遍历到每一连接符类型节点时,确定与所述连接符类型节点相关联的表类型节点,将所述相关联的表类型节点的字段上浮至所述连接符类型节点。
进一步地,所述根据所述字段级血缘关系,生成多层字段级血缘,包括:
根据所述字段级血缘关系,遍历所述字段级血缘关系所对应的各个字段,对于每一字段,递归追溯所述每一字段所对应的来源字段,以根据所述来源字段,构建所述字段的上层血缘;根据构建各个字段的上层血缘,生成多层字段级血缘。
在上述方法项实施例的基础上,本发明对应提供了装置项实施例;
本发明提供了一种数据血缘的构建装置,包括:脚本获取模块、血缘二叉树模块、血缘关系模块以及字段级血缘模块;
所述脚本获取模块,用于获取SQL脚本,对所述SQL脚本中的SQL语句进行解析,生成所述SQL语句所对应的抽象语法树;
所述血缘二叉树模块,用于根据所述抽象语法树中各个节点之间的关系,构建用于表征各个节点之间的血缘关系的血缘二叉树;其中,所述血缘二叉树的节点类型包括:表类型节点和连接符类型节点;
所述血缘关系模块,用于遍历所述血缘二叉树中的各个节点,对遍历到的表类型节点进行解析,获取每一表类型节点的字段,并将获取的各个表类型节点的字段逐层上浮至对应的连接符类型节点,以根据所述上浮的各个表类型节点的字段,构建字段级血缘关系;
所述字段级血缘模块,用于根据所述字段级血缘关系,生成多层字段级血缘。
在上述方法项实施例的基础上,本发明对应提供了一终端设备项实施例;
本发明提供了一种终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现本发明任意一项所述的数据血缘的构建方法。
在上述方法项实施例的基础上,本发明对应提供了一存储介质项实施例;
本发明提供了一种存储介质,所述存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述存储介质所在设备执行本发明任意一项所述的数据血缘的构建方法。
本发明的实施例,具有如下有益效果:
本发明提供了一种数据血缘的构建方法、装置、终端设备及存储介质;所述方法,在获取SQL脚本后,对SQL脚本中的SQL语句进行解析,生成SQL语句对应的抽象语法树,然后根据抽象语法树中各节点之间的关系,构建用于表征各个节点之间的血缘关系的血缘二叉树,然后对血缘二叉树中的各表类型节点进行解析,获取各表类型节点所对应的字段,在遍历过程中将解析的字段逐层上浮至对应的连接符类型节点,以构建出字段级血缘关系;最后再根据所构建的字段级血缘关系,生成对应的多层字段级血缘。通过实施本发明,可以免去传统由人工手动配置数据血缘关系的方式,面对庞大的数据量和复杂调度依赖关系,可以更快速的对数据进行追根溯源,降低数据血缘关系的构建难度,提高工作效率。
附图说明
图1是本发明一实施例提供的一种数据血缘的构建方法流程示意图;
图2是本发明一实施例提供的解析得到语法树执行示意图;
图3是本发明一实施例提供的 SQL解析得到的语法树示意图;
图4是本发明一实施例提供的解析语法树得到血缘二叉树示意图;
图5是本发明一实施例提供的遍历血缘二叉树示意图;
图6是本发明一实施例提供的构造多层字段级数据血缘关系执行示意图;
图7是本发明一实施例提供的一种数据血缘的构建装置的结构示意图。
具体实施方式
下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,一实施例提供的一种数据血缘的构建方法,包括:
步骤S101:获取SQL脚本,对所述SQL脚本中的SQL语句进行解析,生成所述SQL语句所对应的抽象语法树;
步骤S102:根据所述抽象语法树中各个节点之间的关系,构建用于表征各个节点之间的血缘关系的血缘二叉树;其中,所述血缘二叉树的节点类型包括:表类型节点和连接符类型节点;
步骤S103:遍历所述血缘二叉树中的各个节点,对遍历到的表类型节点进行解析,获取每一表类型节点的字段,并将获取的各个表类型节点的字段逐层上浮至对应的连接符类型节点,以根据所述上浮的各个表类型节点的字段,构建字段级血缘关系;
步骤S104:根据所述字段级血缘关系,生成多层字段级血缘。
对于步骤S101,在一个优选的实施例中,对所述SQL脚本中的SQL语句进行词法解析,获取所述SQL语句所对应的各个单个词语或符号,对所述各个单个词语或符号进行语法解析,生成所述SQL语句所对应的抽象语法树,具体包括:
如图2所示,词法分析器先将SQL语句分解为单个词语或符号,存储在token对象中(token在编译原理中指高级程序语言最小的单元)。接着遍历token,根据SQL语言标准,对SQL中的关键字、标识符、操作符、常量、终结符进行了定义和识别。
语法分析器是基于开源的SQL语法解析组件将token对象转化为语法树,例如SQL:
insert into T (t1, t2, t3)
select a1 as t1, b1 as t2, c1 as t3
from A
inner join B on a2=b2
left join C on a3=c3
语法解析器将其解析为insert into T (t1, t2, t3)和select子句。
示意性的,如图3所示,从顶层完整SQL语句一层层往下解析拆分直至token级别,最后构造出一棵语法树,具体执行过程包括:
先对insert into T (t1, t2, t3)逐个解析,拆分成“insert”“into”“T”“(t1,t2,t3)”;因为前3个已经到了token级别,无法拆分,所以只需要对最后的“(t1,t2,t3)”进行逐个解析拆分。
对于select子句,解析拆分成“select”“字段列表”“from子句”;对于“select”已经到了token级别,无法拆分;对于“字段列表”进行逐个解析拆分为“字段信息”(如“a1 ast1”)和“逗号”,然后对“字段信息”拆分为“字段名”“as”“字段别名”(如“a1”“as”“t1”);对于from子句需要解析拆分出“from A”“inner子句”“left join子句”,接着对这3个子句进行解析;“from A”拆分出“from”“A”;“inner子句”拆分成“inner”“join”“B”“on a2=b2”,因为前3个已经到了token级别,无法拆分,所以只需要对最后的“on a2=b2”进行拆分为“on”“a2”“=”“b2”;“left join子句”拆分出“left”“join”“C”“on a3=c3”,因为前3个已经到了token级别,无法拆分,所以只需要对最后的“on a3=c3”进行拆分为“on”“a3”“=”“c3”。
对于步骤S102,在一个优选的实施例中,构建用于表征各个节点之间的血缘关系的血缘二叉树,具体包括:
解析上述得到的抽象语法树,根据抽象语法树中各个表和表之间的关系构造一棵血缘二叉树,树的每个节点都是表级的节点,节点类型包括但不限于:表类型节点和连接符类型节点;树的每个有向边都说明了血缘的来源节点和目标节点。
示意性的,如图4所示,二叉树为根节点为目标表T,T的左子节点为连接符leftjoin;T的左子节点有两个子节点,左边的为连接符inner join,右边为表C;T的左子节点的左子节点有两个子节点,左边的为表A,右边的为表B。
对于步骤S103,在一个优选的实施例中,遍历所述血缘二叉树中的各个节点,对遍历到的表类型节点进行解析,获取每一表类型节点的字段,具体包括:
通过后续遍历的方式,对所述血缘二叉树中的各个节点进行遍历,确定各表类型节点的字段类型,根据所述字段类型对各表类型节点进行解析,以获取每一表类型节点的字段,并将字段的字段名和字段别名的映射关系存储在内存中。
血缘二叉树中每个表类型节点都有自己的字段,而上级表类型节点的字段来源于左右子节点中表类型子节点的字段,所以本发明采用二叉树后序遍历算法,遍历血缘树的每个节点,解析每个节点的表中字段。
所述将获取的各个表类型节点的字段逐层上浮至对应的连接符类型节点,具体包括:
在遍历到每一连接符类型节点时,确定与所述连接符类型节点相关联的表类型节点,将所述相关联的表类型节点的字段上浮至所述连接符类型节点。
示意性的,如图5所示,遍历到节点“表A”解析得到字段a1,遍历到节点“表B”解析得到字段b1;遍历到表A和表B的上级节点“inner join”时,将表A和表B的字段上浮;遍历到节点“表C”解析得到字段c1;遍历到表C的上级节点“left join”时,将“inner join”字段a1,b1和“表C”的字段c1上浮;遍历到节点“表T”得到字段,将“left join”字段a1, b1, c1上浮。然后根据之前内存中存储的字段名、字段别名的映射关系,通过字段名a1,b1,c1获取到对应的别名t1, t2, t3,构造出字段级血缘关系:表T的字段t1来源于表A的字段a1,表T的字段t2来源于表B的字段b1,表T的字段t3来源于表C的字段c1。
在一个优选的实施例中,所述表类型节点的字段类型包括但不限于:case when类型、cast类型、group_concat类型、concat类型、自定义函数类型以及括号类型;
所述根据所述字段类型对各表类型节点进行解析,具体包括:
在确定所述字段类型为case when类型时,解析所述字段中的then或者else表达式;
在确定所述字段类型为cast类型或者group_concat类型时,解析所述字段中的第一个参数表达式;
在确定所述字段类型为concat类型或者自定义函数类型时,遍历所述字段中所有参数的表达式;
在确定所述字段类型为括号类型时,获取所述字段中括号内的表达式;
在确定所述字段类型为普通字段类型时,将字段重新存储到表类型节点中。
示意性的,如图6所示,在遍历的过程中需要针对字段的表达式进行解析,首先判断的表达式类型:
(1)case when类型,解析then或者else子句的表达式,如果表达式不是普通字段类型,则继续递归解析处理,直至得到普通字段类型,按照普通字段类型继续处理;
(2)cast类型或group_concat类型,这些是数据库自带函数,解析函数的第一个参数,如果不是普通字段类型,则继续递归解析处理,直至得到普通字段类型,按照普通字段类型继续处理;
(3)concat类型或自定义函数类型,需要循环解析函数的所有参数,如果不是普通字段类型,则继续递归解析处理,直至得到普通字段类型,按照普通字段类型继续处理。
(4)括号类型,需要解析括号内的表达式,直至得到普通字段类型,按照普通字段类型继续处理。
(5)普通字段类型,需要将字段重新存储到表类型节点中。
最后将获取到的各个表类型节点中的普通字段类型字段按照上述逐层上浮至对应的连接符类型节点,构造出字段级血缘关系。
在一个优选的实施例中,所述根据所述字段级血缘关系,生成多层字段级血缘,具体包括:
根据所述字段级血缘关系,遍历所述字段级血缘关系所对应的各个字段,对于每一字段,递归追溯所述每一字段所对应的来源字段,以根据所述来源字段,构建所述字段的上层血缘;根据构建各个字段的上层血缘,生成多层字段级血缘。
可选的,SQL解析得到的血缘关系,存储血缘关系的来源字段、来源表、目标字段、目标表在数据库中。后续其他SQL解析得到的血缘关系,遍历每段血缘关系,判断其来源字段是否已经作为其他血缘关系的目标字段存储在数据库中,如果是则递归追溯上一层来源字段,直至无法继续追溯,构造多层字段级血缘。
综上,本发明构造多层字段级数据血缘关系执行示意图如图6所示。
通过实施本发明上述实施例具有如下效果:
1.本发明通过数据全生命周期过程的SQL脚本进行词法解析和语法解析自动提取字段血缘关系,构造多层字段级数据血缘关系,形成数据生命周期过程中自动记录数据血缘,实现数据中台数据资产可以快速追根溯源。
2.本发明可以免去传统由人工手动配置数据血缘关系的方式,面对庞大的数据量和复杂调度依赖关系,可以更快速的对数据进行追根溯源,降低数据血缘关系的构建难度,提高工作效率。
在上述方法项实施例的基础上,本发明对应提供了装置项实施例。
如图7所示,本发明一实施例提供了一种数据血缘的构建装置,包括:脚本获取模块、血缘二叉树模块、血缘关系模块以及字段级血缘模块;
所述脚本获取模块,用于获取SQL脚本,对所述SQL脚本中的SQL语句进行解析,生成所述SQL语句所对应的抽象语法树;
所述血缘二叉树模块,用于根据所述抽象语法树中各个节点之间的关系,构建用于表征各个节点之间的血缘关系的血缘二叉树;其中,所述血缘二叉树的节点类型包括:表类型节点和连接符类型节点;
所述血缘关系模块,用于遍历所述血缘二叉树中的各个节点,对遍历到的表类型节点进行解析,获取每一表类型节点的字段,并将获取的各个表类型节点的字段逐层上浮至对应的连接符类型节点,以根据所述上浮的各个表类型节点的字段,构建字段级血缘关系;
所述字段级血缘模块,用于根据所述字段级血缘关系,生成多层字段级血缘。
需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本发明提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
所述领域的技术人员可以清楚地了解到,为的方便和简洁,上述描述的装置的具体工作过程,可参考前述方法实施例中对应的过程,在此不再赘述。
在上述方法项实施例的基础上,本发明对应提供了终端设备项实施例。
本发明另一实施例提供了一种终端设备,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序;所述处理器执行所述计算机程序时,实现本发明任意一实施例的数据血缘的构建方法。
示例性的,在这一实施例中所述计算机程序可以被分割成一个或多个模块,所述一个或者多个模块被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述设备中的执行过程;
所述设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述设备可包括,但不仅限于,处理器、存储器;
所称处理器可以是中央处理模块(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列 (Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述设备的控制中心,利用各种接口和线路连接整个设备的各个部分;
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序等;此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart MediaCard, SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
在上述方法项实施例的基础上,本发明对应提供了存储介质项实施例。
本发明另一实施例提供了一种存储介质,所述存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述存储介质所在的设备执行本发明任意一实施例的数据血缘的构建方法。
在这一实施例中,上述存储介质为计算机可读存储介质,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。
通过实施本发明上述各个实施例,可以进行词法解析和语法解析自动提取字段血缘关系,构造多层字段级数据血缘关系,形成数据生命周期过程中自动记录数据血缘,免去传统由人工手动配置数据血缘关系的方式,提高工作效率。
上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

Claims (5)

1.一种数据血缘的构建方法,其特征在于,包括:
获取SQL脚本,对所述SQL脚本中的SQL语句进行解析,生成所述SQL语句所对应的抽象语法树;
根据所述抽象语法树中各个节点之间的关系,构建用于表征各个节点之间的血缘关系的血缘二叉树;其中,所述血缘二叉树的节点类型包括:表类型节点和连接符类型节点;
通过后续遍历的方式,对所述血缘二叉树中的各个节点进行遍历,确定各表类型节点的字段类型,根据所述字段类型对各表类型节点进行解析,以获取每一表类型节点的字段;在遍历到每一连接符类型节点时,确定与所述连接符类型节点相关联的表类型节点,将所述相关联的表类型节点的字段上浮至所述连接符类型节点,以根据上浮的各个表类型节点的字段,构建字段级血缘关系;其中,所述表类型节点的字段类型包括:case when类型、cast类型、group_concat类型、concat类型、自定义函数类型以及括号类型;在确定所述字段类型为case when类型时,解析所述字段中的then或者else表达式;在确定所述字段类型为cast类型或者group_concat类型时,解析所述字段中的第一个参数表达式;在确定所述字段类型为concat类型或者自定义函数类型时,解析所述字段中所有参数的表达式;在确定所述字段类型为括号类型时,解析所述字段中括号内的表达式;针对各所述表类型节点的字段类型,在解析表达式的过程中,若表达式为非普通字段类型,则继续递归解析处理,直至得到普通字段类型,并将对应的字段存储到表类型节点中;
根据所述字段级血缘关系,遍历所述字段级血缘关系所对应的各个字段;对于每一字段,递归追溯所述每一字段所对应的来源字段,以根据所述来源字段,构建所述字段的上层血缘;根据构建各个字段的上层血缘,生成多层字段级血缘。
2.如权利要求1所述的数据血缘的构建方法,其特征在于,所述对所述SQL脚本中的SQL语句进行解析,生成所述SQL语句所对应的抽象语法树,包括:
对所述SQL脚本中的SQL语句进行词法解析,获取所述SQL语句所对应的各个单个词语或符号,对所述各个单个词语或符号进行语法解析,生成所述SQL语句所对应的抽象语法树。
3.一种数据血缘的构建装置,其特征在于,包括:脚本获取模块、血缘二叉树模块、血缘关系模块以及字段级血缘模块;
所述脚本获取模块,用于获取SQL脚本,对所述SQL脚本中的SQL语句进行解析,生成所述SQL语句所对应的抽象语法树;
所述血缘二叉树模块,用于根据所述抽象语法树中各个节点之间的关系,构建用于表征各个节点之间的血缘关系的血缘二叉树;其中,所述血缘二叉树的节点类型包括:表类型节点和连接符类型节点;
所述血缘关系模块,用于通过后续遍历的方式,对所述血缘二叉树中的各个节点进行遍历,确定各表类型节点的字段类型,根据所述字段类型对各表类型节点进行解析,以获取每一表类型节点的字段;在遍历到每一连接符类型节点时,确定与所述连接符类型节点相关联的表类型节点,将所述相关联的表类型节点的字段上浮至所述连接符类型节点,以根据上浮的各个表类型节点的字段,构建字段级血缘关系;其中,所述表类型节点的字段类型包括:case when类型、cast类型、group_concat类型、concat类型、自定义函数类型以及括号类型;在确定所述字段类型为case when类型时,解析所述字段中的then或者else表达式;在确定所述字段类型为cast类型或者group_concat类型时,解析所述字段中的第一个参数表达式;在确定所述字段类型为concat类型或者自定义函数类型时,解析所述字段中所有参数的表达式;在确定所述字段类型为括号类型时,解析所述字段中括号内的表达式;针对各所述表类型节点的字段类型,在解析表达式的过程中,若表达式为非普通字段类型,则继续递归解析处理,直至得到普通字段类型,并将对应的字段存储到表类型节点中;
所述字段级血缘模块,用于根据所述字段级血缘关系,遍历所述字段级血缘关系所对应的各个字段;对于每一字段,递归追溯所述每一字段所对应的来源字段,以根据所述来源字段,构建所述字段的上层血缘;根据构建各个字段的上层血缘,生成多层字段级血缘。
4.一种终端设备,其特征在于,包括处理器、存储器以及存储在所述存储器中且被配置为由所述处理器执行的计算机程序,所述处理器执行所述计算机程序时实现如权利要求1和2中任意一项所述的数据血缘的构建方法。
5.一种存储介质,其特征在于,所述存储介质包括存储的计算机程序,其中,在所述计算机程序运行时控制所述存储介质所在设备执行如权利要求1和2中任意一项所述的数据血缘的构建方法。
CN202311674786.0A 2023-12-08 2023-12-08 一种数据血缘的构建方法、装置、终端设备及存储介质 Active CN117370620B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311674786.0A CN117370620B (zh) 2023-12-08 2023-12-08 一种数据血缘的构建方法、装置、终端设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311674786.0A CN117370620B (zh) 2023-12-08 2023-12-08 一种数据血缘的构建方法、装置、终端设备及存储介质

Publications (2)

Publication Number Publication Date
CN117370620A CN117370620A (zh) 2024-01-09
CN117370620B true CN117370620B (zh) 2024-04-05

Family

ID=89394861

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311674786.0A Active CN117370620B (zh) 2023-12-08 2023-12-08 一种数据血缘的构建方法、装置、终端设备及存储介质

Country Status (1)

Country Link
CN (1) CN117370620B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110232056A (zh) * 2019-05-21 2019-09-13 苏宁云计算有限公司 一种结构化查询语言的血缘解析方法及其工具
CN112989412A (zh) * 2021-03-18 2021-06-18 城云科技(中国)有限公司 一种基于sql语句解析的数据脱敏方法及装置
CN114265945A (zh) * 2021-12-30 2022-04-01 多点生活(武汉)科技有限公司 血缘关系提取方法、装置及电子设备
CN114676678A (zh) * 2022-04-08 2022-06-28 北京百度网讯科技有限公司 结构化查询语言数据的解析方法、装置和电子设备
CN114764330A (zh) * 2021-12-17 2022-07-19 深圳市珍爱捷云信息技术有限公司 数据血缘解析方法、装置、电子设备和计算机可读存储介质
CN115080599A (zh) * 2022-07-25 2022-09-20 成都烽顺科技有限公司 一种数据库查询sql字段血缘关系生成方法
CN116186174A (zh) * 2023-02-16 2023-05-30 平安科技(深圳)有限公司 基于数据分析的数据血缘关系图构建方法及相关设备
CN116662367A (zh) * 2023-04-21 2023-08-29 中联重科股份有限公司 用于数据血缘的解析方法、存储介质及处理器
CN116702181A (zh) * 2023-08-09 2023-09-05 北方健康医疗大数据科技有限公司 基于Apache Calcite的数据脱敏方法、系统、设备及介质

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110232056A (zh) * 2019-05-21 2019-09-13 苏宁云计算有限公司 一种结构化查询语言的血缘解析方法及其工具
CN112989412A (zh) * 2021-03-18 2021-06-18 城云科技(中国)有限公司 一种基于sql语句解析的数据脱敏方法及装置
CN114764330A (zh) * 2021-12-17 2022-07-19 深圳市珍爱捷云信息技术有限公司 数据血缘解析方法、装置、电子设备和计算机可读存储介质
CN114265945A (zh) * 2021-12-30 2022-04-01 多点生活(武汉)科技有限公司 血缘关系提取方法、装置及电子设备
CN114676678A (zh) * 2022-04-08 2022-06-28 北京百度网讯科技有限公司 结构化查询语言数据的解析方法、装置和电子设备
CN115080599A (zh) * 2022-07-25 2022-09-20 成都烽顺科技有限公司 一种数据库查询sql字段血缘关系生成方法
CN116186174A (zh) * 2023-02-16 2023-05-30 平安科技(深圳)有限公司 基于数据分析的数据血缘关系图构建方法及相关设备
CN116662367A (zh) * 2023-04-21 2023-08-29 中联重科股份有限公司 用于数据血缘的解析方法、存储介质及处理器
CN116702181A (zh) * 2023-08-09 2023-09-05 北方健康医疗大数据科技有限公司 基于Apache Calcite的数据脱敏方法、系统、设备及介质

Also Published As

Publication number Publication date
CN117370620A (zh) 2024-01-09

Similar Documents

Publication Publication Date Title
US11106440B2 (en) Source code translation
US20220091827A1 (en) Pruning Engine
US10698682B1 (en) Computerized software development environment with a software database containing atomic expressions
US11983640B2 (en) Generating question templates in a knowledge-graph based question and answer system
CN113032362B (zh) 数据血缘分析方法、装置、电子设备和存储介质
US10430469B2 (en) Enhanced document input parsing
US9122540B2 (en) Transformation of computer programs and eliminating errors
EP3671526A1 (en) Dependency graph based natural language processing
CN111078729B (zh) 医疗数据溯源方法、装置、系统、存储介质以及电子设备
CN111666372B (zh) 解析查询词query的方法、装置、电子设备和可读存储介质
CN109977175B (zh) 数据配置查询方法和装置
CN113986241A (zh) 一种基于知识图谱的业务规则的配置方法以及装置
CN113419789A (zh) 数据模型脚本的生成方法和装置
US11573790B2 (en) Generation of knowledge graphs based on repositories of code
US10146530B1 (en) Simulating and evaluating code branch merge
CN112988163B (zh) 编程语言智能适配方法、装置、电子设备和介质
US11500619B1 (en) Indexing and accessing source code snippets contained in documents
CN113326261B (zh) 数据血缘关系提取方法、装置及电子设备
CN113900944A (zh) 一种应用于Flink SQL的逻辑验证方法和装置
CN113703739A (zh) 基于omiga引擎的跨语言融合计算方法、系统及终端
CN117370620B (zh) 一种数据血缘的构建方法、装置、终端设备及存储介质
CN108509187B (zh) 一种自动生成软件平台mib功能代码的方法及系统
CN115292347A (zh) 一种基于规则的主动式sql算法性能检查装置及方法
CN113343036B (zh) 基于关键拓扑结构分析的数据血缘关系解析方法和系统
CN112905232B (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