CN113672628A - 数据血缘分析方法、终端设备及介质 - Google Patents

数据血缘分析方法、终端设备及介质 Download PDF

Info

Publication number
CN113672628A
CN113672628A CN202111229907.1A CN202111229907A CN113672628A CN 113672628 A CN113672628 A CN 113672628A CN 202111229907 A CN202111229907 A CN 202111229907A CN 113672628 A CN113672628 A CN 113672628A
Authority
CN
China
Prior art keywords
node
sql
blood relationship
processed
sqlnode
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
CN202111229907.1A
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.)
AVIC INTERNATIONAL E-BUSINESS Inc
Original Assignee
AVIC INTERNATIONAL E-BUSINESS Inc
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 AVIC INTERNATIONAL E-BUSINESS Inc filed Critical AVIC INTERNATIONAL E-BUSINESS Inc
Priority to CN202111229907.1A priority Critical patent/CN113672628A/zh
Publication of CN113672628A publication Critical patent/CN113672628A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing

Landscapes

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

Abstract

本发明公开了一种数据血缘分析方法、终端设备及介质,其中所述方法包括:对待处理SQL语句进行预处理,得到目标SQL语句;使用SQL解析工具将所述目标SQL语句解析为对应的抽象语法树,所述抽象语法树中包括至少一个对象节点SqlNode;将所述对象节点SqlNode转换为基础节点Node;对所述基础节点Node进行血缘解析,得到所述待处理SQL语句对应的数据间的血缘关系。采用本发明,能解决现有技术中采用人工获取血缘关系所存在的操作繁琐、人力成本较高的技术问题。

Description

数据血缘分析方法、终端设备及介质
技术领域
本发明涉及大数据处理技术领域,尤其涉及一种数据血缘分析方法、终端设备及介质。
背景技术
随着数据爆炸时代的来临,数据对于个人和企业而言都是非常重要的资产。在数据建设和管理过程中,数据从产生、加工到流转的过程中产生了数据间的血缘关系。当数据量不断增加后,数据间的血缘关系会变得更为复杂,当数据出现问题时由于无法获得不同层级的数据间的血缘关系,因此需要人工对数据进行层层筛查,极大地增加了数据筛查的人力成本,且操作比较繁琐。
因此,如何自动获得数据间的血缘关系是目前亟需解决的问题。
发明内容
本申请实施例通过提供一种数据血缘分析方法,解决了现有技术中采用人工获取血缘关系所存在的操作繁琐、人力成本较高的技术问题。
一方面,本申请通过本申请的一实施例提供一种数据血缘分析方法,所述方法包括:
对待处理SQL语句进行预处理,得到目标SQL语句;
使用SQL解析工具将所述目标SQL语句解析为对应的抽象语法树,所述抽象语法树中包括至少一个对象节点SqlNode;
将所述对象节点SqlNode转换为基础节点Node;
对所述基础节点Node进行血缘解析,得到所述待处理SQL语句对应的数据间的血缘关系,所述血缘关系包括表级血缘关系和/或字段级血缘关系。
可选地,所述对待处理SQL语句进行预处理包括以下中的至少一项:
使用第一正则表达式剔除待处理SQL语句中的无用信息,所述无用信息包括以下中的至少一项:注释、空格、换行符及结束符;
去除待处理SQL语句中的分页操作limit代码;
使用第二正则表达式去除待处理SQL语句中的生命周期;
使用预设策略模式对待处理SQL语句进行对应类型的语法处理。
可选地,所述使用SQL解析工具将所述目标SQL语句解析为对应的抽象语法树包括:
构建支持SQL解析工具Calcite配置的构造器Builder;
调用创建解析器SqlParser.create方法,对所述构造器Builder和所述目标SQL语句进行解析处理,得到解析SqlParser对象;
调用解析查询parseQuery方法对所述SqlParser对象进行分析和封装,得到对应的抽象语法树。
可选地,所述构建支持SQL解析工具Calcite配置的构造器Builder包括:
构建初始的构造器Builder;
对所述构造器Builder进行Calcite配置,所述Calcite配置至少包括:设置解析工厂方法parserFactory、设置第一属性caseSensitive、设置反引号quoting和设置第二属性quotedCasing。
可选地,所述将所述对象节点SqlNode转换为基础节点Node包括:
确定所述对象节点SqlNode中包括的基础节点Node的类型;
根据确定的所述基础节点Node的类型,确定用于转换所述对象节点SqlNode所使用的目标处理handler方法;
使用所述目标handler方法中的解析方法,将所述对象节点SqlNode解析为具有预配属性信息的基础节点Node。
可选地,所述确定所述对象节点SqlNode中包括的基础节点Node的类型之前,所述方法还包括:
定义不同类型的基础节点Node,所述不同类型的基础节点Node包括以下中的至少一项:选择节点SeletNode、联合节点UniontNode、插入节点InsertNode及创建节点CreateNode;
为所述不同类型的基础节点Node配置对应的处理handler方法,所述处理handler方法用于处理所述基础节点Node所需的属性信息。
可选地,所述对所述基础节点Node进行血缘解析,得到所述待处理SQL语句对应的数据间的血缘关系包括:
根据所述基础节点Node的类型,确定对应的血缘解析器;
使用所述血缘解析器对所述基础节点Node进行字段和列表查询,得到对应的查询字段列表;
遍历所述查询字段列表,并采用递归溯源的方式查找获得所述查询字段列表中数据间的血缘关系。
可选地,所述字段和列表查询包括以下中的至少一项:常规查询、子查询、联合union查询及函数字段查询。
可选地,所述方法还包括:
对所述待处理SQL语句对应的数据间的血缘关系进行可视化展示。
另一方面,本申请通过本申请的一实施例提供一种数据血缘分析装置,所述装置包括预处理模块、语句解析模块、转换模块及血缘解析模块,其中:
所述预处理模块,用于对待处理SQL语句进行预处理,得到目标SQL语句;
所述语句解析模块,用于使用SQL解析工具将所述目标SQL语句解析为对应的抽象语法树,所述抽象语法树中包括至少一个对象节点SqlNode;
所述转换模块,用于将所述对象节点SqlNode转换为基础节点Node;
所述血缘解析模块,用于对所述基础节点Node进行血缘解析,得到所述待处理SQL语句对应的数据间的血缘关系,所述血缘关系包括表级血缘关系和/或字段级血缘关系。
关于本申请实施例中未介绍或未描述的内容可对应参考前述方法实施例中的相关介绍,这里不再赘述。
另一方面,本申请通过本申请的一实施例提供一种终端设备,所述终端设备包括:处理器、存储器、通信接口和总线;所述处理器、所述存储器和所述通信接口通过所述总线连接并完成相互间的通信;所述存储器存储可执行程序代码;所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于执行如上所述的数据血缘分析方法。
另一方面,本申请通过本申请的一实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有程序,当所述程序运行在终端设备时执行如上所述的数据血缘分析方法。
本申请实施例中提供的一个或多个技术方案,至少具有如下技术效果或优点:本申请对待处理SQL语句进行预处理,得到目标SQL语句;使用SQL解析工具将所述目标SQL语句解析为对应的抽象语法树,所述抽象语法树中包括至少一个对象节点SqlNode;将所述对象节点SqlNode转换为基础节点Node;对所述基础节点Node进行血缘解析,得到所述待处理SQL语句对应的数据间的血缘关系。这样本申请可先将初始的待处理SQL语句转换为符合预设语法标准的目标SQL语句,再使用SQL解析工具解析目标SQL语句得到抽象语法树SqlNode,然后将SqlNode转换为自定义的基础节点Node,最终从基础节点Node中解析出数据间的血缘关系,从而能智能、简便地获得数据间的血缘关系,提升了数据血缘分析的便捷性,同时也解决了现有技术中采用人工获取血缘关系所存在的操作繁琐、人力成本较高的技术问题。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据血缘分析方法的流程示意图。
图2是本申请实施例提供的一种SQL语句预处理的流程示意图。
图3是本申请实施例提供的一种对象节点转换的流程示意图。
图4是本申请实施例提供的一种血缘解析的流程示意图。
图5是本申请实施例提供的一种表级血缘关系的可视化图。
图6是本申请实施例提供的一种数据血缘分析装置的结构示意图。
图7是本申请实施例提供的一种终端设备的结构示意图。
具体实施方式
申请人在提出本申请的过程中还发现:目前主流的结构化查询语句(structuredquery language,SQL)解析工具(例如calcite和hive ParseDriver工具)在进行SQL解析时,必须使用符合预设语法标准的标准SQL语句,才能解析成功。然后在实际应用中SQL语句通常会有很多特殊字符或特殊语法,因此现有技术中无法直接使用SQL解析工具对SQL语句进行解析。此外,还发现现有SQL解析工具解析SQL语句后获得的抽象语法树结构,无法直接从中提取出数据的血缘关系。
本申请实施例通过提供一种数据血缘分析方法,解决了现有技术中采用人工获取血缘关系所存在的操作繁琐、人力成本较高的技术问题。
本申请实施例的技术方案为解决上述技术问题,总体思路如下:对待处理SQL语句进行预处理,得到目标SQL语句;使用SQL解析工具将所述目标SQL语句解析为对应的抽象语法树,所述抽象语法树中包括至少一个对象节点SqlNode;将所述对象节点SqlNode转换为基础节点Node;对所述基础节点Node进行血缘解析,得到所述待处理SQL语句对应的数据间的血缘关系,所述血缘关系包括表级血缘关系和/或字段级血缘关系。
为了更好的理解上述技术方案,下面将结合说明书附图以及具体的实施方式对上述技术方案进行详细的说明。
首先说明,本文中出现的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
请参见图1,是本申请实施例提供的一种数据血缘分析方法的流程示意图。如图1所示的方法包括如下实施步骤:
S101、对待处理SQL语句进行预处理,得到目标SQL语句。
本申请所述预处理为系统自定义设置的用于对获取的待处理SQL语句进行的前置处理,其可包括但不限于以下中的任一项或多项的组合:使用第一正则表达式剔除SQL语句中的无用信息,所述无用信息包括以下中的至少一项:注释、空格、换行符及结束符;去除SQL语句中的分页操作limit代码;使用第二正则表达式去除SQL语句中的生命周期;使用预设策略模式对不同类型的SQL语句进行对应类型的语法处理。
所述目标SQL语句为符合标准SQL语法的标准SQL语句,例如其不包括例如注释、空格、结束符和换行符等特殊符号的SQL语句等。
S102、使用SQL解析工具将所述目标SQL语句解析为对应的抽象语法树,所述抽象语法树中包括至少一个对象节点SqlNode。
本申请所述抽象语法树包括至少一个层级,每个层级中包括至少一个对象节点SqlNode。
S103、将所述对象节点SqlNode转换为基础节点Node。
本申请所述基础节点Node包括有预先配置的属性信息,例如血缘解析所需的属性、或节点的关键属性等等。
S104、对所述基础节点Node进行血缘解析,得到所述待处理SQL语句对应的数据间的血缘关系,所述血缘关系包括表级血缘关系和/或字段级血缘关系。
下面分别对步骤S101~S104的具体实施方式进行详细介绍。
步骤S101中,以所述预处理包括剔除SQL语句中的无用信息、去除SQL语句中的分页操作limit代码、去除SQL语句中的生命周期及使用预设策略模式对不同类型的SQL语句进行对应类型的语法处理为例,介绍S101的具体实施方式。请参见图2,是本申请实施例提供的另一种数据血缘分析方法的流程示意图。如图2所示的方法包括如下实施步骤:
S201、使用第一正则表达式剔除待处理SQL语句中的无用信息,所述无用信息包括以下中的至少一项:注释、空格、换行符及结束符。
本申请所述第一正则表达式为编程语言Java中自定义设置的,其是对字符串和特殊字符操作的一种逻辑公式。本申请使用第一正则表达式来剔除待处理SQL语句中的无用信息,所述无用信息包括但不限于以下中的任一项或多项的组合:注释、空格、换行符、结束符或其他特殊字符/符号。
S202、去除待处理SQL语句中的分页操作limit代码。
本申请可去除掉待处理SQL语句中分页操作(limit)后面的代码片段,以防止无法获取SQL语句中数据间的血缘关系。
S203、使用第二正则表达式去除待处理SQL语句中的生命周期。
本申请所述第二正则表达式为编程语言Java中自定义设置的,其是对字符串和特殊字符操作的一种逻辑公式。所述第一正则表达式与所述第二正则表达式存在不同。本申请使用第二正则表达式去除掉待处理SQL语句中可能存在的生命周期。
S204、使用预设策略模式对待处理SQL语句进行对应类型的语法处理。
本申请所述预设策略模式为系统自定义设置的,可自定义处理hadler方法, 以用于对不同类型的SQL语句进行对应的特殊语法处理。本申请可使用预设策略模式所指示的第三正则表达式对待处理SQL语句进行对应的特殊语法处理。
举例来说,本申请采用如下第三正则表达式对待处理SQL语句进行处理:(i)(create\\s+(temp|TEMPORARY)\\s+table\\s+).*,其表示匹配该正则表达式的SQL语句中的temp|TEMPORARY table替换成create table,这样后续的操作才能正常解析出数据间的血缘关系。
需要说明的是,上述步骤S201~S204并不限定步骤执行的先后顺序,例如可同时执行,也可按照图示编号步骤顺序执行等等。
步骤S102中,本申请可先构建一个默认的支持SQL解析工具Calcite配置的构造器Builder。具体地,本申请可首先构建一个默认的构造器Builder,然后对所述构造器Builder进行Calcite配置,例如设置解析工厂方法parserFactory为SqlDdlParserImpl.Factory、设置第一属性caseSensitive为true、设置反引号quoting为“'”、设置第二属性quotedCasing为UNCHANGED。
接着,调用创建解析器SqlParser.create方法,该方法的传入参数为上个步骤构建的所述构造器Builder和S101中的所述目标SQL语句standardSql,进而对所述构造器Builder和所述目标SQL语句进行解析处理,返回获得一个解析SqlParser对象。
最后,本申请可调用解析查询parseQuery方法对所述SqlParser对象进行分析和封装,得到对应的抽象语法树。具体地,所述SqlParser对象中封装有SQL语句和Builder的配置信息,本申请调用parseQuery方法可从SQL语句中解析出多个SQL片段,进而对这些SQL片段进行词法分析及上下文分析,得到对应的抽象语法树。
可理解的,步骤S102的具体实现伪代码如下所示:
private SqlParser.ConfigBuilder getDefaultCalciteConfigBuilder() {
SqlParser.ConfigBuilder builder = SqlParser.configBuilder();
builder.setParserFactory(SqlDdlParserImpl.FACTORY);
builder.setCaseSensitive(true);
builder.setQuoting(Quoting.BACK_TICK);
builder.setQuotedCasing(Casing.UNCHANGED);
builder.setUnquotedCasing(Casing.UNCHANGED);
return builder;
}
SqlParser parser = SqlParser.create(parseResult.getStandardSql(),builder.build());
SqlNode sqlNode = parser.parseQuery();
步骤S103中,本申请需将步骤S102中获得的抽象语法树(具体为组成抽象语法树中的对象节点SqlNode)转换为自定义的基础节点Node,其具体实施方式可参见图3示出一种可能的数据血缘分析方法的流程示意图。如图3所示的方法包括如下实施步骤:
S301、定义不同类型的基础节点Node,所述不同类型的基础节点Node包括以下中的至少一项:选择节点SeletNode、联合节点UniontNode、插入节点InsertNode及创建节点CreateNode。
本申请可根据实际需求自定义不同类型的基础节点Node,所述基础节点Node的分类包括但不限于例如选择节点SeletNode、联合节点UniontNode、插入节点InsertNode、创建节点CreateNode或其他分类节点。其中,这些节点分类都继承自基础节点Node,里面自定义有一些血缘解析所需的属性。例如SeletNode中的属性信息包括有where、from等字段信息。
S302、为所述不同类型的基础节点Node配置对应的处理handler方法,所述处理handler方法用于处理所述基础节点Node所需的属性信息。
本申请可根据基础节点Node的类型配置选择相应地handler方法,来处理基础节点Node获取需要的属性信息,例如SeletNode需要的属性信息包括但不限于字段信息,如where和from等。又如CreateNode需要的属性信息包括但不限于主表信息等。
需要说明的是,本申请所有的handler都继承自一个抽象的handler,里面定义了公共的解析方法,例如用来解析SQL片段所处位置的SqlPos对象的parsePos方法、用来解析SQL表达式(选择列表selectList和where条件)的parseExpression方法等。
S303、根据所述对象节点SqlNode中包括的基础节点Node的类型,确定用于转换所述对象节点SqlNode所使用的目标处理handler方法。
本申请可先解析步骤S102获得的对象节点SqlNode,确定出所述对象节点SqlNode中包括的基础节点Node的类型,例如包括SeletNode、UniontNode、InsertNode或CreateNode等。
然后根据确定的所述基础节点Node的类型,从步骤S302中配置的多个handler方法中选择/确定用于转换所述对象节点SqlNode所使用的目标处理handler方法。
S304、使用所述目标handler方法中的解析方法,将所述对象节点SqlNode解析为具有预配属性信息的基础节点Node。
本申请使用所述目标handler方法采用分而治之思想,将所述对象节点SqlNode解析为统一自定义的基础节点Node。
步骤S104中,本申请对步骤S103得到的基础节点Node进行血缘解析,其具体实施方式可参见图4示出另一种可能的数据血缘分析方法的流程示意图。如图4所示的方法包括如下实施步骤:
S401、根据所述基础节点Node的类型,确定对应的血缘解析器。
本申请可根据所述基础节点Node的类型选择相应的血缘解析器来进行血缘关系解析。可理解的,血缘关系通常存在于InsertNode和CreateNode中。因此若所述基础节点Node的类型为InsertNode,则选择与所述InsertNode对应的血缘解析器;反之,若所述基础节点Node的类型为CreateNode,则选择与所述CreateNode对应的血缘解析器。
S402、使用所述血缘解析器对所述基础节点Node进行字段和列表查询,得到对应的查询字段列表。
本申请所述查询字段列表中包括主表和主表对应的字段信息。这里的主表可以是insert表或create表。所述字段和列表查询包括但不限于以下中的任一项或多项的组合:常规/普通查询、子查询、联合union查询及函数字段查询,本申请可根据基础节点Node的实际情况选择对应的查询方式进行查询处理得到最终的查询字段列表。
S403、遍历所述查询字段列表,并采用递归溯源的方式查找获得所述查询字段列表中数据间的血缘关系。
本申请可循环遍历所述查询字段列表,找出该列表中包括的主表及主表的字段信息。然后采用递归溯源的方式从所述查询字段列表中的主表及主表的字段信息中查找出对应数据间的血缘关系。所述血缘关系包括但不限于以下中的至少一项:表级血缘关系、字段级血缘关系或其他级血缘关系等。
为帮助更好地理解本申请实施例,下面举个实例进行说明。例如本申请有如下一个SQL语句:insert into table a select id2,name2 from(select id2,name2 from c)b。本申请经过上述步骤S101-S103将SQL语句处理为InsertNode。在步骤S104中可获取InsertNode中的select代码部分,为SeletNode。然后通过传入的查询字段列表columnList获取insert表,即a表中的查询字段列表。进而a表中的字段通过索引index位置(程序中预先配置的)匹配获知,a表中的字段对应SeletNode中SeletList下的id2和name2字段。其中,SeletNode的from也是一个SeletNode,通过递归溯源得知id2和name2字段最终来自于表c的id2和name2。由此可得出:字段级血缘关系为a表的id和name字段来源于表c的id2和name2字段,表级血缘关系为a表来源于b表、b表来源于c表,最终得出a表来源于c表。
在可选实施例中,本申请可对S104中获得的所述血缘关系(例如表级血缘关系和/或字段级血缘关系)进行可视化展示,例如以图表的形式展示等。请参见图5示出一种表级血缘关系的示意图。如图5中,表source_table26来源于target_ table34。
需要说明的是,通过实验验证本申请可应用到袋鼠云数栈的离线开发套件中。通过离线开发应用跑相应的sql任务,等待任务执行完成。系统会去调用本申请提供的方法来解析出对应的血缘关系,并将血缘关系存储到表中。然后在离线应用的数据地图功能模块中可以通过对应表查找出和它相关的表级血缘关系和字段级血缘关系。
通过实施本申请,本申请可先将初始的待处理SQL语句转换为标准的目标SQL语句,再使用SQL解析工具Calcite解析目标SQL语句得到抽象语法树SqlNode,然后将SqlNode转换为自定义的基础节点Node,最终从基础节点Node中解析出数据间的血缘关系。传统的SQL解析工具Calcite解析是将SQL语句解析为一个抽象语法树,但在解析前后都需要做一系列的复杂操作方能解析出数据间的血缘关系。而本申请能直接智能、简便地从初始的待处理SQL语句中解析出数据间的血缘关系,提升了数据血缘分析的便捷性,同时也解决了现有技术中采用人工获取血缘关系所存在的操作繁琐、人力成本较高的技术问题。
基于同一发明构思,本申请另一实施例提供一种实施本申请实施例中所述数据血缘分析方法对应的装置和终端设备。
请参见图6,是本申请实施例提供的一种数据血缘分析装置的结构示意图。如图6所示的装置包括:预处理模块601、语句解析模块602、转换模块603及血缘解析模块604,其中:
所述预处理模块601,用于对待处理SQL语句进行预处理,得到目标SQL语句;
所述语句解析模块602,用于使用SQL解析工具将所述目标SQL语句解析为对应的抽象语法树,所述抽象语法树中包括至少一个对象节点SqlNode;
所述转换模块603,用于将所述对象节点SqlNode转换为基础节点Node;
所述血缘解析模块604,用于对所述基础节点Node进行血缘解析,得到所述待处理SQL语句对应的数据间的血缘关系,所述血缘关系包括表级血缘关系和/或字段级血缘关系。
可选地,所述预处理模块601具体用于:
使用第一正则表达式剔除待处理SQL语句中的无用信息,所述无用信息包括以下中的至少一项:注释、空格、换行符及结束符;
去除待处理SQL语句中的分页操作limit代码;
使用第二正则表达式去除待处理SQL语句中的生命周期;
使用预设策略模式对待处理SQL语句进行对应类型的语法处理。
可选地,所述语句解析模块602具体用于:
构建支持SQL解析工具Calcite配置的构造器Builder;
调用创建解析器SqlParser.create方法,对所述构造器Builder和所述目标SQL语句进行解析处理,得到解析SqlParser对象;
调用解析查询parseQuery方法对所述SqlParser对象进行分析和封装,得到对应的抽象语法树。
可选地,所述语句解析模块602具体用于:
构建初始的构造器Builder;
对所述构造器Builder进行Calcite配置,所述Calcite配置至少包括:设置解析工厂方法parserFactory、设置第一属性caseSensitive、设置反引号quoting和设置第二属性quotedCasing。
可选地,所述转换模块603具体用于:
确定所述对象节点SqlNode中包括的基础节点Node的类型;
根据确定的所述基础节点Node的类型,确定用于转换所述对象节点SqlNode所使用的目标处理handler方法;
使用所述目标handler方法中的解析方法,将所述对象节点SqlNode解析为具有预配属性信息的基础节点Node。
可选地,所述装置还包括定义模块605和配置模块606,其中:
所述定义模块605,用于定义不同类型的基础节点Node,所述不同类型的基础节点Node包括以下中的至少一项:选择节点SeletNode、联合节点UniontNode、插入节点InsertNode及创建节点CreateNode;
所述配置模块606,用于为所述不同类型的基础节点Node配置对应的处理handler方法,所述处理handler方法用于处理所述基础节点Node所需的属性信息。
可选地,所述血缘解析模块604具体用于:
根据所述基础节点Node的类型,确定对应的血缘解析器;
使用所述血缘解析器对所述基础节点Node进行字段和列表查询,得到对应的查询字段列表;
遍历所述查询字段列表,并采用递归溯源的方式查找获得所述查询字段列表中数据间的血缘关系。
可选地,所述字段和列表查询包括以下中的至少一项:常规查询、子查询、联合union查询及函数字段查询。
可选地,所述装置还包括展示模块607,其中:
所述展示模块607,用于对所述待处理SQL语句对应的数据间的血缘关系进行可视化展示。
请一并参见图7,是本申请实施例提供的一种终端设备的结构示意图。如图7所示的终端设备70包括:至少一个处理器701、通信接口702、用户接口703和存储器704,处理器701、通信接口702、用户接口703和存储器704可通过总线或者其它方式连接,本发明实施例以通过总线705连接为例。其中,
处理器701可以是通用处理器,例如中央处理器(Central Processing Unit,CPU)。
通信接口702可以为有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他终端或网站进行通信。本发明实施例中,通信接口702具体用于获取SQL语句。
用户接口703具体可为触控面板,包括触摸屏和触控屏,用于检测触控面板上的操作指令,用户接口703也可以是物理按键或者鼠标。用户接口703还可以为显示屏,用于输出、显示图像或数据。
存储器704可以包括易失性存储器(Volatile Memory),例如随机存取存储器(Random Access Memory,RAM);存储器也可以包括非易失性存储器(Non-VolatileMemory),例如只读存储器(Read-Only Memory,ROM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);存储器704还可以包括上述种类的存储器的组合。存储器704用于存储一组程序代码,处理器701用于调用存储器704中存储的程序代码,执行如下操作:
对待处理SQL语句进行预处理,得到目标SQL语句;
使用SQL解析工具将所述目标SQL语句解析为对应的抽象语法树,所述抽象语法树中包括至少一个对象节点SqlNode;
将所述对象节点SqlNode转换为基础节点Node;
对所述基础节点Node进行血缘解析,得到所述待处理SQL语句对应的数据间的血缘关系,所述血缘关系包括表级血缘关系和/或字段级血缘关系。
可选地,所述对待处理SQL语句进行预处理包括以下中的至少一项:
使用第一正则表达式剔除待处理SQL语句中的无用信息,所述无用信息包括以下中的至少一项:注释、空格、换行符及结束符;
去除待处理SQL语句中的分页操作limit代码;
使用第二正则表达式去除待处理SQL语句中的生命周期;
使用预设策略模式对待处理SQL语句进行对应类型的语法处理。
可选地,所述使用SQL解析工具将所述目标SQL语句解析为对应的抽象语法树包括:
构建支持SQL解析工具Calcite配置的构造器Builder;
调用创建解析器SqlParser.create方法,对所述构造器Builder和所述目标SQL语句进行解析处理,得到解析SqlParser对象;
调用解析查询parseQuery方法对所述SqlParser对象进行分析和封装,得到对应的抽象语法树。
可选地,所述构建支持SQL解析工具Calcite配置的构造器Builder包括:
构建初始的构造器Builder;
对所述构造器Builder进行Calcite配置,所述Calcite配置至少包括:设置解析工厂方法parserFactory、设置第一属性caseSensitive、设置反引号quoting和设置第二属性quotedCasing。
可选地,所述将所述对象节点SqlNode转换为基础节点Node包括:
确定所述对象节点SqlNode中包括的基础节点Node的类型;
根据确定的所述基础节点Node的类型,确定用于转换所述对象节点SqlNode所使用的目标处理handler方法;
使用所述目标handler方法中的解析方法,将所述对象节点SqlNode解析为具有预配属性信息的基础节点Node。
可选地,所述确定所述对象节点SqlNode中包括的基础节点Node的类型之前,所述处理器701还用于:
定义不同类型的基础节点Node,所述不同类型的基础节点Node包括以下中的至少一项:选择节点SeletNode、联合节点UniontNode、插入节点InsertNode及创建节点CreateNode;
为所述不同类型的基础节点Node配置对应的处理handler方法,所述处理handler方法用于处理所述基础节点Node所需的属性信息。
可选地,所述对所述基础节点Node进行血缘解析,得到所述待处理SQL语句对应的数据间的血缘关系包括:
根据所述基础节点Node的类型,确定对应的血缘解析器;
使用所述血缘解析器对所述基础节点Node进行字段和列表查询,得到对应的查询字段列表;
遍历所述查询字段列表,并采用递归溯源的方式查找获得所述查询字段列表中数据间的血缘关系。
可选地,所述字段和列表查询包括以下中的至少一项:常规查询、子查询、联合union查询及函数字段查询。
可选地,所述处理器701还用于:
对所述待处理SQL语句对应的数据间的血缘关系进行可视化展示。
由于本实施例所介绍的终端设备为实施本申请实施例中数据血缘分析方法所采用的终端设备,故而基于本申请实施例中所介绍的数据血缘分析方法,本领域所属技术人员能够了解本实施例的终端设备的具体实施方式以及其各种变化形式,所以在此对于该终端设备如何实现本申请实施例中的方法不再详细介绍。只要本领域所属技术人员实施本申请实施例中数据血缘分析方法所采用的终端设备,都属于本申请所欲保护的范围。
上述本申请实施例中的技术方案,至少具有如下的技术效果或优点:本申请对待处理SQL语句进行预处理,得到目标SQL语句;使用SQL解析工具将所述目标SQL语句解析为对应的抽象语法树,所述抽象语法树中包括至少一个对象节点SqlNode;将所述对象节点SqlNode转换为基础节点Node;对所述基础节点Node进行血缘解析,得到所述待处理SQL语句对应的数据间的血缘关系。这样本申请可先将初始的待处理SQL语句转换为符合预设语法标准的目标SQL语句,再使用SQL解析工具解析目标SQL语句得到抽象语法树SqlNode,然后将SqlNode转换为自定义的基础节点Node,最终从基础节点Node中解析出数据间的血缘关系,从而能智能、简便地获得数据间的血缘关系,提升了数据血缘分析的便捷性,同时也解决了现有技术中采用人工获取血缘关系所存在的操作繁琐、人力成本较高的技术问题。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (10)

1.一种数据血缘分析方法,其特征在于,所述方法包括:
对待处理SQL语句进行预处理,得到目标SQL语句;
使用SQL解析工具将所述目标SQL语句解析为对应的抽象语法树,所述抽象语法树中包括至少一个对象节点SqlNode;
将所述对象节点SqlNode转换为基础节点Node;
对所述基础节点Node进行血缘解析,得到所述待处理SQL语句对应的数据间的血缘关系,所述血缘关系包括表级血缘关系和/或字段级血缘关系;
其中,所述将所述对象节点SqlNode转换为基础节点Node包括:
确定所述对象节点SqlNode中包括的基础节点Node的类型;
根据确定的所述基础节点Node的类型,确定用于转换所述对象节点SqlNode所使用的目标处理handler方法;
使用所述目标handler方法中的解析方法,将所述对象节点SqlNode解析为具有预配属性信息的基础节点Node。
2.根据权利要求1所述的方法,其特征在于,所述对待处理SQL语句进行预处理包括以下中的至少一项:
使用第一正则表达式剔除待处理SQL语句中的无用信息,所述无用信息包括以下中的至少一项:注释、空格、换行符及结束符;
去除待处理SQL语句中的分页操作limit代码;
使用第二正则表达式去除待处理SQL语句中的生命周期;
使用预设策略模式对待处理SQL语句进行对应类型的语法处理。
3.根据权利要求1所述的方法,其特征在于,所述使用SQL解析工具将所述目标SQL语句解析为对应的抽象语法树包括:
构建支持SQL解析工具Calcite配置的构造器Builder;
调用创建解析器SqlParser.create方法,对所述构造器Builder和所述目标SQL语句进行解析处理,得到解析SqlParser对象;
调用解析查询parseQuery方法对所述SqlParser对象进行分析和封装,得到对应的抽象语法树。
4.根据权利要求3所述的方法,其特征在于,所述构建支持SQL解析工具Calcite配置的构造器Builder包括:
构建初始的构造器Builder;
对所述构造器Builder进行Calcite配置,所述Calcite配置至少包括:设置解析工厂方法parserFactory、设置第一属性caseSensitive、设置反引号quoting和设置第二属性quotedCasing。
5.根据权利要求1所述的方法,其特征在于,所述确定所述对象节点SqlNode中包括的基础节点Node的类型之前,所述方法还包括:
定义不同类型的基础节点Node,所述不同类型的基础节点Node包括以下中的至少一项:选择节点SeletNode、联合节点UniontNode、插入节点InsertNode及创建节点CreateNode;
为所述不同类型的基础节点Node配置对应的处理handler方法,所述处理handler方法用于处理所述基础节点Node所需的属性信息。
6.根据权利要求1所述的方法,其特征在于,所述对所述基础节点Node进行血缘解析,得到所述待处理SQL语句对应的数据间的血缘关系包括:
根据所述基础节点Node的类型,确定对应的血缘解析器;
使用所述血缘解析器对所述基础节点Node进行字段和列表查询,得到对应的查询字段列表;
遍历所述查询字段列表,并采用递归溯源的方式查找获得所述查询字段列表中数据间的血缘关系。
7.根据权利要求6所述的方法,其特征在于,所述字段和列表查询包括以下中的至少一项:常规查询、子查询、联合union查询及函数字段查询。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对所述待处理SQL语句对应的数据间的血缘关系进行可视化展示。
9.一种终端设备,其特征在于,所述终端设备包括:处理器、存储器、通信接口和总线;所述处理器、所述存储器和所述通信接口通过所述总线连接并完成相互间的通信;所述存储器存储可执行程序代码;所述处理器通过读取所述存储器中存储的可执行程序代码来运行与所述可执行程序代码对应的程序,以用于执行如上权利要求1-8中任一项所述的数据血缘分析方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有程序,当所述程序运行在终端设备时执行如上权利要求1-8中任一项所述的数据血缘分析方法。
CN202111229907.1A 2021-10-22 2021-10-22 数据血缘分析方法、终端设备及介质 Pending CN113672628A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111229907.1A CN113672628A (zh) 2021-10-22 2021-10-22 数据血缘分析方法、终端设备及介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111229907.1A CN113672628A (zh) 2021-10-22 2021-10-22 数据血缘分析方法、终端设备及介质

Publications (1)

Publication Number Publication Date
CN113672628A true CN113672628A (zh) 2021-11-19

Family

ID=78550872

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111229907.1A Pending CN113672628A (zh) 2021-10-22 2021-10-22 数据血缘分析方法、终端设备及介质

Country Status (1)

Country Link
CN (1) CN113672628A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114168600A (zh) * 2021-12-18 2022-03-11 杭州玳数科技有限公司 Sql语句血缘关系的解析方法和系统
CN114282497A (zh) * 2021-12-24 2022-04-05 思必驰科技股份有限公司 文本转sql方法及系统
CN114676678A (zh) * 2022-04-08 2022-06-28 北京百度网讯科技有限公司 结构化查询语言数据的解析方法、装置和电子设备
CN114817298A (zh) * 2022-05-12 2022-07-29 平安科技(深圳)有限公司 字段级数据血缘提取方法、装置、设备及存储介质
CN114861229A (zh) * 2022-06-08 2022-08-05 杭州比智科技有限公司 一种Hive动态脱敏方法及系统
CN115292353A (zh) * 2022-10-09 2022-11-04 腾讯科技(深圳)有限公司 数据查询方法、装置、计算机设备和存储介质
CN115291889A (zh) * 2022-09-27 2022-11-04 华控清交信息科技(北京)有限公司 一种数据血缘关系建立方法、装置及电子设备

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110908997A (zh) * 2019-10-09 2020-03-24 支付宝(杭州)信息技术有限公司 数据血缘构建方法、装置、服务器及可读存储介质
CN111026779A (zh) * 2019-12-19 2020-04-17 厦门安胜网络科技有限公司 一种基于Flink SQL的数据处理方法、装置、存储介质
CN111538743A (zh) * 2020-04-22 2020-08-14 电子科技大学 基于sql的数据血缘关系分析方法以及系统
US20200301917A1 (en) * 2018-05-02 2020-09-24 Zte Corporation Data protection method and device and storage medium
CN112711591A (zh) * 2020-12-31 2021-04-27 天云融创数据科技(北京)有限公司 基于知识图谱的字段级的数据血缘确定方法及装置
CN113032362A (zh) * 2021-03-18 2021-06-25 广州虎牙科技有限公司 数据血缘分析方法、装置、电子设备和存储介质
CN113434533A (zh) * 2021-07-22 2021-09-24 支付宝(杭州)信息技术有限公司 一种数据溯源工具构建方法、数据处理方法、装置及设备

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200301917A1 (en) * 2018-05-02 2020-09-24 Zte Corporation Data protection method and device and storage medium
CN110908997A (zh) * 2019-10-09 2020-03-24 支付宝(杭州)信息技术有限公司 数据血缘构建方法、装置、服务器及可读存储介质
CN111026779A (zh) * 2019-12-19 2020-04-17 厦门安胜网络科技有限公司 一种基于Flink SQL的数据处理方法、装置、存储介质
CN111538743A (zh) * 2020-04-22 2020-08-14 电子科技大学 基于sql的数据血缘关系分析方法以及系统
CN112711591A (zh) * 2020-12-31 2021-04-27 天云融创数据科技(北京)有限公司 基于知识图谱的字段级的数据血缘确定方法及装置
CN113032362A (zh) * 2021-03-18 2021-06-25 广州虎牙科技有限公司 数据血缘分析方法、装置、电子设备和存储介质
CN113434533A (zh) * 2021-07-22 2021-09-24 支付宝(杭州)信息技术有限公司 一种数据溯源工具构建方法、数据处理方法、装置及设备

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114168600A (zh) * 2021-12-18 2022-03-11 杭州玳数科技有限公司 Sql语句血缘关系的解析方法和系统
CN114282497A (zh) * 2021-12-24 2022-04-05 思必驰科技股份有限公司 文本转sql方法及系统
CN114676678A (zh) * 2022-04-08 2022-06-28 北京百度网讯科技有限公司 结构化查询语言数据的解析方法、装置和电子设备
CN114676678B (zh) * 2022-04-08 2023-10-27 北京百度网讯科技有限公司 结构化查询语言数据的解析方法、装置和电子设备
CN114817298A (zh) * 2022-05-12 2022-07-29 平安科技(深圳)有限公司 字段级数据血缘提取方法、装置、设备及存储介质
CN114861229A (zh) * 2022-06-08 2022-08-05 杭州比智科技有限公司 一种Hive动态脱敏方法及系统
CN115291889A (zh) * 2022-09-27 2022-11-04 华控清交信息科技(北京)有限公司 一种数据血缘关系建立方法、装置及电子设备
CN115291889B (zh) * 2022-09-27 2023-01-13 华控清交信息科技(北京)有限公司 一种数据血缘关系建立方法、装置及电子设备
CN115292353A (zh) * 2022-10-09 2022-11-04 腾讯科技(深圳)有限公司 数据查询方法、装置、计算机设备和存储介质

Similar Documents

Publication Publication Date Title
CN113672628A (zh) 数据血缘分析方法、终端设备及介质
CN109376166B (zh) 脚本转换方法、装置、计算机设备及存储介质
CN110795455B (zh) 依赖关系解析方法、电子装置、计算机设备及可读存储介质
KR102230661B1 (ko) Sql 검토 방법, 장치, 서버 및 저장 매체
US9703830B2 (en) Translation of a SPARQL query to a SQL query
CN110502227B (zh) 代码补全的方法及装置、存储介质、电子设备
US10210240B2 (en) Systems and methods for code parsing and lineage detection
CN113032362A (zh) 数据血缘分析方法、装置、电子设备和存储介质
CN113760891B (zh) 一种数据表的生成方法、装置、设备和存储介质
US20100293161A1 (en) Automatically avoiding unconstrained cartesian product joins
US9706005B2 (en) Providing automatable units for infrastructure support
CN113821496B (zh) 数据库迁移方法、系统、设备及计算机可读存储介质
US20240256613A1 (en) Data processing method and apparatus, readable storage medium, and electronic device
CN112862334A (zh) 基于语法分析树的指标体系构建方法、装置及计算机设备
CN113568924A (zh) 一种数据处理方法、装置、电子设备及存储介质
CN114676678A (zh) 结构化查询语言数据的解析方法、装置和电子设备
CN112000690B (zh) 解析结构化操作语句的方法和装置
US10223086B2 (en) Systems and methods for code parsing and lineage detection
CN117215570A (zh) 应用程序接口的代码生成方法、终端设备和存储介质
CN116414859A (zh) 数据处理方法及其装置、电子设备、计算机可读存储介质
WO2015139646A1 (en) Data processing method and apparatus for unrealscript
CN114547083A (zh) 数据处理方法、装置及电子设备
CN114089980A (zh) 编程处理方法、装置、解释器及非易失性存储介质
CN112433943A (zh) 基于抽象语法树的环境变量检测方法、装置、设备及介质
CN107818100B (zh) 一种sql语句执行方法及装置

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
RJ01 Rejection of invention patent application after publication

Application publication date: 20211119

RJ01 Rejection of invention patent application after publication