CN111538744A - 数据血缘的处理方法及装置 - Google Patents
数据血缘的处理方法及装置 Download PDFInfo
- Publication number
- CN111538744A CN111538744A CN202010650668.6A CN202010650668A CN111538744A CN 111538744 A CN111538744 A CN 111538744A CN 202010650668 A CN202010650668 A CN 202010650668A CN 111538744 A CN111538744 A CN 111538744A
- Authority
- CN
- China
- Prior art keywords
- syntax tree
- abstract syntax
- field
- target
- data table
- 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.)
- Granted
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
技术领域
本发明涉及大数据、数据仓库领域,具体而言,涉及一种数据血缘的处理方法及装置。
背景技术
数据血缘分析能够理清数据间的依赖关系和流转流程。
但在进行血缘分析时没有数据结构来保存数据血缘分析结果。此外,在进行数据血缘分析时只能在运行时分析不能提前,从而无法在业务运行前基于血缘分析做一些业务拦截等处理。
针对相关技术中,在数据血缘分析结果中没有数据结构进行保存和无法提前进行数据血缘分析的问题,目前尚未存在有效的解决方案。
发明内容
本发明实施例提供了一种数据血缘的处理方法及装置,以至少解决相关技术中在数据血缘分析结果中没有数据结构进行保存和无法提前进行数据血缘分析的问题。
根据本发明的一个实施例,提供了一种数据血缘的处理方法,包括:通过遍历目标抽象语法树生成第一抽象语法树,其中,所述目标抽象语法树通过解析查询语句确定,所述第一抽象语法树包括:用于生成血缘关系的抽象语法树;根据所述第一抽象语法树中包括的第二抽象语法树生成与所述第二抽象语法树对应的目标数据表,其中,所述第二抽象语法树包括:用于生成数据表的抽象语法树;根据所述第一抽象语法树中包括的第三抽象语法树生成与所述第三抽象语法树对应的目标字段,其中,所述第三抽象语法树包括:用于生成字段的抽象语法树;根据所述目标数据表和所述目标字段组成的关系链,确定数据的血缘关系。
根据本发明的另一个实施例,提供了一种数据血缘的处理装置,包括: 第一生成模块,用于通过遍历目标抽象语法树生成第一抽象语法树,其中,所述目标抽象语法树通过解析查询语句确定,所述第一抽象语法树包括:用于生成血缘关系的抽象语法树;第二生成模块,用于根据所述第一抽象语法树中包括的第二抽象语法树生成与所述第二抽象语法树对应的目标数据表,其中,所述第二抽象语法树包括:用于生成数据表的抽象语法树;第三生成模块,用于根据所述第一抽象语法树中包括的第三抽象语法树生成与所述第三抽象语法树对应的目标字段,其中,所述第三抽象语法树包括:用于生成字段的抽象语法树;确定模块,用于根据所述目标数据表和所述目标字段确定数据的血缘关系。
根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。
通过本发明,由于通过遍历目标抽象语法树生成第一抽象语法树,根据所述第一抽象语法树中包括的第二抽象语法树生成与所述第二抽象语法树对应的目标数据表,根据所述第一抽象语法树中包括的第三抽象语法树生成与所述第三抽象语法树对应的目标字段,从而根据所述目标数据表和所述目标字段确定数据的血缘关系。因此,可以解决在数据血缘分析结果中没有数据结构进行保存和无法提前进行数据血缘分析的问题,达到分析结果保存在自定义的可扩展的数据结构中的效果。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明可选实施例的数据血缘的处理方法的流程图;
图2是根据本发明可选实施例的数据血缘的处理装置的结构框图;
图3是根据本发明可选实施例的数据结构示意图;
图4是根据本发明可选实施例的链式结构示意图;
图5是根据本发明可选实施例的数据持久化示意图;
图6是根据本发明可选实施例的数据前端展示示意图;
图7是根据本发明可选实施例的数据前端展示示意图;
图8是根据本发明可选实施例的依赖链压缩的流程图。
具体实施方式
下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
在申请实施例中使用到的技术术语如下:
SQL:结构化查询语言(Structured Query Language),是一种特殊的编程语言。
SQL方言:不同数据库针对自己的特性,对标准SQL进行扩展或裁剪,形成的差异化SQL实现。
Greenplum:基于PostgreSQL实现的开源分布式数据库。
AST:抽象语法树(Abstract Syntax Tree),一种表式源代码语法的树形结构,树上的每个节点都表示源代码是的一种结构。
图数据库:使用图形理论存储实体及实体之间关系信息的数据库。
Antlr4:一种词法和语法分析器生成工具,其英文全称为:Another Tool forLanguage Recognition。
实施例1
本申请实施例一所提供的方法实施例可以在Greenplum SQL分布式数据中进行,可以参考其源码中的词法和语法定义文件(scan.l、gram.y),实现Antlr4的语法定义文件SqlBase.g4,进而可以生成完全支持Greenplum语法的SQL解析器,其解析结果为抽象语法树AST。
在本实施例中提供了一种运行于上述数据库的数据血缘的处理方法,图1是根据本发明实施例的数据血缘的处理的流程图,如图1所示,该流程包括如下步骤:
步骤S102,通过遍历目标抽象语法树生成第一抽象语法树,其中,所述目标抽象语法树通过解析查询语句确定,所述第一抽象语法树包括:用于生成血缘关系的抽象语法树;
步骤S104,根据所述第一抽象语法树中包括的第二抽象语法树生成与所述第二抽象语法树对应的目标数据表,其中,所述第二抽象语法树包括:用于生成数据表的抽象语法树;
步骤S106,根据所述第一抽象语法树中包括的第三抽象语法树生成与所述第三抽象语法树对应的目标字段,其中,所述第三抽象语法树包括:用于生成字段的抽象语法树;
步骤S108,根据所述目标数据表和所述目标字段组成的关系链,确定数据的血缘关系。
通过遍历所述目标抽象语法树生成第一抽象语法树,再继续在第一抽象语法树中包括的第二抽象语法树和第三抽象语法树中生成与所述第二抽象语法树对应的目标数据表和所述第三抽象语法树对应的目标字段。通过所述目标数据表和所述目标字段确得到的中间结果作为依赖链,通过依赖链确定出数据的血缘关系。
通过上述步骤,由于通过遍历目标抽象语法树生成第一抽象语法树,根据所述第一抽象语法树中包括的第二抽象语法树生成与所述第二抽象语法树对应的目标数据表,根据所述第一抽象语法树中包括的第三抽象语法树生成与所述第三抽象语法树对应的目标字段,从而根据所述目标数据表和所述目标字段确定数据的血缘关系。因此,可以解决在数据血缘分析结果中没有数据结构进行保存和无法提前进行数据血缘分析的问题,达到分析结果保存在自定义的可扩展的数据结构中的效果。
通过遍历目标抽象语法树生成第一抽象语法树,包括:通过遍历所述目标抽象语法树确定关系链中的起始位置和目标位置,其中,所述关系链中至少包括:所述目标数据表中包括的至少两个数据表之间的预设关联关系,还可以包括:所述目标数据表与所述目标字段之间的预设关联关系所述目标字段中包括的至少两个字段之间的预设关联关系;根据所述起始位置对应的抽象语法树和所述目标位置对应的抽象语法树生成所述第一抽象语法树。即首在遍历AST时会分析出源AST为和目的AST。
为了建立数据关系中表结构之间的依赖关系,根据所述第一抽象语法树中的第二抽象语法树生成对应的目标数据表之后,还包括:通过解析所述目标数据表中包括的抽象语法树得到第一数据表和第二数据表,其中,所述第一数据表中包括:数据库中的原始表结构,所述第二数据表中包括:与所述原始表结构之间具有引用关系的派生表结构。
为了建立数据关系中字段结构之间的依赖关系,根据所述第一抽象语法树中的第三抽象语法树生成对应的目标字段之后,还包括:通过解析所述目标字段中包括的抽象语法树得到第一字段和第二字段,其中,所述第一字段包括:目标数据表中的原始字段结构,所述第二字段包括:与所述原始字段结构之间具有引用关系的派生字段结构;将所述第一字段和所述第二字段添加到所述目标数据表中。
为了建立数据关系中的依赖关系,根所述目标数据表和所述目标字段确定数据的血缘关系,包括:根据所述目标数据表中的数据库中的原始表结构和与所述原始表结构之间具有引用关系的派生表结构,建立第一级依赖关系;基于所述第一依赖关系确定所述目标字段中目标数据表中的原始字段结构和与所述原始字段结构之间具有引用关系的派生字段结构,建立第二级依赖关系;根据所述第一级依赖关系和所述第二级依赖关系,确定数据的血缘关系。
具体实施时,如图3所示,作为本申请实施例中的数据结构,在图3的类定义中,表结构中RealTable(真实表)是一个真实的、物理上存在的表;DerivedTable (派生表) 是从其它表计算而来的表,是一个虚拟的、不存在的表;字段结构中的RealField(真实字段)、DerivedField(派生字段)概念类似。得到的数据结构是易用的、通用的可扩展的中间结果存储数据结构。具体而言,在所述第一级依赖关系包括:按照预设数据结构保存的所述原始表结构和所述派生表结构,通过扩展所述原始表结构和所述派生表结构确定所述目标数据表。所述第二级依赖关系包括:按照预设数据结构保存的所述原始字段结构和所述派生字段结构,通过扩展所述原始字段结构和所述派生字段结构确定的所述目标字段,所述目标字段和所述目标输数据表两者之间具有预设依赖关系。
在上述步骤的分析解析器生成的抽象语法树AST时,会在三个遍历器实现:
1) ChainVisitor用于分析哪些AST需要被解析以及分析出对应的源AST和目的AST。比如,可以包括CREATE TABLE… AS SELECT…、INSERT INTO … SELECT …、SELECT … INTO…等语句对应的AST是会生成血缘关系的,其它不会生成血缘关系的AST会被过滤掉。
2)TableVisitor用于分析可以生成表的AST,并将其解析成对应的表结构,同时负责调用字段处理逻辑并将处理结果挂载到对应的表上。
3) FieldVisitor用于分析可以生成字段的AST,并将其解析成对应的字段结构返回给TableVisitor。
具体地,以“INSERT INTO t (m, n, o) SELECT x, y, z FROM (SELECT a AS x,foo(b, c) AS y, 33 AS z, d FROM tbl) s”作为示例为例说明前面依赖链分析流程:
首先ChainVisitor在遍历此AST时会分析出源AST为SELECT x, y, z FROM (SELECT aAS x, foo(b, c) AS y, 33 AS z, d FROM tbl) s,目的AST为t (m, n, o),然后将它们交给TableVisitor处理;TableVisitor在处理t (m, n, o)时会将其解析为包含3个字段的真实表,在处理SELECT x, y, z FROM (SELECT a AS x, foo(b, c) AS y, 33 AS z, dFROM tbl) s时,会将其解析为包含3个字段的派生表,此派生表中tables字段引用了一个包含4个字段真实表,此真实表由语句SELECT a AS x, foo(b, c) AS y, 33 AS z, dFROM tbl计算得到;FieldVisitor在处理m, n, o、x, y, z、a, b, c, d时,会解析成真实字段,在处理foo(b,c)时,会解析为1个派生字段,其引用b, c对应的真实字段,在处理常量33时,会解析成1个派生字段,其引用的字段为空,FieldVisitor解析出的字段会交给TableVisitor并由其将字段挂载到对应的真实表或派生表上。通过上述数据结构的分析的结果从表间引用来看,是如图4所示的链式结构。其中,在图4中,中真实表、真实字段的括号内分号前半部分为名称,后半部分为别名;派生表、派生字段的括号内为别名,为null时表示无别名。采用链式结构表示表间依赖关系,不论依赖关系如何复杂,最终都可表示成派生表、真实表这种实体对象,并用链式结构表示出来。
根据前面生成的依赖链,将其中的派生表、派生字段根据依赖关系转换为对应的真实表、真实字段,并保存真实表真实字段信息及字段依赖关系,最终得到的是一个只有两层节点的链式关系。从整个流程上来看,第二步中的链式关系被压缩了,故此流程定义为依赖链压缩,根据所述目标数据表和所述目标字段确定数据的血缘关系,包括:根据字段别名或者索引在所述目标数据表中查找是否存在关联字段,其中,所述关联字段是与所述目标字段对应的原始字段结构关联的字段;在确定所述目标数据表中存在所述关联字段的情况下,判断所述关联字段是否属于目标数据表对应的原始表结构;在所述关联字段属于目标数据表中对应的原始表结构且所述关联字段为原始字段结构的情况下,保存所述关联字段与所述原始表结构的映射关系;在所述关联字段属于目标数据表中对应的原始表结构且所述关联字段不为原始字段结构的情况下,获取非原始字段结构的关联字段后保存所述关联字段与述原始表结构的映射关系;根据所述映射关系确定数据的血缘关系。
具体实施时,上述压缩步骤如图8所示,包括:
步骤S800,开始。
步骤S801,目标表是否合法。
步骤S802,目标表合法,保存真实表信息。
步骤S803,目标表中还有字段未处理。
步骤S804,置搜索表为源表。
步骤S805,根据字段别名或索引到搜索表中找到依赖字段。
步骤S806,依赖字段是否存在。
步骤S807,依赖字段所属表是否是真实表。
步骤S808,如果不是,根据字段名名中的表别名或字段的表引用重置搜索表为对应的对应的表。
步骤S809, 依赖字段是否是真实字段。如果否进入步骤S812
步骤S810,判断依赖字段是否是真实字段。如果否进入步骤S812。如果是进入步骤S811。
步骤S811,依赖表包含同名CTE。
CTE即通用表达式,与派生表类似。
步骤S812,获取派生字段的依赖字段。
步骤S813,是否还有字段未处理。
步骤S814,保存字段映射关系。
步骤S815,置搜索表为CTE表。
步骤S816,结束。
经过上面的流程处理,前面的上述步骤中示例的SQL可以得到表间血缘关系为 t←tbl,字段间血缘关系为t:m ← tbl:a和t:n ← tbl:b, tbl:c。
需要注意的是,上述数据结构设计链式表示方法并不仅适用于SQL的血缘分析,同样适用于对ETL工具或Spark、Flink、Hive等计算引擎的血缘表示。其中,ETL是用来描述将数据从源端经过抽取(Extract)、转换(Transform)、加载(Load)至目的端的过程,通常用来指实现了这个过程和功能的工具。
优选地,根据所述目标数据表和所述目标字段确定数据的血缘关系之前,还包括:在无法确定出所述目标字段所属的目标数据表的情况下,根据数据库中已存在的数据表中查询得到的元数据信息确定所述目标字段所属的目标数据表;或在无法确定出所述目标字段所属的目标数据表的情况下,根据执行查询语句中生成的数据表确定的元数据信息确定所述目标字段所属的目标数据表。
具体实施时,由于在部分情况下,单独依赖语句本身无法判断字段的所属的表,这时可以通过元数据信息辅助判断,或提示错误信息。需要指出的是,元数据可以有多个来源,对于数据库中已存在的表,可以直接查询数据得到无数据信息;对于通过SQL语句在执行过程中生成的表,可以结合语句执行顺序计算出表的元数据信息。
优选地,根据所述目标数据表和所述目标字段确定数据的血缘关系之后,还包括:将所述数据的血缘关系持久化到预设数据库中,其中,所述预设数据库至少包括如下之一:关系型数据库、图数据库。即可以根据需求不做持久化也可以持久化到关系型数据库或者图数据库中。对于图数据库,只需要对应定义两种顶点:表(Table)、字段(Field)。三种关系:表拥有字段(OWN_FIELD)、表依赖表(TABLE_DENPEND)、字段依赖字段(FIELD_DEPEND)。如图5所示。
优选地,根据所述目标数据表和所述目标字段确定数据的血缘关系之后,还包括:根据所述数据的血缘关系中的数据表之间的血缘关系和字段之间的血缘关系响应数据查询请求并在用户查询界面展示。即为前端展示,可以通过任何形式展示出来,如在D3中效果分别如图6和图7所示。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
在本实施例中还提供了一种数据血缘的处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图2是根据本发明实施例的数据血缘的处理装置的结构框图,如图2所示,该装置包括
第一生成模块20,用于通过遍历目标抽象语法树生成第一抽象语法树,其中,所述目标抽象语法树通过解析查询语句确定,所述第一抽象语法树包括:用于生成血缘关系的抽象语法树;
第二生成模块22,用于根据所述第一抽象语法树中包括的第二抽象语法树生成与所述第二抽象语法树对应的目标数据表,其中,所述第二抽象语法树包括:用于生成数据表的抽象语法树;
第三生成模块24,用于根据所述第一抽象语法树中包括的第三抽象语法树生成与所述第三抽象语法树对应的目标字段,其中,所述第三抽象语法树包括:用于生成字段的抽象语法树;
确定模块26,用于根据所述目标数据表和所述目标字段组成的关系链,确定数据的血缘关系。
通过上述模块,由于通过遍历目标抽象语法树生成第一抽象语法树,根据所述第一抽象语法树中包括的第二抽象语法树生成与所述第二抽象语法树对应的目标数据表,根据所述第一抽象语法树中包括的第三抽象语法树生成与所述第三抽象语法树对应的目标字段,从而根据所述目标数据表和所述目标字段确定数据的血缘关系。因此,可以解决在数据血缘分析结果中没有数据结构进行保存和无法提前进行数据血缘分析的问题,达到分析结果保存在自定义的可扩展的数据结构中的效果。
所述第一生成模块20,用于通过遍历目标抽象语法树生成第一抽象语法树,包括:通过遍历所述目标抽象语法树确定关系链中的起始位置和目标位置,其中,所述关系链中至少包括如下之一:所述目标数据表与所述目标字段之间的预设关联关系、所述目标数据表中包括的至少两个数据表之间的预设关联关系、所述目标字段中包括的至少两个字段之间的预设关联关系;根据所述起始位置对应的抽象语法树和所述目标位置对应的抽象语法树生成所述第一抽象语法树。即首在遍历AST时会分析出源AST为和目的AST。
为了建立数据关系中表结构之间的依赖关系,所述第二生成模块22用于根据所述第一抽象语法树中的第二抽象语法树生成对应的目标数据表之后,还包括:通过解析所述目标数据表中包括的抽象语法树得到第一数据表和第二数据表,其中,所述第一数据表中包括:数据库中的原始表结构,所述第二数据表中包括:与所述原始表结构之间具有引用关系的派生表结构。
为了建立数据关系中字段结构之间的依赖关系,所述第三生成模块24用于根据所述第一抽象语法树中的第三抽象语法树生成对应的目标字段之后,还包括:通过解析所述目标字段中包括的抽象语法树得到第一字段和第二字段,其中,所述第一字段包括:目标数据表中的原始字段结构,所述第二字段包括:与所述原始字段结构之间具有引用关系的派生字段结构;将所述第一字段和所述第二字段添加到所述目标数据表中。
为了建立数据关系中的依赖关系,所述第三生成模块24用于根所述目标数据表和所述目标字段确定数据的血缘关系,包括:根据所述目标数据表中的数据库中的原始表结构和与所述原始表结构之间具有引用关系的派生表结构,建立第一级依赖关系;基于所述第一依赖关系确定所述目标字段中目标数据表中的原始字段结构和与所述原始字段结构之间具有引用关系的派生字段结构,建立第二级依赖关系;根据所述第一级依赖关系和所述第二级依赖关系,确定数据的血缘关系。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
S1,通过遍历目标抽象语法树生成第一抽象语法树,其中,所述目标抽象语法树通过解析查询语句确定,所述第一抽象语法树包括:用于生成血缘关系的抽象语法树;
S2,根据所述第一抽象语法树中包括的第二抽象语法树生成与所述第二抽象语法树对应的目标数据表,其中,所述第二抽象语法树包括:用于生成数据表的抽象语法树;
S3,根据所述第一抽象语法树中包括的第三抽象语法树生成与所述第三抽象语法树对应的目标字段,其中,所述第三抽象语法树包括:用于生成字段的抽象语法树;
S4,根据所述目标数据表和所述目标字段确定数据的血缘关系。
可选地,存储介质还被设置为存储用于执行以下步骤的计算机程序:
S1,通过解析所述目标数据表中包括的抽象语法树得到第一数据表和第二数据表,其中,所述第一数据表中包括:数据库中的原始表结构,所述第二数据表中包括:与所述原始表结构之间具有引用关系的派生表结构;
S2,通过解析所述目标字段中包括的抽象语法树得到第一字段和第二字段,其中,所述第一字段包括:目标数据表中的原始字段结构,所述第二字段包括:与所述原始字段结构之间具有引用关系的派生字段结构;将所述第一字段和所述第二字段添加到所述目标数据表中。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
S1,通过遍历目标抽象语法树生成第一抽象语法树,其中,所述目标抽象语法树通过解析查询语句确定,所述第一抽象语法树包括:用于生成血缘关系的抽象语法树;
S2,根据所述第一抽象语法树中包括的第二抽象语法树生成与所述第二抽象语法树对应的目标数据表,其中,所述第二抽象语法树包括:用于生成数据表的抽象语法树;
S3,根据所述第一抽象语法树中包括的第三抽象语法树生成与所述第三抽象语法树对应的目标字段,其中,所述第三抽象语法树包括:用于生成字段的抽象语法树;
S4,根据所述目标数据表和所述目标字段确定数据的血缘关系。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种数据血缘的处理方法,其特征在于,包括:
通过遍历目标抽象语法树生成第一抽象语法树,其中,所述目标抽象语法树通过解析查询语句确定,所述第一抽象语法树包括:用于生成血缘关系的抽象语法树;
根据所述第一抽象语法树中包括的第二抽象语法树生成与所述第二抽象语法树对应的目标数据表,其中,所述第二抽象语法树包括:用于生成数据表的抽象语法树;
根据所述第一抽象语法树中包括的第三抽象语法树生成与所述第三抽象语法树对应的目标字段,其中,所述第三抽象语法树包括:用于生成字段的抽象语法树;
根据所述目标数据表和所述目标字段组成的关系链,确定数据的血缘关系。
2.根据权利要求1所述的方法,其特征在于,根据所述第一抽象语法树中的第二抽象语法树生成对应的目标数据表之后,还包括:
通过解析所述目标数据表中包括的抽象语法树得到第一数据表和第二数据表,其中,所述第一数据表中包括:数据库中的原始表结构,所述第二数据表中包括:与所述原始表结构之间具有引用关系的派生表结构。
3.根据权利要求2所述的方法,其特征在于,根据所述第一抽象语法树中的第三抽象语法树生成对应的目标字段之后,还包括:
通过解析所述目标字段中包括的抽象语法树得到第一字段和第二字段,其中,所述第一字段包括:目标数据表中的原始字段结构,所述第二字段包括:与所述原始字段结构之间具有引用关系的派生字段结构;
将所述第一字段和所述第二字段添加到所述目标数据表中。
4.根据权利要求3所述的方法,其特征在于,根据所述目标数据表和所述目标字段确定数据的血缘关系,包括:
根据所述目标数据表中的数据库中的原始表结构和与所述原始表结构之间具有引用关系的派生表结构,建立第一级依赖关系,其中,所述第一级依赖关系包括:按照预设数据结构保存的所述原始表结构和所述派生表结构,通过扩展所述原始表结构和所述派生表结构确定所述目标数据表;
基于所述第一级依赖关系确定所述目标字段中目标数据表中的原始字段结构和与所述原始字段结构之间具有引用关系的派生字段结构,建立第二级依赖关系,其中,所述第二级依赖关系包括:按照预设数据结构保存的所述原始字段结构和所述派生字段结构,通过扩展所述原始字段结构和所述派生字段结构确定的所述目标字段,所述目标字段和所述目标输数据表两者之间具有预设依赖关系;
根据所述第一级依赖关系和所述第二级依赖关系,确定数据的血缘关系。
5.根据权利要求1所述的方法,其特征在于,通过遍历目标抽象语法树生成第一抽象语法树,包括:
通过遍历所述目标抽象语法树确定所述关系链中的起始位置和目标位置,其中,所述关系链中至少包括:所述目标数据表中包括的至少两个数据表之间的预设关联关系,所述关系链中还包括如下之一:所述目标数据表与所述目标字段之间的预设关联关系、所述目标字段中包括的至少两个字段之间的预设关联关系;
根据所述起始位置对应的抽象语法树和所述目标位置对应的抽象语法树生成所述第一抽象语法树。
6.根据权利要求1所述的方法,其特征在于,根据所述目标数据表和所述目标字段确定数据的血缘关系,包括:
根据字段别名或者索引在所述目标数据表中查找是否存在关联字段,其中,所述关联字段是与所述目标字段对应的原始字段结构关联的字段;
在确定所述目标数据表中存在所述关联字段的情况下,判断所述关联字段是否属于目标数据表对应的原始表结构;
在所述关联字段属于目标数据表中对应的原始表结构且所述关联字段为原始字段结构的情况下,保存所述关联字段与所述原始表结构的映射关系;
在所述关联字段属于目标数据表中对应的原始表结构且所述关联字段不为原始字段结构的情况下,获取非原始字段结构的关联字段后保存所述关联字段与述原始表结构的映射关系;
根据所述映射关系确定数据的血缘关系。
7.根据权利要求1所述的方法,其特征在于,根据所述目标数据表和所述目标字段确定数据的血缘关系之前,还包括:
在无法确定出所述目标字段所属的目标数据表的情况下,根据数据库中已存在的数据表中查询得到的元数据信息确定所述目标字段所属的目标数据表;或
在无法确定出所述目标字段所属的目标数据表的情况下,根据执行查询语句中生成的数据表确定的元数据信息确定所述目标字段所属的目标数据表。
8.根据权利要求1所述的方法,其特征在于,根据所述目标数据表和所述目标字段确定数据的血缘关系之后,还包括:
将所述数据的血缘关系持久化到预设数据库中,其中,所述预设数据库至少包括如下之一:关系型数据库、图数据库。
9.根据权利要求1所述的方法,其特征在于,根据所述目标数据表和所述目标字段确定数据的血缘关系之后,还包括:
根据所述数据的血缘关系中的数据表之间的血缘关系和字段之间的血缘关系响应数据查询请求并在用户查询界面展示。
10.一种数据血缘的处理装置,其特征在于,包括:
第一生成模块,用于通过遍历目标抽象语法树生成第一抽象语法树,其中,所述目标抽象语法树通过解析查询语句确定,所述第一抽象语法树包括:用于生成血缘关系的抽象语法树;
第二生成模块,用于根据所述第一抽象语法树中包括的第二抽象语法树生成与所述第二抽象语法树对应的目标数据表,其中,所述第二抽象语法树包括:用于生成数据表的抽象语法树;
第三生成模块,用于根据所述第一抽象语法树中包括的第三抽象语法树生成与所述第三抽象语法树对应的目标字段,其中,所述第三抽象语法树包括:用于生成字段的抽象语法树;
确定模块,用于根据所述目标数据表和所述目标字段确定数据的血缘关系。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010650668.6A CN111538744B (zh) | 2020-07-08 | 2020-07-08 | 数据血缘的处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010650668.6A CN111538744B (zh) | 2020-07-08 | 2020-07-08 | 数据血缘的处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111538744A true CN111538744A (zh) | 2020-08-14 |
CN111538744B CN111538744B (zh) | 2020-11-06 |
Family
ID=71976477
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010650668.6A Active CN111538744B (zh) | 2020-07-08 | 2020-07-08 | 数据血缘的处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111538744B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112115141A (zh) * | 2020-09-09 | 2020-12-22 | 陕西云基华海信息技术有限公司 | 一种基于图数据库的数据血统分析的方法 |
CN112634004A (zh) * | 2020-12-30 | 2021-04-09 | 中国农业银行股份有限公司 | 征信数据的血缘图谱分析方法与系统 |
CN113485715A (zh) * | 2021-07-30 | 2021-10-08 | 浙江大华技术股份有限公司 | 一种基于数据中台的代码提示方法、系统及数据计算平台 |
CN113934801A (zh) * | 2021-10-20 | 2022-01-14 | 中国银行股份有限公司 | 一种数据血缘关系的处理方法、装置及电子设备 |
CN114091426A (zh) * | 2020-10-19 | 2022-02-25 | 北京沃东天骏信息技术有限公司 | 一种处理数据仓库中字段数据的方法和装置 |
CN114265945A (zh) * | 2021-12-30 | 2022-04-01 | 多点生活(武汉)科技有限公司 | 血缘关系提取方法、装置及电子设备 |
CN115203180A (zh) * | 2022-05-16 | 2022-10-18 | 北京航空航天大学 | 一种数据血缘生成方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107644073A (zh) * | 2017-09-18 | 2018-01-30 | 广东中标数据科技股份有限公司 | 一种基于深度优先遍历的字段血缘分析方法、系统及装置 |
CN109325078A (zh) * | 2018-09-18 | 2019-02-12 | 拉扎斯网络科技(上海)有限公司 | 基于结构数据的数据血缘确定方法及装置 |
CN109446279A (zh) * | 2018-10-15 | 2019-03-08 | 顺丰科技有限公司 | 基于neo4j大数据血缘关系管理方法、系统、设备及存储介质 |
CN109614432A (zh) * | 2018-12-05 | 2019-04-12 | 北京百分点信息科技有限公司 | 一种基于语法分析的获取数据血缘关系的系统及方法 |
CN110674229A (zh) * | 2019-09-24 | 2020-01-10 | 山东爱城市网信息技术有限公司 | 一种基于ast的关系型数据库sql表关系分析及展现方法 |
-
2020
- 2020-07-08 CN CN202010650668.6A patent/CN111538744B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107644073A (zh) * | 2017-09-18 | 2018-01-30 | 广东中标数据科技股份有限公司 | 一种基于深度优先遍历的字段血缘分析方法、系统及装置 |
CN109325078A (zh) * | 2018-09-18 | 2019-02-12 | 拉扎斯网络科技(上海)有限公司 | 基于结构数据的数据血缘确定方法及装置 |
CN109446279A (zh) * | 2018-10-15 | 2019-03-08 | 顺丰科技有限公司 | 基于neo4j大数据血缘关系管理方法、系统、设备及存储介质 |
CN109614432A (zh) * | 2018-12-05 | 2019-04-12 | 北京百分点信息科技有限公司 | 一种基于语法分析的获取数据血缘关系的系统及方法 |
CN110674229A (zh) * | 2019-09-24 | 2020-01-10 | 山东爱城市网信息技术有限公司 | 一种基于ast的关系型数据库sql表关系分析及展现方法 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112115141A (zh) * | 2020-09-09 | 2020-12-22 | 陕西云基华海信息技术有限公司 | 一种基于图数据库的数据血统分析的方法 |
CN112115141B (zh) * | 2020-09-09 | 2023-04-18 | 陕西云基华海信息技术有限公司 | 一种基于图数据库的数据血统分析的方法 |
CN114091426A (zh) * | 2020-10-19 | 2022-02-25 | 北京沃东天骏信息技术有限公司 | 一种处理数据仓库中字段数据的方法和装置 |
CN112634004A (zh) * | 2020-12-30 | 2021-04-09 | 中国农业银行股份有限公司 | 征信数据的血缘图谱分析方法与系统 |
CN112634004B (zh) * | 2020-12-30 | 2023-10-13 | 中国农业银行股份有限公司 | 征信数据的血缘图谱分析方法与系统 |
CN113485715A (zh) * | 2021-07-30 | 2021-10-08 | 浙江大华技术股份有限公司 | 一种基于数据中台的代码提示方法、系统及数据计算平台 |
CN113934801A (zh) * | 2021-10-20 | 2022-01-14 | 中国银行股份有限公司 | 一种数据血缘关系的处理方法、装置及电子设备 |
CN114265945A (zh) * | 2021-12-30 | 2022-04-01 | 多点生活(武汉)科技有限公司 | 血缘关系提取方法、装置及电子设备 |
CN115203180A (zh) * | 2022-05-16 | 2022-10-18 | 北京航空航天大学 | 一种数据血缘生成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111538744B (zh) | 2020-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111538744B (zh) | 数据血缘的处理方法及装置 | |
US9430494B2 (en) | Spatial data cartridge for event processing systems | |
US11907216B2 (en) | Multi-language fusion query method and multi-model database system | |
US8447744B2 (en) | Extensibility platform using data cartridges | |
US8959106B2 (en) | Class loading using java data cartridges | |
US8392465B2 (en) | Dependency graphs for multiple domains | |
US9141678B2 (en) | Distributed query cache in a database system | |
JP3742177B2 (ja) | 並列データベースシステムルーチン実行方法 | |
WO2021139426A1 (zh) | 查询数据库数据的方法、装置、设备和存储介质 | |
US10642589B2 (en) | Extensibility in a database system | |
US10726004B2 (en) | Enterprise integration processing for mainframe COBOL programs | |
CN109710220B (zh) | 关系型数据库查询方法、装置、设备及存储介质 | |
US7970757B2 (en) | Computer program product for database query optimization | |
CN112579610A (zh) | 多数据源结构分析方法、系统、终端设备及存储介质 | |
CN112015722A (zh) | 数据库管理方法、数据血缘分析方法以及相关装置 | |
CN108536728A (zh) | 一种数据查询方法和装置 | |
CN112506964A (zh) | 数据查询方法、系统及计算机可读存储介质 | |
CN115238138A (zh) | 一种图数据查询方法及装置 | |
CN113515564A (zh) | 基于j2ee的数据访问方法、装置、设备及存储介质 | |
CN110580170B (zh) | 软件性能风险的识别方法及装置 | |
Butler et al. | INVocD: Identifier name vocabulary dataset | |
CN116010461A (zh) | 数据血缘关系解析方法及装置、存储介质及电子设备 | |
CN113343036B (zh) | 基于关键拓扑结构分析的数据血缘关系解析方法和系统 | |
CN116126865B (zh) | 一种多种数据库混合使用的代理方法及装置 | |
CN113297199B (zh) | 时空数据引擎的使用方法、装置及Cassandra数据库系统 |
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 |