System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种基于SQL解析的数据血缘分析方法技术_技高网

一种基于SQL解析的数据血缘分析方法技术

技术编号:43283943 阅读:17 留言:0更新日期:2024-11-12 16:06
本发明专利技术涉及电数字数据处理技术领域,特别是涉及一种基于SQL解析的数据血缘分析方法。其包括:获取AST<subgt;0</subgt;;从其根节点出发,逐层遍历AST<subgt;0</subgt;的各节点,如果node<subgt;i,j</subgt;为表对应的节点,且其子孙节点和兄弟节点中存在表对应的节点,则建立其对应的表血缘关系;如果node<subgt;i,j</subgt;为字段对应的节点,且其子孙节点、兄弟节点和关联节点中存在字段对应的节点,则建立其对应的字段血缘关系;根据AST<subgt;0</subgt;对应的表血缘关系集合获取目标SQL语句对应的最终表血缘关系集合;根据AST<subgt;0</subgt;对应的字段血缘关系集合获取目标SQL语句对应的最终字段血缘关系集合。本发明专利技术能够基于AST构建更加全面的数据血缘关系。

【技术实现步骤摘要】

本专利技术涉及电数字数据处理,特别是涉及一种基于sql解析的数据血缘分析方法。


技术介绍

1、现有技术和工具已经涉及到对数据血缘进行分析,例如,apache atlas是一个开源的数据治理和元数据管理平台,广泛应用于大数据生态系统,它提供了对数据元数据的丰富管理和查询功能,包括数据血缘;再例如,antlr(another tool for languagerecognition)是一个强大的语法分析器生成器,可支持生成多种语言的解析器,其可以根据sql语法生成抽象语法树(ast),为后续的数据血缘分析提供基础。现有技术中基于ast生成的数据血缘图主要展示的是数据之间的上下游关系,例如,某字段是另一字段的上游,即某字段是另一字段的数据来源;但是,现有技术中基于ast生成的数据血缘图并不展示数据之间的关联关系,例如,并不展示同为一个表的两个字段之间的关联关系等。如何基于ast构建更加全面的数据血缘关系,以为用户展示更多的数据之间存在的关系,是亟待解决的问题。


技术实现思路

1、本专利技术的目的在于提供一种基于sql解析的数据血缘分析方法,以基于ast构建更加全面的数据血缘关系,以为用户展示更多的数据之间存在的关系。

2、根据本专利技术,一种基于sql解析的数据血缘分析方法,包括以下步骤:

3、s100,获取目标sql语句对应的抽象语法树ast0。

4、s200,从ast0的根节点出发,逐层遍历ast0的每个节点,如果nodei,j为表对应的节点,则进入s300;如果nodei,j为字段对应的节点,则进入s400;nodei,j为ast0的第i层的第j个节点,i的取值范围为1到n,n为ast0的层数,j的取值范围为1到m(i),m(i)为ast0的第i层包括的节点数量。

5、s300,如果nodei,j的子孙节点和兄弟节点中存在表对应的节点,则建立nodei,j对应的表与ntabpi,j对应的表之间的表血缘关系;ntabpi,j为nodei,j的子孙节点和兄弟节点中第p个表对应的节点,p的取值范围为1到p(i,j),p(i,j)为nodei,j的子孙节点和兄弟节点中表对应的节点的数量。

6、s400,如果nodei,j的子孙节点、兄弟节点和关联节点中存在字段对应的节点,则建立nodei,j对应的字段与nfieqi,j对应的字段之间的字段血缘关系;nfieqi,j为nodei,j的子孙节点、兄弟节点和关联节点中第q个字段对应的节点,q的取值范围为1到q(i,j),q(i,j)为nodei,j的子孙节点、兄弟节点和关联节点中字段对应的节点的数量;关联节点为nodei,j的兄弟节点的子孙节点。

7、s500,根据ast0对应的表血缘关系集合获取目标sql语句对应的最终表血缘关系集合;目标sql语句对应的最终表血缘关系集合中每一表血缘关系的首表均不为其他表血缘关系的尾表。

8、s600,根据ast0对应的字段血缘关系集合获取目标sql语句对应的最终字段血缘关系集合;目标sql语句对应的最终字段血缘关系集合中每一字段血缘关系的首字段均不为其他字段血缘关系的尾字段。

9、本专利技术至少具有以下有益效果:

10、本专利技术基于目标sql语句对应的抽象语法树ast0获取目标sql语句对应的表血缘关系和字段血缘关系,具体的,本专利技术按照逐层遍历的方式遍历ast的每个节点,如果节点nodei,j为表对应的节点,则获取该节点nodei,j的子孙节点和兄弟节点中表对应的节点,并建立这些节点对应的表与nodei,j对应的表之间的表血缘关系;如果节点nodei,j为字段对应的节点,则获取该节点nodei,j的子孙节点、兄弟节点和关联节点中字段对应的节点,并建立这些节点对应的字段与nodei,j对应的字段之间的字段血缘关系。本专利技术建立的表血缘关系中不但包括表的对应的节点与其子孙节点对应的表之间的血缘关系,还包括表的对应的节点与其兄弟节点对应的表之间的血缘关系,因此,本专利技术建立的表血缘关系更加全面;而且,本专利技术建立的字段血缘关系中不但包括字段的对应的节点与其子孙节点对应的字段之间的血缘关系,还包括字段的对应的节点与其兄弟节点和关联节点对应的字段之间的血缘关系,因此,本专利技术建立的字段血缘关系更加全面;由此,本专利技术基于ast能够构建更加全面的数据血缘关系,能够为用户展示更多的表之间存在的关系和字段之间存在的关系。而且,本专利技术根据ast0对应的表血缘关系集合获取了目标sql语句对应的最终表血缘关系集合,该最终表血缘关系集合中每一表血缘关系的首表均不为其他表血缘关系的尾表,即最终表血缘关系集合中每一表血缘关系的首表均是该表血缘关系的尾表在目标sql语句中的最初来源,能够为用户展示完整的表关系;本专利技术根据ast0对应的字段血缘关系集合获取了目标sql语句对应的最终字段血缘关系集合,该最终字段血缘关系集合中每一字段血缘关系的首字段均不为其他字段血缘关系的尾字段,即最终字段血缘关系集合中每一字段血缘关系的首字段均是该表血缘关系的尾字段在目标sql语句中的最初来源,能够为用户展示完整的字段关系。

本文档来自技高网...

【技术保护点】

1.一种基于SQL解析的数据血缘分析方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的基于SQL解析的数据血缘分析方法,其特征在于,S500包括:

3.根据权利要求1所述的基于SQL解析的数据血缘分析方法,其特征在于,S600包括:

4.根据权利要求1所述的基于SQL解析的数据血缘分析方法,其特征在于,在S600之后,所述方法还包括:

5.根据权利要求4所述的基于SQL解析的数据血缘分析方法,其特征在于,S730包括:

6.根据权利要求1所述的基于SQL解析的数据血缘分析方法,其特征在于,S200还包括判断nodei,j是否为表对应的节点和nodei,j是否为字段对应的节点的过程,该过程包括:

7.根据权利要求1所述的基于SQL解析的数据血缘分析方法,其特征在于,S100中,通过SQL解析器获取目标SQL语句对应的抽象语法树AST0。

【技术特征摘要】

1.一种基于sql解析的数据血缘分析方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的基于sql解析的数据血缘分析方法,其特征在于,s500包括:

3.根据权利要求1所述的基于sql解析的数据血缘分析方法,其特征在于,s600包括:

4.根据权利要求1所述的基于sql解析的数据血缘分析方法,其特征在于,在s600之后,所述方法还包括:

5.根据权利要求4...

【专利技术属性】
技术研发人员:李忠波程岚
申请(专利权)人:奇点智保北京科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1