CN118132585A - 一种sql处理方法、装置、设备、介质、产品 - Google Patents
一种sql处理方法、装置、设备、介质、产品 Download PDFInfo
- Publication number
- CN118132585A CN118132585A CN202410263617.6A CN202410263617A CN118132585A CN 118132585 A CN118132585 A CN 118132585A CN 202410263617 A CN202410263617 A CN 202410263617A CN 118132585 A CN118132585 A CN 118132585A
- Authority
- CN
- China
- Prior art keywords
- sql
- target field
- processed
- logic
- field
- 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
Links
- 238000003672 processing method Methods 0.000 title abstract description 24
- 238000012545 processing Methods 0.000 claims abstract description 162
- 238000000034 method Methods 0.000 claims abstract description 129
- 230000008569 process Effects 0.000 claims abstract description 94
- 238000004458 analytical method Methods 0.000 claims abstract description 20
- 238000004590 computer program Methods 0.000 claims description 23
- 238000000605 extraction Methods 0.000 description 15
- 230000006870 function Effects 0.000 description 14
- 230000000694 effects Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 10
- 238000011144 upstream manufacturing Methods 0.000 description 10
- 230000000007 visual effect Effects 0.000 description 10
- 229910021532 Calcite Inorganic materials 0.000 description 6
- 230000009286 beneficial effect Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000007547 defect Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000009635 antibiotic susceptibility testing Methods 0.000 description 1
- 238000013523 data management Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012804 iterative process Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000003754 machining Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
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/2428—Query predicate definition using graphical user interfaces, including menus and forms
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种SQL处理方法、装置、设备、介质、产品,该方法包括:在获取到待处理SQL之后,先对该待处理SQL进行解析处理,得到该待处理SQL对应的图形表示,以使该图形表示用于描述该待处理SQL的执行过程;然后,当该执行过程包括至少一个候选字段的加工逻辑,而且该至少一个候选字段包括目标字段时,从该待处理SQL对应的图形表示中裁剪出该目标字段对应的图形表示,以使该目标字段对应的图形表示用于描述该目标字段的加工逻辑;最后,对该目标字段对应的图形表示进行逆解析处理,得到该目标字段对应的SQL,以便后续能够通过执行该目标字段对应的SQL完成针对该目标字段的加工处理,如此能够实现从SQL中提取出某个字段的加工逻辑。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种SQL处理方法、装置、设备、介质、产品。
背景技术
结构化查询语言(Structured Query Language,SQL),如Hive SQL是一种常用的查询语言,但是,由于SQL的复杂性比较高,如此使得对于一些应用领域,如与数据湖和/或数据仓相关的领域来说,如何从SQL中确定某个字段的加工逻辑成为一项挑战。
发明内容
为了解决上述技术问题,本申请提供了一种SQL处理方法、装置、设备、介质、产品。
为了实现上述目的,本申请提供的技术方案如下:
本申请提供一种SQL处理方法,所述方法包括:
在获取到待处理SQL之后,对所述待处理SQL进行解析处理,得到所述待处理SQL对应的图形表示;所述图形表示用于描述所述待处理SQL的执行过程;所述执行过程包括至少一个候选字段的加工逻辑;所述至少一个候选字段包括目标字段;
从所述待处理SQL对应的图形表示中裁剪出所述目标字段对应的图形表示;所述目标字段对应的图形表示用于描述所述目标字段的加工逻辑;
对所述目标字段对应的图形表示进行逆解析处理,得到所述目标字段对应的SQL。
在一种可能的实施方式下,所述待处理SQL对应的图形表示的确定过程,包括:将所述待处理SQL转换为所述待处理SQL对应的抽象语法树;将所述待处理SQL对应的抽象语法树转换为所述待处理SQL对应的图形表示;
所述目标字段对应的SQL的确定过程,包括:将所述目标字段对应的图形表示转换为所述目标字段对应的抽象语法树;将所述目标字段对应的抽象语法树转换为所述目标字段对应的SQL。
在一种可能的实施方式下,所述从所述待处理SQL对应的图形表示中裁剪出所述目标字段对应的图形表示,包括:从所述待处理SQL对应的图形表示中提取出所述目标字段的关联部分;对所述关联部分进行至少一种简化处理,得到所述目标字段对应的图形表示;所述至少一种简化处理包括无效连接裁剪处理、无效字段裁剪处理、以及嵌套选择合并处理中的一个或者多个;所述无效连接裁剪处理用于简化所述关联部分中的多表连接逻辑;所述无效字段裁剪处理用于从所述关联部分的去除对所述目标字段不产生影响的字段;所述嵌套选择合并处理用于简化所述关联部分中的多层嵌套选择逻辑。
在一种可能的实施方式下,所述无效连接裁剪处理,包括:若所述关联部分包括左连接逻辑,而且所述左连接逻辑中的右表加工逻辑对所述目标字段不产生影响,则从所述关联部分中删除所述右表加工逻辑;若所述关联部分包括右连接逻辑,而且所述右连接逻辑中的左表加工逻辑对所述目标字段不产生影响,则从所述关联部分中删除所述左表加工逻辑。
在一种可能的实施方式下,所述嵌套选择合并处理,包括:若所述关联部分中的多层嵌套选择逻辑满足谓词合并条件,则将所述多层嵌套选择逻辑中的至少两个条件进行合并处理;若所述关联部分中的多层嵌套选择逻辑满足无效子查询合并条件,则将所述多层嵌套选择逻辑中的至少两层选择逻辑进行合并处理。
在一种可能的实施方式下,所述方法还包括:展示所述目标字段对应的SQL以及所述目标字段对应的图形表示。
在一种可能的实施方式下,所述得到所述目标字段对应的SQL之后,所述方法还包括:
依据所述目标字段对应的SQL、以及所述目标字段对应的SQL中物理表的产出SQL,更新所述待处理SQL,并继续执行所述对所述待处理SQL进行解析处理的步骤,直至达到预设停止条件;所述物理表是通过执行所述产出SQL所得到的。
在一种可能的实施方式下,所述依据所述目标字段对应的SQL、以及所述目标字段对应的SQL中物理表的产出SQL,更新所述待处理SQL,包括:
将所述物理表的产出SQL进行变形处理,得到所述物理表对应的子查询语句;所述子查询语句所描述的处理逻辑与所述产出SQL所描述的处理逻辑保持一致;
利用所述物理表对应的子查询语句替换所述目标字段对应的SQL中的物理表,得到更新后的待处理SQL。
本申请提供了一种SQL处理装置,包括:
解析单元,用于在获取到待处理SQL之后,对所述待处理SQL进行解析处理,得到所述待处理SQL对应的图形表示;所述图形表示用于描述所述待处理SQL的执行过程;所述执行过程包括至少一个候选字段的加工逻辑;所述至少一个候选字段包括目标字段;
裁剪单元,用于从所述待处理SQL对应的图形表示中裁剪出所述目标字段对应的图形表示;所述目标字段对应的图形表示用于描述所述目标字段的加工逻辑;
逆解析单元,用于对所述目标字段对应的图形表示进行逆解析处理,得到所述目标字段对应的SQL。
本申请提供了一种电子设备,所述设备包括:处理器和存储器;
所述存储器,用于存储指令或计算机程序;
所述处理器,用于执行所述存储器中的所述指令或计算机程序,以使得所述电子设备执行本申请提供的SQL处理方法。
本申请提供了一种计算机可读介质,所述计算机可读介质中存储有指令或计算机程序,当所述指令或计算机程序在设备上运行时,使得所述设备执行本申请提供的SQL处理方法。
本申请提供了一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行本申请提供的SQL处理方法的程序代码。
与相关技术相比,本申请至少具有以下优点:
本申请提供的技术方案中,在获取到待处理SQL,如用户输入的SQL之后,先对该待处理SQL进行解析处理,得到该待处理SQL对应的图形表示,以使该图形表示用于描述该待处理SQL的执行过程,如该图像表示能够以可视化方式描述出该待处理SQL的执行过程等;然后,当该执行过程包括至少一个候选字段的加工逻辑,而且该至少一个候选字段包括目标字段,如用户指定的需要进行加工逻辑确定处理的字段时,从该待处理SQL对应的图形表示中裁剪出该目标字段对应的图形表示,以使该目标字段对应的图形表示用于描述该目标字段的加工逻辑;最后,对该目标字段对应的图形表示进行逆解析处理,得到该目标字段对应的SQL,以使该目标字段对应的SQL能够表示出该目标字段的加工逻辑,以便后续能够通过执行该目标字段对应的SQL完成针对该目标字段的加工处理,如此能够实现从SQL中提取出某个字段的加工逻辑,从而能够有效地克服因手动提取某个字段的加工逻辑所导致的缺陷,如耗时长、准确性低等缺陷,从而有利于提高字段逻辑的提取效果,如提取准确性和提取效率等。
附图说明
为了更清楚地说明本申请实施例或相关技术中的技术方案,下面将对实施例或相关技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1为本申请实施例提供的一种SQL处理方法的流程图;
图2为本申请实施例提供的一种目标字段对应的图形表示的示意图;
图3为本申请实施例提供的一种物理表向上探查的示意图;
图4为本申请实施例提供的一种SQL处理装置的结构示意图;
图5为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为了更好地理解本申请所提供的技术方案,下面先结合一些附图对本申请提供的SQL处理方法进行说明。如图1所示,本申请实施例提供的SQL处理方法,包括下文S1-S3。其中,该图1为本申请实施例提供的一种SQL处理方法的流程图。
S1:在获取到待处理SQL之后,对该待处理SQL进行解析处理,得到该待处理SQL对应的图形表示;该图形表示用于描述该待处理SQL的执行过程;该执行过程包括至少一个候选字段的加工逻辑;该至少一个候选字段包括目标字段。
其中,待处理SQL是指在确定某个字段的相关逻辑时所需使用的SQL,如Hive SQL等;而且该待处理SQL可以包括至少一条语句,如100条语句。另外,本申请不限定该待处理SQL的实施方式,比如,该待处理SQL可以是指由用户所输入的SQL,如一段包括多条SQL语句的代码等。又如,该待处理SQL可以是指通过一定方式所得到的SQL。
待处理SQL对应的图形表示用于描述该待处理SQL的执行过程,以使该图形表示能够以可视化方式直观描述出该待处理SQL的执行过程,如该图形表示可以利用类似于图2所示的图表方式直观描述出该待处理SQL的执行过程等,从而使得该图形表示能够以可视化方式描述出在执行该待处理SQL时所涉及的各个表、各个字段、不同表与不同字段之间的关系、以及每个字段的加工逻辑等。可见,在一种可能的实施方式下,该待处理SQL对应的图形表示可以用于描述至少一个候选字段的加工逻辑,以使该待处理SQL对应的图形表示能够表示出在执行该待处理SQL时如何加工这些候选字段。其中,该至少一个候选字段用于表示在执行该待处理SQL时所涉及的部分或者全部字段。第i个候选字段是指在执行该待处理SQL时所涉及的第i个字段,如图2所示的submit_id这个字段。该第i个候选字段的加工逻辑用于描述在执行该待处理SQL时如何加工该第i个候选字段,以使该第i个候选字段的加工逻辑能够表示出在执行该待处理SQL时该第i个候选字段的加工口径和链路。i为正整数,i≤I,I为正整数,I表示该至少一个候选字段中的字段个数,如在执行该待处理SQL时所涉及的所有字段的个数。
另外,本申请不限定上文待处理SQL对应的图形表示的获取方式,比如,其可以采用现有的或者未来出现的任意一种能够将SQL处理成可视化数据,如类似于图2所示的图表的方法进行实施。
又如,为了更好地提高SQL的处理效果,本申请还提供了上文待处理SQL对应的图形表示的获取过程的一种可能的实施方式,在该实施方式下,该待处理SQL对应的图形表示的获取过程具体可以包括下文步骤11-步骤12。
步骤11:将待处理SQL转换为该待处理SQL对应的抽象语法树(AbstractSyntaxTree,AST)。
需要说明的是,本申请不限定上文步骤11的实施方式,比如,其具体可以为:针对待处理SQL进行语法解析处理,得到该待处理SQL对应的抽象语法树。另外,本申请不限定该语法解析处理的实施方式,比如,其可以采用现有的或者未来出现的任意一种能够将SQL转换成AST的方法,如借助Apache Calcite所实现的方法进行实施。
可见,在一种可能的实施方式下,上文步骤11具体可以为:利用Apache Calcite对待处理SQL进行语法解析处理,得到该待处理SQL对应的抽象语法树。其中,该ApacheCalcite是一个动态数据管理框架,而且该Apache Calcite包含了许多预构建的数据库和查询引擎,以使该Apache Calcite可以用于构建各种类型的数据库和数据处理系统,并使得该Apache Calcite可以用于将SQL语句转换为AST。
步骤12:将待处理SQL对应的抽象语法树转换为该待处理SQL对应的图形表示。
需要说明的是,本申请不限定上文步骤12的实施方式,比如,其可以采用现有的或者未来出现的任意一种能够将AST转换成可视化数据的方法,如借助预先自定义的可视化算法进行实施。
又如,为了更好地提高SQL处理效果,上文步骤12具体可以包括下文步骤121-步骤123。
步骤121:依据待处理SQL对应的抽象语法树,确定该待处理SQL对应的多个表以及该多个表之间的关联关系。
其中,多个表用于表示在执行待处理SQL时所涉及的全部或者部分表,如物理表以及中间处理结果等。需要说明的是,物理表是指在数据库中存储好的表,如图2所示的各个物理表或者图3所示的各个数据库中存储的表。中间处理结果是指通过针对一些表进行处理所得的结果,如图2所示的join结果集和select结果集。
另外,本申请不限定上文步骤121中多个表的实施方式,比如,在一种可能的实施方式下,该多个表可以包括下文表1所示的部分或者全部类型,以使该多个表能够全面地表示出在执行待处理SQL时所涉及的表,如数据库中存储的表以及通过某种处理所生成的表等,如此有利于提高SQL处理效果。
表1一些表类型及其相关信息
另外,对于上文步骤121中“多个表之间的关联关系”来说,该关联关系用于描述不同表之间的关系,比如输入输出关系,以使该关联关系能够表示出这些表之间的上下游关系。
此外,本申请不限定上文步骤121的实施方式,比如,其具体可以为:在获取到待处理SQL对应的抽象语法树之后,可以对该抽象语法树进行语义解析处理,以得到该待处理SQL对应的多个表以及该多个表之间的关联关系,以使这些信息能够表示出在执行该待处理SQL时所涉及的一些表以及这些表之间的输入输出关系。
步骤122:依据待处理SQL对应的抽象语法树、上文多个表以及该多个表之间的关联关系,确定该待处理SQL对应的至少两个字段之间的逻辑关系,以使该逻辑关系能够表示出一个字段是由另一个字段通过何种处理所得到的。
其中,至少两个字段是指上文多个表中所涉及的字段,以使该至少两个字段能够表示出在执行待处理SQL时所涉及的全部或者部分字段。
另外,对于上文至少两个字段来说,该至少两个字段之间的逻辑关系用于表示不同字段之间存在的推理逻辑,从而使得该逻辑关系能够更细化的表示出在执行待处理SQL时所涉及的不同表中各个字段之间的关系,比如,下游表中的一个字段可以是通过针对上游表中一个或者多个字段进行处理所得到的。
此外,本申请不限定上文步骤122中的逻辑关系的实施方式,比如,其可以包括下文
表2中所示的部分或者全部逻辑关系。
表2一些逻辑关系类型及其相关信息
需要说明的是,对于上文表2所示的UDF来说,如果从上游表到下游表的加工过程中未出现UDTF/UDAF,则可以认为是UDF,而且在直观的图形表示中,该UDF所涉及的上游字段到下游字段产生连线。另外,若上游字段经过UDF函数加工得到下游字段,则下游字段右侧展示UDF函数名的缩略词的标识,如icon;若存在UDF嵌套,则只展示最外层的UDF即可。此外,由于UDF函数太多,只需要将常用UDF展示为缩略词,其余展示为图2所示的fx即可。还有,若上游字段不需要经过UDF加工得到下游字段,则下游字段右侧为空。再者,UDF包括无加工和有加工这两大类。其中,有加工具体可以包括数据类型转换、算术运算(如,加、减、乘、除)、字符串处理(如,长度、拼接、截取、替换等字符串处理)、条件语句(如,if、case等条件语句)、窗口函数(如,row_number、rank、dense_rank等窗口函数)、以及其他UDF函数。
还需要说明的是,对于上文表2所示的UDTF来说,如果若从上游表到下游表的加工逻辑出现了UDTF,则可以认为是UDTF加工(注意:搭配lateral view使用的UDTF算作lateral view逻辑,此处仅限select后面使用的UDTF);而且在直观的图形表示中,新增一行“udtf逻辑”,以使该UDTF逻辑用到的字段与“UDTF逻辑”产生连线,并使得UDTF产出字段与其上游字段产生连线。
再需要说明的是,对于上文表2所示的UDAF说,如果从上游表到下游表的加工逻辑出现了UDAF,则可以认为是UDAF加工;而且若存在group by逻辑,则新增一行“group by逻辑”,以使Group by逻辑用到的上游字段与“group by逻辑”产生连线。另外,若上游字段经过UDAF函数加工得到下游字段,则下游字段右侧展示UDAF函数名的缩略词的icon;若存在UDAF和UDF嵌套,则只展示最外层的函数即可。此外,由于UDAF函数太多,只需要将常用UDAF展示为缩略词,其余展示为图2所示的fx即可。需要展示具体缩略词的UDAF:max、count、min、avg、sum等。
此外,本申请不限定上文步骤122的实施方式,比如,其具体可以为:在获取到待处理SQL对应的抽象语法树之后,可以对该抽象语法树进行语义解析处理,以得到不同表之间的加工逻辑,并基于该加工逻辑,确定该待处理SQL对应的至少两个字段之间的逻辑关系。
步骤123:基于上文多个表、该多个表之间的关联关系、以及上文至少两个字段之间的逻辑关系,构建待处理SQL对应的图形表示,以使该图形表示能够直观表示该多个表、该多个表之间的关联关系、以及该至少两个字段之间的逻辑关系。
基于上文步骤121至步骤123的相关内容可知,对于上文待处理SQL来说,在获取到该待处理SQL对应的抽象语法树之后,先对该抽象语法树进行语义解析处理,以得到在执行待处理SQL时所涉及的一些表、这些表之间的输入输出关系、这些表中不同字段之间的逻辑关系;再基于这些信息构建该待处理SQL对应的图形表示,以使该图形表示能够直观表示这些信息。
基于上文S1的相关内容可知,在获取到待处理SQL之后,针对该待处理SQL进行解析,得到该待处理SQL对应的图形表示,以使该图形表示能够直观描述出该待处理SQL的执行过程,从而使得该图形表示能够通过可视化方式描述出在执行该待处理SQL时所涉及的各个字段的加工逻辑,以便后续能够借助该图形表示,确定由用户所指定的字段的加工逻辑。
S2:从待处理SQL对应的图形表示中裁剪出目标字段对应的图形表示;该目标字段对应的图形表示用于描述该目标字段的加工逻辑。
其中,目标字段是指上文至少一个候选字段中存在的、需要进行加工逻辑确定处理的字段。
另外,本申请不限定目标字段的获取方式,比如,在一些应用场景下,该目标字段是由用户通过一定方式所指定的。需要说明的是,本申请不限定该目标字段的指定方式,比如,用户可以通过向输入框中输入内容,如图2所示的submit这一内容,的方式指定该目标字段。又如,用户可以通过从某种列表中选择字段的方式指定该目标字段。
此外,对于上文目标字段来说,该目标字段对应的图形表示是指从待处理SQL对应的图形表示中裁剪所得的结果,如由图2所示的字段submit的图形表示等,以使该目标字段对应的图形表示能够通过可视化方式直观描述出该目标字段的加工逻辑,从而使得该目标字段对应的图形表示能够表示出在执行该待处理SQL时如何处理该目标字段。
还有,本申请不限定上文S2的实施方式,比如,其具体可以为:从待处理SQL对应的图形表示中删除与该目标字段无关的部分,如对该目标字段不产生影响的部分,得到该目标字段对应的图形表示,以使该目标字段对应的图形表示能够表示出该待处理SQL对应的图形表示中存在的、与该目标字段相关的部分,如能够对该目标字段产生影响的部分。
实际上,为了更好地提高字段逻辑的提取效果,本申请还提供了上文S2的一种可能的实施方式,在该实施方式下,该S2具体可以包括下文步骤21-步骤22。
步骤21:从待处理SQL对应的图形表示中提取目标字段的关联部分。
其中,目标字段的关联部分是指待处理SQL对应的图形表示中存在的、与该目标字段相关的部分,以使该关联部分能够表示出在执行该待处理SQL时所涉及的、与该目标字段相关的逻辑,如以该目标字段作为处理对象的逻辑、涉及包括该目标字段的条件的逻辑、以该目标字段作为生成对象的逻辑等。
另外,本申请不限定上文步骤21的实施方式,比如,其具体可以为:从待处理SQL对应的图形表示中删除与该目标字段无关的部分,得到该目标字段的关联部分。
步骤22:对目标字段的关联部分进行至少一种简化处理,得到该目标字段对应的图形表示;该至少一种简化处理包括无效连接裁剪处理、无效字段裁剪处理、以及嵌套选择合并处理中的一个或者多个;该无效连接裁剪处理用于简化该关联部分中的多表连接逻辑;该无效字段裁剪处理用于从该关联部分的去除对目标字段不产生影响的字段;该嵌套选择合并处理用于简化该关联部分中的多层嵌套选择逻辑。
其中,至少一种简化处理用于简化由目标字段的关联部分所描述的加工逻辑;而且该至少一种简化处理包括无效连接裁剪处理、无效字段裁剪处理、以及嵌套选择合并处理中的一个或者多个。
无效连接裁剪处理用于简化目标字段的关联部分中的多表连接逻辑,以使简化后的多表连接逻辑中不存在无法对该目标字段做出贡献的表。其中,多表连接逻辑是指由某种join语句所描述的逻辑,如由多段leftjoin所描述的逻辑或者由多段right join所描述的逻辑等。
另外,本申请不限定上文无效连接裁剪处理的实施方式,比如,其可以按照预先设定的规则进行实施。
又如,为了更好地提高处理效果,上文无效连接裁剪处理具体可以包括下文步骤221-步骤222。
步骤221:若目标字段的关联部分包括左连接逻辑,而且该左连接逻辑中的右表加工逻辑对目标字段不产生影响,则从该关联部分中删除该右表加工逻辑。
其中,左连接逻辑是指由leftjoin语句所描述的逻辑,如由下文表3第一列中的SQL所描述的加工逻辑。
右表加工逻辑是指上文左连接逻辑中存在的、用于对右表进行加工的逻辑。
基于上文步骤221可知,对于上文目标字段的关联部分中出现的任意一个左连接逻辑来说,如果该左连接逻辑中的右表加工逻辑对目标字段不产生影响,则可以确定该右表无法对该目标字段做出贡献,从而可以确定该左连接逻辑中存在无效连接,故可以直接从该左连接逻辑中删除该无效连接,也就是该右表加工逻辑即可,以使删除后的左连接逻辑中不存在无效连接,从而使得该删除后的左连接逻辑中不存在无法对该目标字段做出贡献的表,进而使得包括该删除后的左连接逻辑的关联部分能够更简洁地描述出如何加工该目标字段。需要说明的是,如果目标字段只出现在该左连接逻辑所涉及的关联条件,如“ona.id=b.id”这一条件里,则可以根据具体场景判断是否需要简化。
表3left join的简化示例
步骤222:若目标字段的关联部分包括右连接逻辑,而且右连接逻辑中的左表加工逻辑对目标字段不产生影响,则从该关联部分中删除该左表加工逻辑。
其中,右连接逻辑是指借助right join语句所实现的逻辑。
左表加工逻辑是指上文右连接逻辑中存在的、用于对左表进行加工的逻辑。
基于上文步骤222可知,对于上文目标字段的关联部分中出现的任意一个右连接逻辑来说,如果该右连接逻辑中的左表加工逻辑对目标字段不产生影响,则可以确定该左表无法对该目标字段做出贡献,从而可以确定该右连接逻辑中存在无效连接,故可以直接从该右连接逻辑中删除该无效连接,也就是该左表加工逻辑即可,以使删除后的右连接逻辑中不存在无效连接,从而使得该删除后的右连接逻辑中不存在无法对该目标字段做出贡献的表,进而使得包括该删除后的右连接逻辑的关联部分能够更简洁地描述出如何加工该目标字段。需要说明的是,如果目标字段只出现在该右连接逻辑所涉及的关联条件这一条件里,则可以根据具体场景判断是否需要简化。
基于上文步骤221至步骤222的相关内容可知,在一些应用场景下,可以针对上文目标字段的关联部分进行无效连接裁剪处理,以剔除该关联部分中出现的无效连接,从而有利于提高字段逻辑提取效果。
无效字段裁剪处理用于从目标字段的关联部分的去除对该目标字段不产生影响的字段;而且本申请不限定该无效字段裁剪处理的实施方式,比如,该无效字段裁剪处理可以借助预先设定的规则进行实施,以使该无效字段裁剪处理可以用于只保留对目标字段有贡献的字段及加工代码,和/或,该无效字段裁剪处理可以用于只保留目标字段进行口径追溯,并且在其余字段不会对该目标字段产生任何影响时进行裁剪。需要说明的是,where条件里的所有字段都需要保留。另外,on、group by、lateralview视具体业务场景,判断是否需要保留。
嵌套选择合并处理用于简化目标字段的关联部分中的多层嵌套选择逻辑。其中,该多层嵌套选择逻辑是指由多个select语句通过嵌套方式所描述的逻辑,如由表4的第一列中的SQL所描述的逻辑。
表4嵌套选择合并处理的示例
另外,本申请不限定嵌套选择合并处理的实施方式,比如,其具体可以包括下文步骤223-步骤224。
步骤223:若目标字段的关联部分中的多层嵌套选择逻辑满足谓词合并条件,则将该关联部分中的至少两个条件进行合并处理。
其中,谓词合并条件是指预先设定的、能够进行where条件合并的多层嵌套选择逻辑所满足的条件,比如由表4中第二行所描述的条件。
另外,本申请不限定上文步骤223的实施方式,比如,其可以为:若目标字段的关联部分中的多层嵌套选择逻辑满足谓词合并条件,则将该关联部分中的至少两个条件进行合并处理,以使合并后的关联部分所表示的加工逻辑与合并前的关联部分所表示的加工逻辑保持一致,并使得该合并后的关联部分对应的SQL语句个数少于该合并前的关联部分对应的SQL语句个数。其中,该合并后的关联部分对应的SQL语句个数是指基于该合并后的关联部分进行逆解析处理所得的SQL中的语句个数。该合并前的关联部分对应的SQL语句个数是指基于该合并前的关联部分进行逆解析处理所得的SQL中的语句个数。
步骤224:若目标字段的关联部分中的多层嵌套选择逻辑满足无效子查询合并条件,则将该关联部分中的多层嵌套选择逻辑中的至少两层选择逻辑进行合并处理。
其中,无效子查询合并条件是指预先设定的、存在无效子查询的多层嵌套选择逻辑所满足的条件,比如由表4中第三行所描述的条件。
另外,本申请不限定上文步骤224的实施方式,比如,其具体可以为:若目标字段的关联部分中的多层嵌套选择逻辑满足无效子查询合并条件,则将该多层嵌套选择逻辑中的至少两层选择逻辑合并成一层选择逻辑,如将该无效子查询合并条件对应的无效子查询从该多层嵌套选择逻辑中删除等。其中,该无效子查询是指在满足无效子查询合并条件的多层嵌套选择逻辑中存在的、用于表示冗余语义的逻辑,如由表4中第三行所描述的被删除的语句所描述的逻辑。
基于上文步骤223至步骤224的相关内容可知,在一些应用场景下,可以针对上文目标字段的关联部分进行嵌套选择合并处理,以剔除该关联部分中出现的冗余逻辑,从而有利于提高字段逻辑提取效果。
基于上文步骤21至步骤22的相关内容可知,在一种可能的实施方式下,在获取到待处理SQL对应的图形表示之后,先从该待处理SQL对应的图形表示中提取该目标字段的关联部分,以使该关联部分能够表示出该待处理SQL对应的图形表示中存在的、与该目标字段相关的内容;再对该关联部分进行至少一种简化处理,得到该目标字段对应的图形表示,以使该图形表示能够尽可能简洁地表示出在执行该待处理SQL时所涉及的该目标字段的加工逻辑,如此有利于提高字段逻辑提取效果。
基于上文S2的相关内容可知,在获取到待处理SQL对应的图形表示之后,从该图形表示中裁剪出目标字段对应的图形表示,以使该图形表示能够以可视化的方式描述出在执行该待处理SQL时所涉及的该目标字段的加工逻辑。
S3:对目标字段对应的图形表示进行逆解析处理,得到该目标字段对应的SQL。
其中,逆解析处理是指上文S1中的“解析处理”的逆过程,以使该逆解析处理可以用于将一个图形表示还原成SQL。
另外,本申请不限定上文S3的实施方式,比如,其具体可以包括:先将目标字段对应的图形表示转换为该目标字段对应的抽象语法树;再将该目标字段对应的抽象语法树转换为目标字段对应的SQL,以使该目标字段对应的SQL能够表示出待处理SQL中存在的、用于描述该目标字段的加工逻辑的查询语句。
基于上文S1至S3的相关内容可知,对于本申请实施例提供的SQL处理方法来说,在获取到待处理SQL,如用户输入的SQL之后,先对该待处理SQL进行解析处理,得到该待处理SQL对应的图形表示,以使该图形表示用于描述该待处理SQL的执行过程,如该图像表示能够以可视化方式描述出该待处理SQL的执行过程等;然后,当该执行过程包括至少一个候选字段的加工逻辑,而且该至少一个候选字段包括目标字段,如用户指定的需要进行加工逻辑确定处理的字段时,从该待处理SQL对应的图形表示中裁剪出该目标字段对应的图形表示,以使该目标字段对应的图形表示用于描述该目标字段的加工逻辑;最后,对该目标字段对应的图形表示进行逆解析处理,得到该目标字段对应的SQL,以使该目标字段对应的SQL能够表示出该目标字段的加工逻辑,以便后续能够通过执行该目标字段对应的SQL完成针对该目标字段的加工处理,如此能够实现从SQL中提取出某个字段的加工逻辑,从而能够有效地克服因手动提取某个字段的加工逻辑所导致的缺陷,如耗时长、准确性低等缺陷,从而有利于提高字段逻辑的提取效果,如提取准确性和提取效率等。
另外,本申请不限定本申请实施例提供的SQL处理方法的执行主体,例如,本申请实施例提供的SQL处理方法可以应用于终端设备。又如,本申请实施例提供的SQL处理方法也可以借助终端设备与服务器之间的数据交互过程进行实现。其中,该终端设备可以为智能手机、计算机、个人数字助理(Personal Digital Assitant,PDA)、平板电脑等。服务器可以为独立服务器、集群服务器或云服务器。
此外,为了更好地提高用户体验,本申请还提供了SQL处理方法的一种可能的实施方式,在该实施方式下,该SQL处理方法可以还包括下文步骤31。
步骤31:展示目标字段对应的SQL以及该目标字段对应的图形表示。
本申请中,在获取到目标字段对应的SQL以及该目标字段对应的图形表示之后,可以将两者展示给用户,以使用户可以从多种角度,如SQL和可视化角度等了解到在执行待处理SQL时所涉及的该目标字段的加工逻辑,如此有利于提高用户体验。
还有,在一些应用场景下,SQL中出现的物理表可能是通过执行其他SQL所生成的,故为了更好地提高字段逻辑提取效果,本申请还提供了SQL处理方法的一种可能的实施方式,在该实施方式下,该SQL处理方法可以包括下文步骤41-步骤44。
步骤41:在获取到待处理SQL之后,对该待处理SQL进行解析处理,得到该待处理SQL对应的图形表示;该图形表示用于描述该待处理SQL的执行过程;该执行过程包括至少一个候选字段的加工逻辑;该至少一个候选字段包括目标字段。
需要说明的是,步骤41的相关内容请参见上文S1。
步骤42:从待处理SQL对应的图形表示中裁剪出目标字段对应的图形表示;该目标字段对应的图形表示用于描述该目标字段的加工逻辑。
需要说明的是,步骤42的相关内容请参见上文S2。
步骤43:对目标字段对应的图形表示进行逆解析处理,得到该目标字段对应的SQL。
需要说明的是,步骤43的相关内容请参见上文S3。
步骤44:依据目标字段对应的SQL、以及该目标字段对应的SQL中物理表的产出SQL,更新待处理SQL,并返回继续执行上文步骤41中“对所述待处理SQL进行解析处理”这一步骤及其后续步骤,直至达到预设停止条件。
其中,物理表的产出SQL用于描述该物理表是如何生成的。可见,该物理表是通过执行该产出SQL所得到的。比如,对于图3所示的各个数据库来说,数据中间层(DataWarehouse Middle,DWM)中各个物理表均是通过针对数据明细层(Data WarehouseDetail,DWD)中一些物理表进行处理所得到的;DWD中各个物理表均是通过针对原始数据层(Operational Data Store,ODS)中一些物理表进行处理所得到的。需要说明的是,应用层(Application,APP)中涉及的SQL中的物理表通常来自于DWM。
另外,本申请不限定上文产出SQL的实施方式,比如,其可以是with、insert、cachetable等语句。
此外,本申请不限定上文步骤44中更新的实施方式,比如,为了更好地提高SQL处理效果,该步骤44具体可以包括下文步骤441-步骤442。
步骤441:将目标字段对应的SQL中物理表的产出SQL进行变形处理,得到该物理表对应的子查询语句;该子查询语句所描述的处理逻辑与该产出SQL所描述的处理逻辑保持一致。
其中,物理表对应的子查询语句用于借助select语句表示由该物理表的产出SQL所描述的逻辑,以实现将该产出SQL转换成子查询语句。
另外,本申请不限定上文步骤441中“变形处理”的实施方式,比如,其可以借助预先设定的变形规则进行实施。
步骤442:利用物理表对应的子查询语句替换目标字段对应的SQL中的物理表,得到更新后的待处理SQL。
本申请中,对于目标字段对应的SQL中物理表来说,在获取到该物理表对应的子查询语句之后,可以直接使用该物理表对应的子查询语句替换目标字段对应的SQL中相应的物理表,得到更新后的待处理SQL,以使该更新后的待处理SQL中不存在该物理表,但是存在该物理表对应的子查询语句,如此能够实现向上探查物理表,从而有利于更好地满足用户需求。其中,因该物理表对应的子查询语句是借助select语句表示由该物理表的产出SQL所描述的逻辑,以使该物理表对应的子查询语句与该目标字段对应的SQL更适配,如此能够有效地避免因多样的产出SQL与该目标字段对应的SQL不适配所导致的问题,从而有利于提高字段逻辑的提取效果。
基于上文步骤441至步骤442的相关内容可知,在获取到目标字段对应的SQL之后,可以将该目标字段对应的SQL中所涉及的一些物理表替换成能够描述这些物理表的加工逻辑的查询语句,以实现向上探查物理表,从而有利于更好地满足用户需求。
预设停止条件是指在停止迭代过程时所需依据的条件;而且本申请不限定该预设停止条件,比如,该预设停止条件可以依据用户所提供的向上探查层数约束信息进行确定。其中,该向上探查层数约束用于表示向上探查几层;而且本申请不限定该向上探查层数约束,比如,其可以包括“向上探查至DWD”这一字符串。
基于上文步骤41至步骤44的相关内容可知,本申请在SQL的裁剪基础上进一步支持向上探查一些物理表,以获取到能够描述这些物理表的加工逻辑的查询语句,如此能够更好地满足用户需求。
基于本申请实施例提供的SQL处理方法,本申请实施例还提供了一种SQL处理装置,下面结合图4进行解释和说明。其中,图4为本申请实施例提供的一种SQL处理装置的结构示意图。需要说明的是,本申请实施例提供的SQL处理装置的技术详情,请参照上文SQL处理方法的相关内容。
如图4所示,本申请实施例提供的SQL处理装置400,包括:
解析单元401,用于在获取到待处理SQL之后,对所述待处理SQL进行解析处理,得到所述待处理SQL对应的图形表示;所述图形表示用于描述所述待处理SQL的执行过程;所述执行过程包括至少一个候选字段的加工逻辑;所述至少一个候选字段包括目标字段;
裁剪单元402,用于从所述待处理SQL对应的图形表示中裁剪出所述目标字段对应的图形表示;所述目标字段对应的图形表示用于描述所述目标字段的加工逻辑;
逆解析单元403,用于对所述目标字段对应的图形表示进行逆解析处理,得到所述目标字段对应的SQL。
在一种可能的实施方式下,所述解析单元401,具体用于:将所述待处理SQL转换为所述待处理SQL对应的抽象语法树;将所述待处理SQL对应的抽象语法树转换为所述待处理SQL对应的图形表示;
所述逆解析单元403,具体用于:将所述目标字段对应的图形表示转换为所述目标字段对应的抽象语法树;将所述目标字段对应的抽象语法树转换为所述目标字段对应的SQL。
在一种可能的实施方式下,所述裁剪单元402,具体用于:从所述待处理SQL对应的图形表示中提取所述目标字段的关联部分;对所述关联部分进行至少一种简化处理,得到所述目标字段对应的图形表示;所述至少一种简化处理包括无效连接裁剪处理、无效字段裁剪处理、以及嵌套选择合并处理中的一个或者多个;所述无效连接裁剪处理用于简化所述关联部分中的多表连接逻辑;所述无效字段裁剪处理用于从所述关联部分的去除对所述目标字段不产生影响的字段;所述嵌套选择合并处理用于简化所述关联部分中的多层嵌套选择逻辑。
在一种可能的实施方式下,所述无效连接裁剪处理,包括:若所述关联部分包括左连接逻辑,而且所述左连接逻辑中的右表加工逻辑对所述目标字段不产生影响,则从所述关联部分中删除所述右表加工逻辑;若所述关联部分包括右连接逻辑,而且所述右连接逻辑中的左表加工逻辑对所述目标字段不产生影响,则从所述关联部分中删除所述左表加工逻辑。
在一种可能的实施方式下,所述嵌套选择合并处理,包括:若所述关联部分中的多层嵌套选择逻辑满足谓词合并条件,则将所述多层嵌套选择逻辑中的至少两个条件进行合并处理;若所述关联部分中的多层嵌套选择逻辑满足无效子查询合并条件,则将所述多层嵌套选择逻辑中的至少两层选择逻辑进行合并处理。
在一种可能的实施方式下,所述SQL处理装置400还包括:
展示单元,用于展示所述目标字段对应的SQL以及所述目标字段对应的图形表示。
在一种可能的实施方式下,所述SQL处理装置400还包括:
更新单元,用于依据所述目标字段对应的SQL、以及所述目标字段对应的SQL中物理表的产出SQL,更新所述待处理SQL,并继续执行所述对所述待处理SQL进行解析处理的步骤,直至达到预设停止条件;所述物理表是通过执行所述产出SQL所得到的。
在一种可能的实施方式下,所述更新单元,具体用于:将所述物理表的产出SQL进行变形处理,得到所述物理表对应的子查询语句;所述子查询语句所描述的处理逻辑与所述产出SQL所描述的处理逻辑保持一致;利用所述物理表对应的子查询语句替换所述目标字段对应的SQL中的物理表,得到更新后的待处理SQL。
基于上述SQL处理装置400的相关内容可知,对于本申请实施例提供的SQL处理装置400来说,在获取到待处理SQL,如用户输入的SQL之后,先对该待处理SQL进行解析处理,得到该待处理SQL对应的图形表示,以使该图形表示用于描述该待处理SQL的执行过程,如该图像表示能够以可视化方式描述出该待处理SQL的执行过程等;然后,当该执行过程包括至少一个候选字段的加工逻辑,而且该至少一个候选字段包括目标字段,如用户指定的需要进行加工逻辑确定处理的字段时,从该待处理SQL对应的图形表示中裁剪出该目标字段对应的图形表示,以使该目标字段对应的图形表示用于描述该目标字段的加工逻辑;最后,对该目标字段对应的图形表示进行逆解析处理,得到该目标字段对应的SQL,以使该目标字段对应的SQL能够表示出该目标字段的加工逻辑,以便后续能够通过执行该目标字段对应的SQL完成针对该目标字段的加工处理,如此能够实现从SQL中提取出某个字段的加工逻辑,从而能够有效地克服因手动提取某个字段的加工逻辑所导致的缺陷,如耗时长、准确性低等缺陷,从而有利于提高字段逻辑的提取效果,如提取准确性和提取效率等。
另外,本申请实施例还提供了一种电子设备,所述设备包括处理器以及存储器:所述存储器,用于存储指令或计算机程序;所述处理器,用于执行所述存储器中的所述指令或计算机程序,以使得所述电子设备执行本申请实施例提供的SQL处理方法的任一实施方式。
参见图5,其示出了适于用来实现本公开实施例的电子设备500的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图5示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图5所示,电子设备500可以包括处理装置(例如中央处理器、图形处理器等)501,其可以根据存储在只读存储器(ROM)502中的程序或者从存储装置508加载到随机访问存储器(RAM)503中的程序而执行各种适当的动作和处理。在RAM503中,还存储有电子设备500操作所需的各种程序和数据。处理装置501、ROM 502以及RAM 503通过总线504彼此相连。输入/输出(I/O)接口505也连接至总线504。
通常,以下装置可以连接至I/O接口505:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置506;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置507;包括例如磁带、硬盘等的存储装置508;以及通信装置509。通信装置509可以允许电子设备500与其他设备进行无线或有线通信以交换数据。虽然图5示出了具有各种装置的电子设备500,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置509从网络上被下载和安装,或者从存储装置508被安装,或者从ROM502被安装。在该计算机程序被处理装置501执行时,执行本公开实施例的方法中限定的上述功能。
本公开实施例提供的电子设备与上述实施例提供的方法属于同一发明构思,未在本实施例中详尽描述的技术细节可参见上述实施例,并且本实施例与上述实施例具有相同的有益效果。
本申请实施例还提供了一种计算机可读介质,所述计算机可读介质中存储有指令或计算机程序,当所述指令或计算机程序在设备上运行时,使得所述设备执行本申请实施例提供的SQL处理方法的任一实施方式。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(Hyper Text TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备可以执行上述方法。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,单元/模块的名称在某种情况下并不构成对该单元本身的限定。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (12)
1.一种SQL处理方法,其特征在于,所述方法包括:
在获取到待处理SQL之后,对所述待处理SQL进行解析处理,得到所述待处理SQL对应的图形表示;所述图形表示用于描述所述待处理SQL的执行过程;所述执行过程包括至少一个候选字段的加工逻辑;所述至少一个候选字段包括目标字段;
从所述待处理SQL对应的图形表示中裁剪出所述目标字段对应的图形表示;所述目标字段对应的图形表示用于描述所述目标字段的加工逻辑;
对所述目标字段对应的图形表示进行逆解析处理,得到所述目标字段对应的SQL。
2.根据权利要求1所述的方法,其特征在于,所述待处理SQL对应的图形表示的确定过程,包括:
将所述待处理SQL转换为所述待处理SQL对应的抽象语法树;
将所述待处理SQL对应的抽象语法树转换为所述待处理SQL对应的图形表示;
所述目标字段对应的SQL的确定过程,包括:
将所述目标字段对应的图形表示转换为所述目标字段对应的抽象语法树;
将所述目标字段对应的抽象语法树转换为所述目标字段对应的SQL。
3.根据权利要求1所述的方法,其特征在于,所述从所述待处理SQL对应的图形表示中裁剪出所述目标字段对应的图形表示,包括:
从所述待处理SQL对应的图形表示中提取所述目标字段的关联部分;
对所述关联部分进行至少一种简化处理,得到所述目标字段对应的图形表示;所述至少一种简化处理包括无效连接裁剪处理、无效字段裁剪处理、以及嵌套选择合并处理中的一个或者多个;所述无效连接裁剪处理用于简化所述关联部分中的多表连接逻辑;所述无效字段裁剪处理用于从所述关联部分的去除对所述目标字段不产生影响的字段;所述嵌套选择合并处理用于简化所述关联部分中的多层嵌套选择逻辑。
4.根据权利要求3所述的方法,其特征在于,所述无效连接裁剪处理,包括:
若所述关联部分包括左连接逻辑,而且所述左连接逻辑中的右表加工逻辑对所述目标字段不产生影响,则从所述关联部分中删除所述右表加工逻辑;
若所述关联部分包括右连接逻辑,而且所述右连接逻辑中的左表加工逻辑对所述目标字段不产生影响,则从所述关联部分中删除所述左表加工逻辑。
5.根据权利要求3所述的方法,其特征在于,所述嵌套选择合并处理,包括:
若所述关联部分中的多层嵌套选择逻辑满足谓词合并条件,则将所述多层嵌套选择逻辑中的至少两个条件进行合并处理;
若所述关联部分中的多层嵌套选择逻辑满足无效子查询合并条件,则将所述多层嵌套选择逻辑中的至少两层选择逻辑进行合并处理。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
展示所述目标字段对应的SQL以及所述目标字段对应的图形表示。
7.根据权利要求1所述的方法,其特征在于,所述得到所述目标字段对应的SQL之后,所述方法还包括:
依据所述目标字段对应的SQL、以及所述目标字段对应的SQL中物理表的产出SQL,更新所述待处理SQL,并继续执行所述对所述待处理SQL进行解析处理的步骤,直至达到预设停止条件;所述物理表是通过执行所述产出SQL所得到的。
8.根据权利要求7所述的方法,其特征在于,所述依据所述目标字段对应的SQL、以及所述目标字段对应的SQL中物理表的产出SQL,更新所述待处理SQL,包括:
将所述物理表的产出SQL进行变形处理,得到所述物理表对应的子查询语句;所述子查询语句所描述的处理逻辑与所述产出SQL所描述的处理逻辑保持一致;
利用所述物理表对应的子查询语句替换所述目标字段对应的SQL中的物理表,得到更新后的待处理SQL。
9.一种SQL处理装置,其特征在于,包括:
解析单元,用于在获取到待处理SQL之后,对所述待处理SQL进行解析处理,得到所述待处理SQL对应的图形表示;所述图形表示用于描述所述待处理SQL的执行过程;所述执行过程包括至少一个候选字段的加工逻辑;所述至少一个候选字段包括目标字段;
裁剪单元,用于从所述待处理SQL对应的图形表示中裁剪出所述目标字段对应的图形表示;所述目标字段对应的图形表示用于描述所述目标字段的加工逻辑;
逆解析单元,用于对所述目标字段对应的图形表示进行逆解析处理,得到所述目标字段对应的SQL。
10.一种电子设备,其特征在于,所述设备包括:处理器和存储器;
所述存储器,用于存储指令或计算机程序;
所述处理器,用于执行所述存储器中的所述指令或计算机程序,以使得所述电子设备执行权利要求1-8任一项所述的方法。
11.一种计算机可读介质,其特征在于,所述计算机可读介质中存储有指令或计算机程序,当所述指令或计算机程序在设备上运行时,使得所述设备执行权利要求1-8任一项所述的方法。
12.一种计算机程序产品,其特征在于,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行权利要求1-8任一项所述的方法的程序代码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410263617.6A CN118132585A (zh) | 2024-03-07 | 2024-03-07 | 一种sql处理方法、装置、设备、介质、产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410263617.6A CN118132585A (zh) | 2024-03-07 | 2024-03-07 | 一种sql处理方法、装置、设备、介质、产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118132585A true CN118132585A (zh) | 2024-06-04 |
Family
ID=91232177
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410263617.6A Pending CN118132585A (zh) | 2024-03-07 | 2024-03-07 | 一种sql处理方法、装置、设备、介质、产品 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118132585A (zh) |
-
2024
- 2024-03-07 CN CN202410263617.6A patent/CN118132585A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109522341B (zh) | 实现基于sql的流式数据处理引擎的方法、装置、设备 | |
CN112163076A (zh) | 知识问题库构建方法、问答处理方法、装置、设备和介质 | |
CN113419789A (zh) | 数据模型脚本的生成方法和装置 | |
CN115221191A (zh) | 一种基于数据湖的虚拟列构建方法以及数据查询方法 | |
JP2024507902A (ja) | 情報検索方法、装置、電子機器および記憶媒体 | |
CN116361522A (zh) | 一种数据的展示方法和装置 | |
CN115358397A (zh) | 一种基于数据采样的并行图规则挖掘方法及装置 | |
CN114357187A (zh) | 法规制度的搜索方法、装置、存储介质及计算机设备 | |
CN111737571B (zh) | 搜索方法、装置和电子设备 | |
CN117093604A (zh) | 检索信息生成方法、装置、电子设备和计算机可读介质 | |
US20230085684A1 (en) | Method of recommending data, electronic device, and medium | |
CN116150194A (zh) | 数据获取方法、装置、电子设备和计算机可读介质 | |
CN108073643B (zh) | 任务处理方法和装置 | |
CN113609309B (zh) | 知识图谱构建方法、装置、存储介质及电子设备 | |
KR20200103133A (ko) | 하둡 기반의 빅데이터 시스템에서 etl 절차를 수행하는 방법 및 장치 | |
CN113987118A (zh) | 语料的获取方法、装置、设备及存储介质 | |
CN109857838B (zh) | 用于生成信息的方法和装置 | |
CN118132585A (zh) | 一种sql处理方法、装置、设备、介质、产品 | |
CN112148751B (zh) | 用于查询数据的方法和装置 | |
CN113760240A (zh) | 一种生成数据模型的方法和装置 | |
CN118069122B (zh) | 结构化查询语句复用方法、装置、电子设备和介质 | |
CN116911714B (zh) | 物品运输方法、装置、电子设备和计算机可读介质 | |
CN116737762B (zh) | 结构化查询语句生成方法、装置和计算机可读介质 | |
US20240296394A1 (en) | Data analysis method, apparatus, device and medium | |
US20240104297A1 (en) | Analysis of spreadsheet table in response to user input |
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 |