CN110716953A - Sql语句自动生成方法、装置、设备及可读存储介质 - Google Patents
Sql语句自动生成方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN110716953A CN110716953A CN201910960494.0A CN201910960494A CN110716953A CN 110716953 A CN110716953 A CN 110716953A CN 201910960494 A CN201910960494 A CN 201910960494A CN 110716953 A CN110716953 A CN 110716953A
- Authority
- CN
- China
- Prior art keywords
- sql
- sas
- statement
- syntax
- sql statement
- 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
- G06F16/2445—Data retrieval commands; View definitions
-
- 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/2452—Query translation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Stored Programmes (AREA)
Abstract
本发明公开了一种SQL语句自动生成方法、装置、设备及可读存储介质,所述方法包括:对待转化的SAS评分代码进行词法分析和语法分析得到语法分析树;定位所述语法分析树中的关键语法节点,并将各所述关键语法节点对应的SAS语句转化为子SQL语句;拼接各所述子SQL语句得到所述SAS评分代码对应的完整SQL语句。本发明实现了自动将SAS评分代码转化为SQL语句,无需人工翻译,提高了SAS评分代码生成SQL语句的效率、和准确率,并且能够应对更新频率快、复杂度高的SAS评分代码,减少了输出SAS模型到生产运行中的人力成本和时间成本。
Description
技术领域
本发明涉及人工智能领域,尤其涉及一种SQL语句自动生成方法、装置、设备及可读存储介质。
背景技术
SAS@Enterprise MinerTM,下文称为SAS EM,是SAS公司推出的一款强大的数据挖掘软件。软件集成了多种统计与模型,再加上易于使用的图形化界面,使得广泛应用于各行各业中。其中,金融领域常用SAS EM的决策树与逻辑回归模型进行快速建模,应用于信贷风险等业务场景。虽然SAS EM训练好的模型,会自动生成完整的SAS评分代码,可部署模型于SAS服务器,部分模型可生成C或JAVA,但仍然不能满足所有的部署场景。如目前广泛使用的Hadoop大数据生态圈中,部署在HIVE数据仓库上是其中一种迫切需要的任务。现在的方法是当建模人员使用SAS EM预测完一个模型并生成SAS评分代码后,交给数据库管理员将SAS评分代码翻译为SQL代码,进行生产部署运行。
但是,手工编写SQL代码的方式效率低、错误率高;并且在用户数据变化快、增加迅速的情况下,SAS模型需要进行高频迭代更新,手工编码压力过大;大多数SAS模型通过训练以及交互式建模导入人工规则,节点数目往往达到上千,且参与训练的变量数目一般为千列级别,此时采用人工编写SQL代码成本过高。
发明内容
本发明的主要目的在于提供一种SQL语句自动生成方法、装置、设备及可读存储介质,旨在实现将SAS评分代码自动生成SQL语句,从而减少输出SAS模型到生产运行中的人力成本和时间成本。
为实现上述目的,本发明提供一种SQL语句自动生成方法,所述SQL语句自动生成方法包括以下步骤:
对待转化的SAS评分代码进行词法分析和语法分析得到语法分析树;
定位所述语法分析树中的关键语法节点,并将各所述关键语法节点对应的SAS语句转化为子SQL语句;
拼接各所述子SQL语句得到所述SAS评分代码对应的完整SQL语句。
可选地,当所述SAS评分代码是逻辑回归模型对应的SAS评分代码时,所述定位所述语法分析树中的关键语法节点,并将各所述关键语法节点对应的SAS语句转化为子SQL语句的步骤包括:
遍历所述语法分析树中各个语法节点,将所述SAS评分代码中赋值语句对应的语法节点作为关键语法节点;
将所述关键语法节点所对应赋值语句中待赋值变量的值转化为子SQL语句,并将所述待赋值变量和所述子SQL语句关联存入预设的全局字典中;
所述拼接各所述子SQL语句得到所述SAS评分代码对应的完整SQL语句的步骤包括:
从所述全局字典中提取逻辑回归公式中多项式对应的变量,将所述多项式对应的变量的子SQL语句与预设外围SQL语句拼接,得到所述SAS评分代码对应的完整SQL语句。
可选地,所述将所述待赋值变量和所述子SQL语句关联存入预设的全局字典中的步骤包括:
对于处于条件控制语句的条件分支下的待赋值变量,将所述待赋值变量在各条件分支下转化得到的各子SQL语句进行拼接,将所述待赋值变量和拼接后的子SQL语句关联存入预设的全局字典中;
对于不处于条件控制语句下的待赋值变量,采用所述待赋值变量转化得到的子SQL语句,覆盖当前所述全局字典中所述待赋值变量关联的子SQL语句。
可选地,当所述SAS评分代码是决策树模型对应的SAS评分代码时,所述定位所述语法分析树中的关键语法节点的步骤包括:
遍历所述语法分析树中各个语法节点,将所述SAS评分代码中条件控制语句对应的非叶子语法节点,以及赋值语句对应的叶子语法节点作为关键语法节点;
所述拼接各所述子SQL语句得到所述SAS评分代码对应的完整SQL语句的步骤包括:
将所述关键语法节点中孩子节点的子SQL语句拼接至所述孩子节点的父节点的子SQL语句中,得到所述SAS评分代码对应的完整SQL语句。
可选地,所述SQL语句自动生成方法还包括:
在遍历所述语法分析树的过程中,根据对条件控制语句对应语法节点的访问操作和退出访问操作对应修改预设的全局缩进变量的值;
根据所述全局缩进变量确定各所述子SQL语句的输出格式以格式化输出所述完整SQL语句。
可选地,所述SQL语句自动生成方法还包括:
按照预设匹配规则提取所述SAS评分代码中的有效特征。
可选地,所述对待转化的SAS评分代码进行词法分析和语法分析得到语法分析树的步骤包括:
对待转化的SAS评分代码采用预设的分析器进行词法分析和语法分析生成语法分析树,以及生成用于访问所述语法分析树中各语法节点的访问器;
所述将各所述关键语法节点对应的SAS语句转化为子SQL语句的步骤包括:
调用与所述关键语法节点的SAS语句类型匹配的访问器访问所述关键语法节点,得到各所述关键语法节点的子SQL语句。
为实现上述目的,本发明还提供一种SQL语句自动生成装置,所述SQL语句自动生成装置包括:
分析模块,用于对待转化的SAS评分代码进行词法分析和语法分析得到语法分析树;
转化模块,用于定位所述语法分析树中的关键语法节点,并将各所述关键语法节点对应的SAS语句转化为子SQL语句;
拼接模块,用于拼接各所述子SQL语句得到所述SAS评分代码对应的完整SQL语句。
为实现上述目的,本发明还提供一种SQL语句自动生成设备,所述SQL语句自动生成设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的SQL语句自动生成程序,所述SQL语句自动生成程序被所述处理器执行时实现如上所述的SQL语句自动生成方法的步骤。
此外,为实现上述目的,本发明还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有SQL语句自动生成程序,所述SQL语句自动生成程序被处理器执行时实现如上所述的SQL语句自动生成方法的步骤。
本发明中,通过对待转化的SAS评分代码进行词法分析和语法分析得到语法分析树,对语法分析树中的关键语法节点对应的SAS语句转化为子SQL语句,将各子SQL语句拼接得到SAS评分代码对应的完整SQL语句,实现了自动将SAS评分代码转化为SQL语句,无需人工翻译,提高了SAS评分代码生成SQL语句的效率、和准确率,并且能够应对更新频率快、复杂度高的SAS评分代码,减少了输出SAS模型到生产运行中的人力成本和时间成本。建模人员进行SAS建模后可将SAS评分代码直接通过本实施例中的方法转化为SQL代码,用于数据库部署使用,大大加快了SAS模型迭代更新稳定性与速度,并减少了数据库开发人员的压力,尤其是在大数据高维特征,决策变量复杂多变的情况下,可大幅提升SAS模型部署的效率。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的结构示意图;
图2为本发明SQL语句自动生成方法第一实施例的流程示意图;
图3为本发明实施例涉及的一种将SAS评分代码转化为完整SQL语句的示意图;
图4为本发明实施例涉及的一种决策树模型SAS评分代码的部分语法分析树示意图;
图5为本发明SQL语句自动生成装置较佳实施例的功能示意图模块图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。
需要说明的是,本发明实施例SQL语句自动生成设备可以是智能手机、个人计算机和服务器等设备,在此不做具体限制。
如图1所示,该SQL语句自动生成设备可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的设备结构并不构成对SQL语句自动生成设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及SQL语句自动生成程序。其中,操作系统是管理和控制设备硬件和软件资源的程序,支持SQL语句自动生成程序以及其它软件或程序的运行。
在图1所示的设备中,用户接口1003主要用于与客户端进行数据通信;网络接口1004主要用于与后台服务器建立通信连接;而处理器1001可以用于调用存储器1005中存储的SQL语句自动生成程序,并执行以下操作:
对待转化的SAS评分代码进行词法分析和语法分析得到语法分析树;
定位所述语法分析树中的关键语法节点,并将各所述关键语法节点对应的SAS语句转化为子SQL语句;
拼接各所述子SQL语句得到所述SAS评分代码对应的完整SQL语句。
进一步地,当所述SAS评分代码是逻辑回归模型对应的SAS评分代码时,所述定位所述语法分析树中的关键语法节点,并将各所述关键语法节点对应的SAS语句转化为子SQL语句的步骤包括:
遍历所述语法分析树中各个语法节点,将所述SAS评分代码中赋值语句对应的语法节点作为关键语法节点;
将所述关键语法节点所对应赋值语句中待赋值变量的值转化为子SQL语句,并将所述待赋值变量和所述子SQL语句关联存入预设的全局字典中;
所述拼接各所述子SQL语句得到所述SAS评分代码对应的完整SQL语句的步骤包括:
从所述全局字典中提取逻辑回归公式中多项式对应的变量,将所述多项式对应的变量的子SQL语句与预设外围SQL语句拼接,得到所述SAS评分代码对应的完整SQL语句。
进一步地,所述将所述待赋值变量和所述子SQL语句关联存入预设的全局字典中的步骤包括:
对于处于条件控制语句的条件分支下的待赋值变量,将所述待赋值变量在各条件分支下转化得到的各子SQL语句进行拼接,将所述待赋值变量和拼接后的子SQL语句关联存入预设的全局字典中;
对于不处于条件控制语句下的待赋值变量,采用所述待赋值变量转化得到的子SQL语句,覆盖当前所述全局字典中所述待赋值变量关联的子SQL语句。
进一步地,当所述SAS评分代码是决策树模型对应的SAS评分代码时,所述定位所述语法分析树中的关键语法节点的步骤包括:
遍历所述语法分析树中各个语法节点,将所述SAS评分代码中条件控制语句对应的非叶子语法节点,以及赋值语句对应的叶子语法节点作为关键语法节点;
所述拼接各所述子SQL语句得到所述SAS评分代码对应的完整SQL语句的步骤包括:
将所述关键语法节点中孩子节点的子SQL语句拼接至所述孩子节点的父节点的子SQL语句中,得到所述SAS评分代码对应的完整SQL语句。
进一步地,处理器1001可以用于调用存储器1005中存储的SQL语句自动生成程序,还执行以下操作:
在遍历所述语法分析树的过程中,根据对条件控制语句对应语法节点的访问操作和退出访问操作对应修改预设的全局缩进变量的值;
根据所述全局缩进变量确定各所述子SQL语句的输出格式以格式化输出所述完整SQL语句。
进一步地,处理器1001可以用于调用存储器1005中存储的SQL语句自动生成程序,还执行以下操作:
按照预设匹配规则提取所述SAS评分代码中的有效特征。
进一步地,所述对待转化的SAS评分代码进行词法分析和语法分析得到语法分析树的步骤包括:
对待转化的SAS评分代码采用预设的分析器进行词法分析和语法分析生成语法分析树,以及生成用于访问所述语法分析树中各语法节点的访问器;
所述将各所述关键语法节点对应的SAS语句转化为子SQL语句的步骤包括:
调用与所述关键语法节点的SAS语句类型匹配的访问器访问所述关键语法节点,得到各所述关键语法节点的子SQL语句。
基于上述的结构,提出SQL语句自动生成方法的各个实施例。
参照图2,图2为本发明SQL语句自动生成方法第一实施例的流程示意图。
本发明实施例提供了SQL语句自动生成方法的实施例,需要说明的是,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。本发明SQL语句自动生成方法的各个实施例的执行主体可以是智能手机、个人计算机和服务器等设备,为便于描述,以下各实施例中以系统为执行主体进行阐述。在本实施例中,SQL语句自动生成方法包括:
步骤S10,对待转化的SAS评分代码进行词法分析和语法分析得到语法分析树;
SAS评分代码可以是通过SAS EM的决策树或逻辑回归模型进行建模后导出的SAS评分代码,评分代码可用于对数据进行预测评分,例如信贷风险评分。
系统对待转化的SAS评分代码进行词法分析和语法分析,得到语法分析树。其中,词法分析是指将字符序列转换为单词序列的过程,进行词法分析的程序或者函数叫作词法分析器,也叫扫描器,词法分析器从左至右地对源程序进行扫描,按照语言的词法规则识别各类单词,并产生相应单词的属性字。语法分析是在词法分析的基础上,按照源语言的语法规则将单词序列组合成各类语法短语,如“程序”、“语句”、“表达式”等等,构造语法分析树的过程,完成语法分析任务的程序称为语法分析器,或语法分析程序。系统中可以预先设置针对SAS评分代码的语法规则生成的词法分析器和语法分析器来对待转化的SAS评分进行词法分析和语法分析。通过词法分析和语法分析后,系统可得到SAS评分代码对应的语法分析树。语法分析树是一种用来描述程序代码语法结构的树形表示方式,语法分析树中包括语法节点和词法节点,语法节点对应一个或一段语句,一个语法节点下延伸出多个词法节点,也即一段语句包括多个语句,一个语句由多个词构成,因此语法节点和词法节点按照这种包含关系以及代码的语法规则,构成一颗语法分析树,树的根节点即代表整个代码。
步骤S20,定位所述语法分析树中的关键语法节点,并将各所述关键语法节点对应的SAS语句转化为子SQL语句;
系统在得到语法分析树后,定位语法分析树中的关键语法节点,并将各关键语法节点对应的SAS语句转化为子SQL语句。具体地,语法分析树中可能包括一些与转化SQL语句无关的语法节点,如注释语句、label语句、length语句、宏变量、drop语句,系统对于无关的语法节点不作处理,定位语法分析树中的关键语法节点,对关键语法节点可采用与该语法节点的语句类型对应的转化规则,将该关键语法节点对应的SAS语句转化为子SQL语句。如,对于SAS决策树模型评分代码中的if语句对应的关键语法节点,预先设置了if语句的转化规则是将if语句对应转化为:case when逻辑语句then孩子节点子SQL语句。
步骤S30,拼接各所述子SQL语句得到所述SAS评分代码对应的完整SQL语句。
系统可以是在得到所有关键语法节点所对应SAS语句转化的子SQL语句后,将各个子SQL语句进行拼接,得到SAS评分代码对应的完整SQL语句;也可以是在得到部分语法节点的子SQL语句后即将这些语法节点的子SQL语句进行拼接,直到所有关键语法节点对应的SAS语句转化的子SQL语句都拼接完成,得到完整SQL语句。在本实施例中,对SAS语句转化为子SQL语句,和拼接子SQL语句的顺序不作限制。如对于SAS决策树模型评分代码,可采用深度优先的遍历顺序遍历语法分析树,在遍历过程中,从根节点开始,在关键语法节点还有孩子节点时,先进行孩子节点的语句转化,然后将孩子节点的子SQL语句返回给父节点,拼接在父节点的子SQL语句中,直到最后返回到根节点时,即得到根节点的SQL语句,即完整SQL语句。
如图3所示,为将SAS评分代码转化为完整SQL语句的示意图。
进一步地,步骤S10包括:
步骤A10,对待转化的SAS评分代码采用预设的分析器进行词法分析和语法分析生成语法分析树,以及生成用于访问所述语法分析树中各语法节点的访问器;
进一步地,系统可采用预设的分析器对待转化的SAS评分代码进行词法分析和语法分析,生成语法分析树,以及生成用于访问语法分析树中各个语法节点的访问器。其中,预设的分析器可以是词法分析器和语法分析器,也可以是结合词法分析和语法分析功能的分析器。可预先根据SAS评分代码的语法规则编写语法文件,采用能够自动生成词法分析器和语法分析器的工具根据语法文件生成分析器,如ANTLR。ANTLR允许自定义识别字符流的词法规则和用于解释词序列的语法分析规则,根据用户提供的语法文件自动生成相应的词法和语法分析器,用户可以利用生成的词法分析器和语法分析器将输入的代码进行编译,并转换成其他形式,如语法分析树,并可生成访问语法分析树中各个语法节点的访问器。语法节点的访问器是访问语法节点的函数,调用访问器访问语法节点可实现对语法节点所对应的SAS语句转化为相应的SQL语句,还可以在语法节点有孩子节点时控制访问语法节点的孩子节点。不同SAS语句类型的语法节点对应不同的访问器。
步骤S20中将各所述关键语法节点对应的SAS语句转化为子SQL语句的步骤包括:
步骤A20,调用与所述关键语法节点的SAS语句类型匹配的访问器访问所述关键语法节点,得到各所述关键语法节点的子SQL语句。
系统在得到待转化的SAS评分代码的语法分析树,以及访问语法节点的访问器后,可调用与关键语法节点的SAS语句类型匹配的访问器访问关键语法节点,得到各个关键语法节点的子SQL语句。需要说明的是,系统调用访问器访问语法节点时,访问器可以是在转化得到该语法节点对应的子SQL语句后,将该语法节点的子SQL语句进行预存,直到系统调用访问器访问完所有的关键语法节点,得到所有的子SQL语句后,将预存的子SQL语句拼接成完整SQL语句;也可以是系统调用访问器访问语法节点时,访问器将当前语法节点对应的子SQL语句返回给父节点,父节点的访问器将父节点的子SQL语句与孩子节点的子SQL语句进行拼接,并返回父节点的父节点,层层嵌套,最终根节点的访问器返回的是完整SQL语句。
在本实施例中,通过对待转化的SAS评分代码进行词法分析和语法分析得到语法分析树,对语法分析树中的关键语法节点对应的SAS语句转化为子SQL语句,将各子SQL语句拼接得到SAS评分代码对应的完整SQL语句,实现了自动将SAS评分代码转化为SQL语句,无需人工翻译,提高了SAS评分代码生成SQL语句的效率、和准确率,并且能够应对更新频率快、复杂度高的SAS评分代码,减少了输出SAS模型到生产运行中的人力成本和时间成本。建模人员进行SAS建模后可将SAS评分代码直接通过本实施例中的方法转化为SQL代码,用于数据库部署使用,大大加快了SAS模型迭代更新稳定性与速度,并减少了数据库开发人员的压力,尤其是在大数据高维特征,决策变量复杂多变的情况下,可大幅提升SAS模型部署的效率。
进一步地,基于上述第一实施例,提出本发明SQL语句自动生成方法第二实施例,在本发明SQL语句自动生成方法第二实施例中,当所述SAS评分代码是逻辑回归模型对应的SAS评分代码时,所述步骤S20的步骤包括:
步骤S201,遍历所述语法分析树中各个语法节点,将所述SAS评分代码中赋值语句对应的语法节点作为关键语法节点;
在本实施例中,对于建模人员通过建模工具对逻辑回归模型进行建模后导出的SAS评分代码,系统对SAS评分代码进行词法分析和语法分析生成语法分析树。具体地,系统可采用预设的分析器对SAS评分代码进行词法分析和语法分析,预设的分析器可以是将预先通过分析逻辑回归模型导出的SAS评分代码的语法规则,编写语法文件,并采用能够自动生成词法分析器和语法分析器的工具根据语法文件生成分析器,如ANTLR。编写的语法文件支持逻辑回归模型SAS评分代码的以下语法:条件控制语句、注释语句、DO语句、length语句、format语句、label语句、drop语句、宏变量、delete语句、goto语句、array语句、put函数、赋值语句、逻辑语句、算术运算语句等。
对于逻辑回归模型SAS评分代码转化SQL语句时,主要目的是从中提取出逻辑回归公式对应的SQL语句,即得到了完整SQL语句。其中,逻辑回归公式一般表示如下:
其中,x表示特征变量,θ表示特征权重,g表示sigmod函数。P为类别为0的预测概率值。系统需要提取中逻辑回归公式中的多项式(θTx)对应的子SQL语句。SAS评分代码中是通过多个赋值语句来表示这个多项式的。因此,系统可在得到逻辑回归模型SAS评分代码的语法分析树后,遍历语法分析树中各个语法节点,将赋值语句对应的语法节点作为关键语法节点,忽略注释语句、label语句、length语句、宏变量、drop语句对应的语法节点。
例如对于一段SAS评分代码,系统需要处理的关键语法节点对应的SAS语句如下:
_LP0=0;
_TEMP=Age;
_LP0=_LP0+(4.50407024540038*_TEMP);
_TEMP=Height;
_LP0=_LP0+(-1.48253148971014*_TEMP);
_TEMP=Weight;
_LP0=_LP0+(-0.13279677310371*_TEMP);
_TEMP=45.3099673132158+_LP0;
其中_LP0和_TEMP是SAS评分代码中预先定义的变量,Age、Height和Weight是训练数据集的特征变量,通过多个赋值语句,最后一个赋值语句中变量_TEMP的值即对应多项式。
步骤S202,将所述关键语法节点所对应赋值语句中待赋值变量的值转化为子SQL语句,并将所述待赋值变量和所述子SQL语句关联存入预设的全局字典中;
系统将关键语法节点所对应赋值语句中待赋值变量的值转化为子SQL语句,并将待赋值变量和子SQL语句关联存入预设的全局字典中。具体地,系统预设一个全局字典,全局字典用于存储SAS评分代码中出现过的所有赋值语句中的待赋值变量和由待赋值变量的值所转换的子SQL语句。系统对于待赋值变量的值,即赋值语句等号右边的部分,根据SAS语句与SQL语句的对应关系,将待赋值变量的值对应转化为SQL语句。如当待赋值变量的值为数字或特征变量时,不作转换;当出现PUT函数时,若为BEST格式,则转化为“CAST”语句,否则转换为“SUBSTRING”语句;当包含算术运算时转换为SQL语句对应的加减乘除运算。
如对于一个赋值语句:_LP0=0,系统直接将待赋值变量_LP0与0关联存如全局字典中。
所述步骤S30包括:
步骤S301,从所述全局字典中提取逻辑回归公式中多项式对应的变量,将所述多项式对应的变量的子SQL语句与预设外围SQL语句拼接,得到所述SAS评分代码对应的完整SQL语句。
系统在遍历了语法分析树中的各个语法节点后,从全局字典中提取逻辑回归公式中多项式对应的变量,将多项式对应变量的子SQL语句与预设外围SQL语句拼接,得到SAS评分代码对应的完整SQL语句。其中,预设外围SQL语句是预设的逻辑回归公式中的sigmod函数对应的SQL语句,以及select等必要的SQL外围语句。具体地,如上述例子,系统从全局字典中提取出多项式对应的变量_TEMP,该_TEMP变量关联的子SQL语句是:45.3099673132158+0+(4.50407024540038*`Age`)+(-1.48253148971014*`Height`)+(-0.13279677310371*`Weight`),与外围语句进行拼接,得到完整SQL语句:
Select t.*,
1/(1+exp(-(45.3099673132158+0+(4.50407024540038*`Age`)+(-1.48253148971014*`Height`)+(-0.13279677310371*`Weight`))))as result from aat;
进一步地,步骤S202中的将所述待赋值变量和所述子SQL语句关联存入预设的全局字典中的步骤包括:
步骤S2021,对于处于条件控制语句的条件分支下的待赋值变量,将所述待赋值变量在各条件分支下转化得到的各子SQL语句进行拼接,将所述待赋值变量和拼接后的子SQL语句关联存入预设的全局字典中;
当逻辑回归模型的训练数据集特征变量的类型包括离散型时,逻辑回归的多项式中离散型特征变量的部分将是如下形式:
每一个特征变量与权重的乘积拆分成了多个权重与0、1、-1的编码形式。在包含离散型特征变量的逻辑回归模型的SAS评分代码中,通过条件控制语句来表示多项式中离散型特征变量的部分,如对于一个特征变量“Sex”,SAS评分代码中该特征变量对应的赋值语句如下,其中,_dm6是与特征变量“Sex”对应定义的一个变量。
if_dm6=‘FEMALE’then do;
_2_0=1;
end;
else if_dm6=‘MALE’then do;
_2_0=-1;
end;
else do;
_2_0=.;
end;
系统对于一个条件控制语句的多个条件分支下的同一待赋值变量,将该待赋值变量在各条件分支下转化得到的各个子SQL语句进行拼接,将该待赋值变量和拼接后的子SQL语句关联存入全局字典中。具体地,系统在遍历语法分析树的过程中,对于条件控制语句只有一个if条件分支的,该分支下是对缺失值的判断语句,系统不作处理,而对于有else分支的,对于else分支下的第二层条件控制语句,该条件控制语句下的各个条件分支中的赋值语句是与多项式中离散型特征变量的部分相关的。系统将该条件控制语句的多个条件分支下对同一个待赋值变量进行赋值的多个赋值语句,如上述例子中的“_2_0=1”、“_2_0=-1”和“_2_0=.”,分别对每个赋值语句中该待赋值变量的值进行转化为子SQL语句,再将该待赋值变量在这多个条件分支下对应转化得到的各子SQL语句进行拼接,得到该待赋值变量对应的子SQL语句,将该待赋值变量和对应的子SQL语句存入全局字典中。
对于不同条件分支下待赋值变量的值,系统采用不同的转换规则,如,if条件分支下待赋值变量的值转化为case when upper(特征变量名)=特征值then数值,else if条件分支下待赋值变量的值转化为“when upper(特征变量名)=特征值then数值”表示;else条件分支下待赋值变量的值转化为“else null”;拼接时,将各个子SQL语句拼接在一起后,在最后再拼接“end”字符。
如上述例子中,最终拼接得到待赋值变量_2_0对应的子SQL语句为:case whenupper(Sex)='FEMALE'then 1 when upper(Sex)='MALE'then-1 else null end。
步骤S2022,对于不处于条件控制语句下的待赋值变量,采用所述待赋值变量转化得到的子SQL语句,覆盖当前所述全局字典中所述待赋值变量关联的子SQL语句。
包含连续型特征变量的逻辑回归模型的SAS评分代码中,通过赋值语句来表示多项式中连续型特征变量的部分,并且赋值语句不处于条件控制语句下。因此,系统对于不处于条件控制语句下的赋值语句中的待赋值变量,采用该待赋值变量的值转化得到的子SQL语句,覆盖当前全局字典中已经存储的该待赋值变量关联的子SQL语句,若全局字典中还未存储该待赋值变量和关联的子SQL语句,则是首次存入全局变量。
如对于以下赋值语句:
_LP0=0;
_TEMP=Age;
_LP0=_LP0+(4.50407024540038*_TEMP);
系统在遍历语法分析树的过程中,遍历到第一个赋值语句对应的关键语法节点时,对待赋值变量_LP0,将_LP0和0关联,首次存入全局字典中。遍历到第二个赋值语句对应的关键语法节点时,对待赋值变量_TEMP,将_TEMP和Age关联,首次存入全局字典中。遍历到第三个赋值语句对应的关键语法节点时,先将待赋值变量_LP0的值转化为子SQL语句,即将赋值语句等号右边的_LP0转化为当前_LP0的值0,将_TEMP转化为当前_TEMP的值Age,得到子SQL语句1:0+(4.50407024540038*`Age`),采用字SQL语句1覆盖掉全局字典中当前_LP0关联的子SQL语句2:0,即系统遍历完第三个赋值语句对应的关键语法节点后,全局字典中_LP0关联的子SQL语句从原来的子SQL语句2更新为了子SQL语句1。
进一步地,针对逻辑回归模型中包含离散型特征变量时与不包含离散性特征变量时,SAS评分代码中多项式对应的变量不同,例如包含离散型特征变量时多项式对应的变量是_TEMP,不包含时多项式对应的变量是_LP0,系统可判断是否包含离散型特征变量,根据判断结果确定提取哪一个变量。具体地,系统可在遍历语法分析树过程中统计SAS评分代码中出现的离散型特征变量的数量,若大于零则确定提取_LP0,还可以是统计出现_LPMAX变量时,提取_LP0,其他情况则其他_TEMP。
在本实施例中,通过对待转化的逻辑回归模型SAS评分代码进行词法分析和语法分析得到语法分析树;遍历语法分析树中各个语法节点,将SAS评分代码中赋值语句对应的语法节点作为关键语法节点;将关键语法节点所对应赋值语句中待赋值变量的值转化为子SQL语句,并将待赋值变量和子SQL语句关联存入预设的全局字典中;从所述全局字典中提取逻辑回归公式中多项式对应的变量,将多项式对应的变量的子SQL语句与预设外围SQL语句拼接,得到SAS评分代码对应的完整SQL语句。本实施例实现了自动地将逻辑回归模型导出的SAS评分代码生成完整SQL语句,从而无需人工对SAS评分代码进行翻译,提高了SAS评分代码生成SQL语句的效率、和准确率,并且能够应对更新频率快、复杂度高的SAS评分代码,减少了输出逻辑回归模型到生产运行中的人力成本和时间成本。
进一步地,基于上述第一和第二实施例,提出本发明SQL语句自动生成方法第三实施例,在本发明SQL语句自动生成方法第三实施例中,当所述SAS评分代码是决策树模型对应的SAS评分代码时,所述步骤S20中定位所述语法分析树中的关键语法节点的步骤包括:
步骤S203,遍历所述语法分析树中各个语法节点,将所述SAS评分代码中条件控制语句对应的非叶子语法节点,以及赋值语句对应的叶子语法节点作为关键语法节点;
在本实施例中,对于建模人员通过建模工具对决策树模型进行建模后导出的SAS评分代码,系统对SAS评分代码进行词法分析和语法分析生成语法分析树。具体地,系统可采用预设的分析器对SAS评分代码进行词法分析和语法分析,预设的分析器可以是将预先通过分析决策树模型导出的SAS评分代码的语法规则,编写语法文件,并采用能够自动生成词法分析器和语法分析器的工具根据语法文件生成分析器,如ANTLR。编写的语法文件支持决策树模型模型SAS评分代码的以下语法:注释语句、label语句、length语句、宏变量、drop语句、赋值语句、条件控制语句、逻辑语句、do语句、put函数、kindex函数、missing函数等。
决策树模型SAS评分代码转化SQL语句时,主要目的是从中提取出由条件控制语句表示的决策树规则。系统可在得到决策树模型SAS评分代码的语法分析树后,遍历语法分析树中各个语法节点,将SAS评分代码中条件控制语句所对应的非叶子语法节点作为关键语法节点,以及将赋值语句对应的叶子语法节点作为关键语法节点,忽略注释语句、label语句、length语句、宏变量、drop语句对应的语法节点。需要说明的是,如图4所示,为一种决策树模型SAS评分代码的部分语法分析树示意图,条件控制语句对应的语法节点包括表示一个条件控制语句的语法节点:if/else,以及包括表示条件控制语句的各条件分支的语法节点:if、else if和else。一个条件控制语句的条件分支下可能还包括一个条件控制语句,则该条件分支对应的语法节点的孩子节点是一个表示条件控制语句的语法节点,若条件分支下是一个或多个赋值语句,则该条件分支对应的语法节点的孩子节点是一个或多个表示赋值语句的叶子语法节点,叶子语法节点即不再有孩子语法节点。
系统将关键语法节点对应的SAS语句转化为子SQL语句。具体地,系统可对不同类型的关键语法节点采用不同的转化规则,还可以是调用预设的与该语法节点的语句类型匹配的访问器访问该语法节点,并将该语法节点对应的SAS语句转化为子SQL语句。如对于if/else语法节点,将该语法节点对应的SAS语句转化为“孩子节点子SQL语句end”,其中,孩子节点子SQL语句是if/else语法节点的孩子节点的子SQL语句;对于if语法节点,将该语法节点对应的SAS语句转化为“case when逻辑语句then孩子节点子SQL语句”,其中,逻辑语句是if分支的逻辑语句,孩子节点子SQL语句是if语法节点的孩子节点的子SQL语句;对于elseif语法节点,将该语法节点对应的SAS语句转化为“when逻辑语句then孩子节点子SQL语句”,其中,逻辑语句是else if分支的逻辑语句,孩子节点子SQL语句是else if语法节点的孩子节点的子SQL语句;对于else语法节点,将该语法节点对应的SAS语句转化为“else孩子节点子SQL语句”,其中,逻辑语句是else if分支的逻辑语句,孩子节点子SQL语句是elseif语法节点的孩子节点的子SQL语句;对于赋值语句对应的语法节点,将赋值语句对应转化键值对的形式的子SQL语句,如“_NODE=20;_LEAF=8;”这两个赋值语句转化为:{"_NODE_":20,"_LEAF_":8}。
需要说明的是,系统可采用深度优先的遍历顺序遍历各个语法节点,即在遍历过程中,从根节点开始,在关键语法节点还有孩子节点时,先进行孩子节点的语句转化,系统可根据else条件分支下的DO语句中是否有条件控制语句,来判断else语法节点的孩子节点是叶子语法节点还是非叶子语法节点,若还有条件控制语句说明else语法节点的孩子节点是非叶子语法节点,若没有条件控制语句说明else语法节点的孩子节点是叶子语法节点。
所述步骤S30包括:
步骤S302,将所述关键语法节点中孩子节点的子SQL语句拼接至所述孩子节点的父节点的子SQL语句中,得到所述SAS评分代码对应的完整SQL语句。
系统可以是在遍历得到各个关键语法节点的子SQL语句后,在将各个子SQL语句进行拼接,也可以是在遍历过程中进行拼接,优选地是采用深度优先的遍历顺序,在遍历过程中,在关键语法节点还有孩子节点时,先进行孩子接待的语句转化,然后将孩子节点的子SQL语句拼接在该孩子节点的父节点的子SQL语句中,直到遍历返回到根节点时,得到SAS评分代码对应转化的完整SQL语句。
需要说明的是,系统在遍历过程中,关键语法节点对应的SAS语句中出现的一些函数,转化为对应的SQL语句。如KINDEX函数转换成“INSTR”,MISSING函数转换成“IS NULL”;PUT函数支持BEST与$CHAR格式,其中BEST格式的函数转换成“CAST”语句,$CHAR格式的函数转换成“SUBSTRING”语句。对于SAS评分代码中的逻辑语句,将AND、OR、NOT、等于、大于、大于等于、小于、小于等于、IN和函数判断等语法,对应转换成SQL语句对应的逻辑语句,如SAS评分代码中的逻辑语句“MISSING(MPG_City)AND 34<=MPG_City”,转换成SQL语句“`MPG_City`IS NULL AND 34<=`MPG_City`”。
在本实施例中,通过对待转化的决策树模型SAS评分代码进行词法分析和语法分析得到语法分析树;遍历语法分析树中各个语法节点,将SAS评分代码中条件控制语句对应的非叶子语法节点,以及赋值语句对应的叶子语法节点作为关键语法节点;并将各关键语法节点对应的SAS语句转化为子SQL语句;将关键语法节点中孩子节点的子SQL语句拼接至孩子节点的父节点的子SQL语句中,得到SAS评分代码对应的完整SQL语句。本实施例实现了自动地将逻辑回归模型导出的SAS评分代码生成完整SQL语句,从而无需人工对SAS评分代码进行翻译,提高了SAS评分代码生成SQL语句的效率、和准确率,并且能够应对更新频率快、复杂度高的SAS评分代码,减少了输出逻辑回归模型到生产运行中的人力成本和时间成本。
进一步地,所述SQL语句自动生成方法还包括:
步骤S40,在遍历所述语法分析树的过程中,根据对条件控制语句对应语法节点的访问操作和退出访问操作对应修改预设的全局缩进变量的值;
系统还可以将决策树模型SAS评分代码转化的完整SQL语句输出,如输出显示或保存为文件。系统可预设一个全局缩进变量,用于对SQL语句进行格式化输出。具体地,系统可在遍历语法分析树的过程中,根据条件控制语句对应的语法节点的访问操作和退出操作对应修改全局缩进变量的值,如根据访问操作将全局缩进变量的值加1,根据退出操作将全局缩进变量的值减一。如全局缩进变量的初始值为0,系统在访问到一个if语法节点或else语法节点时,将全局缩进变量加1,在访问到else语法节点的孩子节点if语法节点时,将全局缩进变量再加1,退出孩子节点if语法节点时,将全局缩进变量减一,在退出else语法节点时,将全局缩进变量再减一。
步骤S50,根据所述全局缩进变量确定各所述子SQL语句的输出格式以格式化输出所述完整SQL语句。
系统根据全局缩进变量的值确定各子SQL语句的输出格式,以格式化输出完整SQL语句。如可以是将当前访问的语法节点对应转化的子SQL语句前面插入四个空格*nesting来控制各个子SQL语句有层次的缩进,并可在子SQL语句后面插入空格,其中nesting是预设的全局缩进变量。通过采用全局缩进变量来控制SQL语句格式化输出,使得用户在获取到SAS评分代码转化的SQL语句时,能够清晰地读懂SQL语句,而无需后续再进行人工调整。
进一步地,所述SQL语句自动生成方法还包括:
步骤S60,按照预设匹配规则提取所述SAS评分代码中的有效特征。
由于决策树模型中涉及到的特征变量可能很多,在将决策树模型的SAS评分转化为SQL语句后,为了方便用户快速获取到众多特征变量中的重要性特征变量,即有效特征,系统可按照预设匹配规则提取SAS评分代码中的有效特征,并可根据用户需求将有效特征输出显示,以供用户根据有效特征对决策树模型进行分析。其中,预设匹配规则可根据SAS评分代码中对有效特征的命名规则进行设置,如预设将不为“_ARBFMT”字符开头的变量名提取出来作为有效特征。系统自动提取有效特征在数据集特征数特别多时极为有用,这免去了人工从SAS评分代码中查找有效特征变量的过程。
此外,此外本发明实施例还提出一种SQL语句自动生成装置,参照图5,所述SQL语句自动生成装置包括:
分析模块10,用于对待转化的SAS评分代码进行词法分析和语法分析得到语法分析树;
转化模块20,用于定位所述语法分析树中的关键语法节点,并将各所述关键语法节点对应的SAS语句转化为子SQL语句;
拼接模块30,用于拼接各所述子SQL语句得到所述SAS评分代码对应的完整SQL语句。
进一步地,当所述SAS评分代码是逻辑回归模型对应的SAS评分代码时,所述转化模块20包括:
第一遍历单元,用于遍历所述语法分析树中各个语法节点,将所述SAS评分代码中赋值语句对应的语法节点作为关键语法节点;
转化单元,用于将所述关键语法节点所对应赋值语句中待赋值变量的值转化为子SQL语句,并将所述待赋值变量和所述子SQL语句关联存入预设的全局字典中;
所述拼接模块30包括:
第一拼接单元,用于从所述全局字典中提取逻辑回归公式中多项式对应的变量,将所述多项式对应的变量的子SQL语句与预设外围SQL语句拼接,得到所述SAS评分代码对应的完整SQL语句。
进一步地,所述转化单元包括:
第一存储单元,用于对于处于条件控制语句的条件分支下的待赋值变量,将所述待赋值变量在各条件分支下转化得到的各子SQL语句进行拼接,将所述待赋值变量和拼接后的子SQL语句关联存入预设的全局字典中;
第二存储单元,用于对于不处于条件控制语句下的待赋值变量,采用所述待赋值变量转化得到的子SQL语句,覆盖当前所述全局字典中所述待赋值变量关联的子SQL语句。
进一步地,当所述SAS评分代码是决策树模型对应的SAS评分代码时,所述转化模块20包括:
第二遍历单元,用于遍历所述语法分析树中各个语法节点,将所述SAS评分代码中条件控制语句对应的非叶子语法节点,以及赋值语句对应的叶子语法节点作为关键语法节点;
所述拼接模块30包括:
第二拼接单元,用于将所述关键语法节点中孩子节点的子SQL语句拼接至所述孩子节点的父节点的子SQL语句中,得到所述SAS评分代码对应的完整SQL语句。
进一步地,所述SQL语句自动生成装置还包括:
修改模块,用于在遍历所述语法分析树的过程中,根据对条件控制语句对应语法节点的访问操作和退出访问操作对应修改预设的全局缩进变量的值;
输出模块,用于根据所述全局缩进变量确定各所述子SQL语句的输出格式以格式化输出所述完整SQL语句。
进一步地,所述SQL语句自动生成装置还包括:
提取模块,用于在遍历所述语法分析树的过程中,按照预设匹配规则提取所述SAS评分代码中的有效特征。
进一步地,所述分析模块10包括:
分析单元,用于对待转化的SAS评分代码采用预设的分析器进行词法分析和语法分析生成语法分析树,以及生成用于访问所述语法分析树中各语法节点的访问器;
所述转化模块20包括:
调用单元,用于调用与所述关键语法节点的SAS语句类型匹配的访问器访问所述关键语法节点,得到各所述关键语法节点的子SQL语句。
本发明SQL语句自动生成装置的具体实施方式的拓展内容与上述SQL语句自动生成方法各实施例基本相同,在此不做赘述。
此外,本发明实施例还提出一种计算机可读存储介质,所述存储介质上存储有SQL语句自动生成程序,所述SQL语句自动生成程序被处理器执行时实现如下所述的SQL语句自动生成方法的步骤。
本发明SQL语句自动生成设备和计算机可读存储介质的各实施例,均可参照本发明SQL语句自动生成方法各个实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种SQL语句自动生成方法,其特征在于,所述SQL语句自动生成方法包括以下步骤:
对待转化的SAS评分代码进行词法分析和语法分析得到语法分析树;
定位所述语法分析树中的关键语法节点,并将各所述关键语法节点对应的SAS语句转化为子SQL语句;
拼接各所述子SQL语句得到所述SAS评分代码对应的完整SQL语句。
2.如权利要求1所述的SQL语句自动生成方法,其特征在于,当所述SAS评分代码是逻辑回归模型对应的SAS评分代码时,所述定位所述语法分析树中的关键语法节点,并将各所述关键语法节点对应的SAS语句转化为子SQL语句的步骤包括:
遍历所述语法分析树中各个语法节点,将所述SAS评分代码中赋值语句对应的语法节点作为关键语法节点;
将所述关键语法节点所对应赋值语句中待赋值变量的值转化为子SQL语句,并将所述待赋值变量和所述子SQL语句关联存入预设的全局字典中;
所述拼接各所述子SQL语句得到所述SAS评分代码对应的完整SQL语句的步骤包括:
从所述全局字典中提取逻辑回归公式中多项式对应的变量,将所述多项式对应的变量的子SQL语句与预设外围SQL语句拼接,得到所述SAS评分代码对应的完整SQL语句。
3.如权利要求2所述的SQL语句自动生成方法,其特征在于,所述将所述待赋值变量和所述子SQL语句关联存入预设的全局字典中的步骤包括:
对于处于条件控制语句的条件分支下的待赋值变量,将所述待赋值变量在各条件分支下转化得到的各子SQL语句进行拼接,将所述待赋值变量和拼接后的子SQL语句关联存入预设的全局字典中;
对于不处于条件控制语句下的待赋值变量,采用所述待赋值变量转化得到的子SQL语句,覆盖当前所述全局字典中所述待赋值变量关联的子SQL语句。
4.如权利要求1所述的SQL语句自动生成方法,其特征在于,当所述SAS评分代码是决策树模型对应的SAS评分代码时,所述定位所述语法分析树中的关键语法节点的步骤包括:
遍历所述语法分析树中各个语法节点,将所述SAS评分代码中条件控制语句对应的非叶子语法节点,以及赋值语句对应的叶子语法节点作为关键语法节点;
所述拼接各所述子SQL语句得到所述SAS评分代码对应的完整SQL语句的步骤包括:
将所述关键语法节点中孩子节点的子SQL语句拼接至所述孩子节点的父节点的子SQL语句中,得到所述SAS评分代码对应的完整SQL语句。
5.如权利要求4所述的SQL语句自动生成方法,其特征在于,所述SQL语句自动生成方法还包括:
在遍历所述语法分析树的过程中,根据对条件控制语句对应语法节点的访问操作和退出访问操作对应修改预设的全局缩进变量的值;
根据所述全局缩进变量确定各所述子SQL语句的输出格式以格式化输出所述完整SQL语句。
6.如权利要求1所述的SQL语句自动生成方法,其特征在于,所述SQL语句自动生成方法还包括:
按照预设匹配规则提取所述SAS评分代码中的有效特征。
7.如权利要求1至6任一项所述的SQL语句自动生成方法,其特征在于,所述对待转化的SAS评分代码进行词法分析和语法分析得到语法分析树的步骤包括:
对待转化的SAS评分代码采用预设的分析器进行词法分析和语法分析生成语法分析树,以及生成用于访问所述语法分析树中各语法节点的访问器;
所述将各所述关键语法节点对应的SAS语句转化为子SQL语句的步骤包括:
调用与所述关键语法节点的SAS语句类型匹配的访问器访问所述关键语法节点,得到各所述关键语法节点的子SQL语句。
8.一种SQL语句自动生成装置,其特征在于,所述SQL语句自动生成装置包括:
分析模块,用于对待转化的SAS评分代码进行词法分析和语法分析得到语法分析树;
转化模块,用于定位所述语法分析树中的关键语法节点,并将各所述关键语法节点对应的SAS语句转化为子SQL语句;
拼接模块,用于拼接各所述子SQL语句得到所述SAS评分代码对应的完整SQL语句。
9.一种SQL语句自动生成设备,其特征在于,所述SQL语句自动生成设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的SQL语句自动生成程序,所述SQL语句自动生成程序被所述处理器执行时实现如权利要求1至7中任一项所述的SQL语句自动生成方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有SQL语句自动生成程序,所述SQL语句自动生成程序被处理器执行时实现如权利要求1至7中任一项所述的SQL语句自动生成方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910960494.0A CN110716953B (zh) | 2019-10-10 | 2019-10-10 | Sql语句自动生成方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910960494.0A CN110716953B (zh) | 2019-10-10 | 2019-10-10 | Sql语句自动生成方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110716953A true CN110716953A (zh) | 2020-01-21 |
CN110716953B CN110716953B (zh) | 2023-08-22 |
Family
ID=69211395
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910960494.0A Active CN110716953B (zh) | 2019-10-10 | 2019-10-10 | Sql语句自动生成方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110716953B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112862334A (zh) * | 2021-02-20 | 2021-05-28 | 平安国际智慧城市科技股份有限公司 | 基于语法分析树的指标体系构建方法、装置及计算机设备 |
CN113791768A (zh) * | 2021-09-22 | 2021-12-14 | 海通证券股份有限公司 | 代码生成方法及装置、存储介质、终端 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103246704A (zh) * | 2013-04-08 | 2013-08-14 | 浪潮集团山东通用软件有限公司 | 一种基于通用数据结构描述的实体与关系数据的映射方法 |
CN106844380A (zh) * | 2015-12-04 | 2017-06-13 | 阿里巴巴集团控股有限公司 | 一种数据库操作方法、信息处理方法和相应装置 |
CN107220261A (zh) * | 2016-03-22 | 2017-09-29 | 中国移动通信集团山西有限公司 | 一种基于分布式数据的实时挖掘方法及装置 |
CN110019291A (zh) * | 2017-09-04 | 2019-07-16 | 中国移动通信集团浙江有限公司 | 一种sql解析方法和sql解析器 |
CN110187885A (zh) * | 2019-06-10 | 2019-08-30 | 合肥本源量子计算科技有限责任公司 | 一种量子程序编译的中间代码生成方法及装置 |
-
2019
- 2019-10-10 CN CN201910960494.0A patent/CN110716953B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103246704A (zh) * | 2013-04-08 | 2013-08-14 | 浪潮集团山东通用软件有限公司 | 一种基于通用数据结构描述的实体与关系数据的映射方法 |
CN106844380A (zh) * | 2015-12-04 | 2017-06-13 | 阿里巴巴集团控股有限公司 | 一种数据库操作方法、信息处理方法和相应装置 |
CN107220261A (zh) * | 2016-03-22 | 2017-09-29 | 中国移动通信集团山西有限公司 | 一种基于分布式数据的实时挖掘方法及装置 |
CN110019291A (zh) * | 2017-09-04 | 2019-07-16 | 中国移动通信集团浙江有限公司 | 一种sql解析方法和sql解析器 |
CN110187885A (zh) * | 2019-06-10 | 2019-08-30 | 合肥本源量子计算科技有限责任公司 | 一种量子程序编译的中间代码生成方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112862334A (zh) * | 2021-02-20 | 2021-05-28 | 平安国际智慧城市科技股份有限公司 | 基于语法分析树的指标体系构建方法、装置及计算机设备 |
CN113791768A (zh) * | 2021-09-22 | 2021-12-14 | 海通证券股份有限公司 | 代码生成方法及装置、存储介质、终端 |
Also Published As
Publication number | Publication date |
---|---|
CN110716953B (zh) | 2023-08-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11442702B2 (en) | Code completion | |
CN110502227B (zh) | 代码补全的方法及装置、存储介质、电子设备 | |
US11138005B2 (en) | Methods and systems for automatically generating documentation for software | |
CN114547329A (zh) | 建立预训练语言模型的方法、语义解析方法和装置 | |
CN110555205B (zh) | 否定语义识别方法及装置、电子设备、存储介质 | |
US11768677B2 (en) | Method and system for software application optimization using natural language-based queries | |
US8364696B2 (en) | Efficient incremental parsing of context sensitive programming languages | |
CN110673854A (zh) | Sas语言编译方法、装置、设备及可读存储介质 | |
WO2022089188A1 (zh) | 一种代码处理方法、装置、设备及介质 | |
Cánovas Izquierdo et al. | A domain specific language for extracting models in software modernization | |
EP3891599B1 (en) | Code completion of method parameters with machine learning | |
CN113779062A (zh) | Sql语句生成方法、装置、存储介质及电子设备 | |
CN115016793A (zh) | 基于语法树的代码生成方法和装置、电子设备、存储介质 | |
CN110716953B (zh) | Sql语句自动生成方法、装置、设备及可读存储介质 | |
CN112862334A (zh) | 基于语法分析树的指标体系构建方法、装置及计算机设备 | |
Zhang et al. | Automated extraction of grammar optimization rule configurations for metamodel-grammar co-evolution | |
CN117608656A (zh) | 一种基于ast和llm的混合式前端框架迁移方法 | |
CN113032366A (zh) | 基于Flex和Bison的SQL语法树解析方法 | |
CN116400910A (zh) | 一种基于api替换的代码性能优化方法 | |
CN116643739A (zh) | 决策引擎实现方法、装置、设备及存储介质 | |
CN115982204A (zh) | 查询语句转换方法、装置、电子设备和存储介质 | |
CN114089980A (zh) | 编程处理方法、装置、解释器及非易失性存储介质 | |
KR20230040516A (ko) | 자바스크립트의 중간 언어 기반 의미론 추출 자동화 시스템 및 방법 | |
CN111859929A (zh) | 一种数据可视化方法、装置及其相关设备 | |
CN112306493A (zh) | 热修复补丁生成方法、装置、存储介质及计算机设备 |
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 |