本发明涉及数据分析领域,尤其涉及一种sql语句语法可视化分析方法、系统和计算机可读存储介质。
背景技术:
随着科技的不断发展,众多行业领域都产生了海量级数据。为了充分利用数据价值,挖掘数据带来的潜在收益,逐渐形成了大规模的sql计算场景。在金融、保险、债券等行业由于业务数据复杂在大数据调度elt中产生较为复杂且难以理解的长sql语句,往往需要花费开发者大量时间去识别理解sql语句的数据加工逻辑,因此需要一种sql语句语法的可视化分析方法和系统,方便开发者理解数据加工逻辑,提高逻辑分析效率。
技术实现要素:
本发明的目的在于提供一种sql语句语法可视化分析方法、系统及计算机可读存储介质,旨在解决现有技术中sql语句语法树可视化分析不够详尽的问题。
第一方面,本发明提供了一种sql语句语法的可视化分析方法,其特征在于,所述方法包括:
获取源sql语句并清洗后生成标准sql语句;
基于所述标准sql语句生成ast对象;
解析所述ast对象获取所述sql语句语法中的抽象组成元素;
基于所述抽象组成元素生成数据加工逻辑图;
输出所述抽象组成元素和/或所述数据加工逻辑图至可视化展示界面。
第二发明,本发明提供了一种sql语句语法可视化分析系统,其特征在于,所述系统包括:
sql语句获取模块,用于获取源sql语句并清洗后生成标准sql语句;
ast对象生成模块,用于基于所述标准sql语句生成所述ast对象;
ast对象解析模块,用于解析所述ast对象获取所述sql语句语法中的抽象组成元素;
数据加工逻辑图生成模块,用于基于所述抽象组成元素生成数据加工逻辑图;
展示模块,用于可视化展示所述抽象组成元素和/或所述数据加工逻辑图。
第三方面,本发明提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如上所述的sql语句语法可视化分析方法的步骤。
在本发明中,获取源sql语句清洗后生成标准sql语句,基于标准sql语句生成ast对象,解析ast对象后获取sql语句中的抽象组成元素,包括表结构、表之间关联关系、数据上下游链路及血缘关系、功能函数、限定关系等,从而实现全链路sql语法树的可视化分析,帮助开发者理解数据加工流程,提高逻辑分析效率。
附图说明
图1是本发明实施例一提供的一种sql语句语法可视化分析方法的流程图。
图2是本发明实施例二提供的一种sql语句语法可视化分析系统的模块框图。
具体实施方式
为了使本发明的目的、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一:
如图1所示,本发明实施例一提供了一种sql语句语法可视化分析方法,包括如下步骤:
s101、获取源sql语句并清洗后生成标准sql语句。
在本发明实施例一中,源sql语句可以是在编辑器中编写的sql语句,还可以是在调度系统中的sql语句,还可以是嵌套在程序代码中的sql语句等等。获取源sql语句后进行的清洗可以包括参数替换、格式转换、注解去除、多余代码删除等操作中的一个或多个操作。源sql经清洗后生成的标准sql语句可以是ansi/iso标准sql语句。
s102、基于所述标准sql语句生成ast对象。
在本发明实施例一中,采用antlr工具构建标准sql语法分析器,并基于所述标准sql语法分析器分析所述标准sql语句生成ast对象。此外,还可以采用javacc工具构建标准sql语法分析器。
s103、解析所述ast对象获取所述sql语句语法中的抽象组成元素。
在本发明实施例一中,解析ast对象可以采用深度优先遍历,在深度优先遍历中可能碰见select*等缺失元数据信息,所以还需要连接数据库获取到该表库的元数据进行补充。sql语句语法中的抽象组成元素包括但不限于表结构、表之间关联关系、数据上下游链路及血缘关系、功能函数、限定关系。
s104、基于所述抽象组成元素生成数据加工逻辑图。
在本发明实施例一中,根据sql语句中的语义单元确定节点数据和逻辑处理先后顺序,根据逻辑处理先后顺序处理节点数据得到数据结构流程图,多个数据结构流程图构成整个数据加工逻辑图。此外,数据加工逻辑图也可以采用人工标注生成。在本发明实施例一中,采用关系型数据库mysql存储未清洗的源sql语句、清洗后的标准sql语句、ast对象、数据结构流程对象等。表结构、表之间关联关系、数据上下游链路及血缘关系、功能函数、限定关系等抽象组成元素可以采用图数据库来存储。
s105、输出所述抽象组成元素和/或所述数据加工逻辑图至可视化展示界面。
在本发明实施例一中,采用html页面进行可视化展示。其中html页面可以是经过订制的。在可视化展示界面可以展示以下页面中的一个或多个:源sql与标准sql清洗对比页面、数据加工逻辑图、抽象组成元素页面、整体缩略图。
在本发明实施例一中,sql语句语法可视化分析方法还可以包括以下步骤:
s106、汇总分析所述抽象组成元素并输出至可视化展示界面。
在本发明实施例一中,可以对抽象组成元素进行汇总分析,包括但不限于所述sql语句涉及的表的个数、视图的个数、表中字段、数据类型等,可以采用关系型数据库mysql存储汇总分析对象,还可以将汇总分析结果输出至可视化展示界面进行展示,使得开发人员对所述sql语句有整体上的把控。
实施例二:
如图2所示,本发明实施例二提供了一种sql语句语法可视化分析系统200,包括sql语句获取模块201、ast对象生成模块202、ast对象解析模块203、数据加工逻辑图生成模块204、和展示模块205。
sql语句获取模块201,用于获取源sql语句并清洗后生成标准sql语句。
ast对象生成模块202,用于基于所述标准sql语句生成所述ast对象。
ast对象解析模块203,用于解析所述ast对象获取所述sql语句语法中的抽象组成元素。
数据加工逻辑图生成模块204,用于基于所述抽象组成元素生成数据加工逻辑图。
展示模块205,用于可视化展示所述抽象组成元素和/或所述数据加工逻辑图。
本发明实施例二提供的sql语句语法可视化分析系统与本申请一实施例提供的sql语句语法可视化分析方法属于同一构思,其具体实现过程详见说明书全文,此处不再赘述。
实施例三:
本发明实施例三提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如本发明实施例一所述的sql语句语法可视化分析方法的步骤。
在本发明中,获取源sql语句清洗后生成标准sql语句,基于标准sql语句生成ast对象,解析ast对象后获取sql语句中的抽象组成元素,包括表结构、表之间关联关系、数据上下游链路及血缘关系、功能函数、限定关系等,从而实现全链路sql语法树的可视化分析,帮助开发者理解数据加工流程,提高逻辑分析效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。