程序代码生成方法、装置、存储介质及电子设备与流程

文档序号:23014967发布日期:2020-11-20 12:19阅读:168来源:国知局
本发明属于计算机领域,具体涉及一种程序代码生成方法、装置、存储介质及电子设备。
背景技术
::随着互联网技术的发展,大量的数据随之产生,同样,用于处理大批数据的技术也应用而生。其中,apachespark是专为大规模数据处理而设计的快速通用的计算引擎;而sparksql则是spark用来处理结构化数据的模块。发明人经研究发现,在目前sparksql程序的生成中,基本为手动编写。但对于结构化数据来说,其处理模式却是基本固定的。每次人工对固定的处理模式进行整理后,再手动编写sparksql程序,因此,现有技术中存在人工编程效率低的问题,此外,不同的开发人员对sparksql程序的编码的方式不同,因此不便于后期的代码维护。技术实现要素:本发明提供了一种程序代码生成方法、装置、存储介质及电子设备,有效缓解了现有技术中存在的编程效率低,以及不便于后期的代码维护的问题。第一方面,本发明提供一种程序代码生成方法,所述方法包括:获取结构化数据处理逻辑;对所述结构化数据处理逻辑进行划分,以得到原始数据提取部分、数据处理部分以及结果数据存储部分;将所述原始数据提取部分输入至数据提取类模板中,生成数据提取类代码;将所述数据处理部分输入至数据处理类模板中并调用所述数据提取类代码,以得到数据处理类代码;将所述结果数据存储部分输入至结果数据存储类模板中并调用所述数据处理类代码,生成结果数据存储类代码,从而得到包括所述数据提取类代码、数据处理类代码以及数据存储类代码的程序代码。可选的,在上述程序代码生成方法中,在执行获取结构化数据处理逻辑之前,所述方法还包括:预先配置处理逻辑框、参数输入框和结果数据框;获取向所述处理逻辑框输入的目标处理逻辑、向所述参数输入框输入的目标参数信息以及向所述结果数据框输入的目标结果数据;将所述目标参数信息、所述目标处理逻辑以及所述目标结果数据进行结构化处理以得到结构化数据处理逻辑。可选的,在上述程序代码生成方法中,所述目标处理逻辑包括限制运算、逻辑运算或数学运算的处理逻辑,所述目标参数信息包括数据表参数和/或数据库表的字段参数,所述目标结果数据包括对一个或多个数据表和/或数据表的字段参数进行处理得到处理结果。可选的,在上述程序代码生成方法中,对所述结构化数据处理逻辑进行划分,以得到原始数据提取部分、数据处理部分以及结果数据存储部分,包括:将所述结构化数据处理逻辑转换为预设类型的字符串;根据三种类型的预设字符对所述字符串进行划分以得到原始数据提取部分、数据处理部分以及结果数据存储部分。可选的,在上述程序代码生成方法中,将所述结构化数据处理逻辑转换为预设类型的字符串,包括:将所述结构化数据处理逻辑转换为json字符串;根据三种类型的预设字符对所述字符串进行划分以得到原始数据提取部分、数据处理部分以及结果数据存储部分,包括:根据三种类型的预设字符从所述json字符串中提取与每种类型的预设字符串对应的部分,以得到原始数据提取部分、数据处理部分以及结果数据存储部分,其中,所述预设字符的类型为三种,且三种类型的预设字符分别与所述原始数据提取部分、数据处理部分以及结果数据存储部分对应。可选的,在上述程序代码生成方法中,所述三种类型的预设字符包括元素类型字符、算子类型字符以及存储类性字符。第二方面,本发明提供一种程序代码生成装置,所述装置包括:第一获取模块,用于获取结构化数据处理逻辑;划分模块,用于对所述结构化数据处理逻辑进行划分,以得到原始数据提取部分、数据处理部分以及结果数据存储部分;第一生成模块,用于将所述原始数据提取部分输入至数据提取类模板中,生成数据提取类代码;第二生成模块,用于将所述数据处理部分输入至数据处理类模板中并调用所述数据提取类代码,以得到数据处理类代码;第三生成模块,用于将所述结果数据存储部分输入至结果数据存储类模板中并调用所述数据处理类代码,生成结果数据存储类代码,从而得到包括所述数据提取类代码、数据处理类代码以及数据存储类代码的程序代码。可选的,在上述程序代码生成装置中,所述划分模块包括:转换子模块,用于将所述结构化数据处理逻辑转换为预设类型的字符串;划分子模块,用于根据三种类型的预设字符对所述字符串进行划分以得到原始数据提取部分、数据处理部分以及结果数据存储部分。第三方面,本发明提供一种存储介质,该存储介质存储有计算机程序,所述计算机程序被一个或多个处理器执行时实现如上述的程序代码生成方法第四方面,本发明提供一种电子设备,包括存储器和处理器,所述存储器上存储有计算机程序,该计算机程序被所述处理器执行时,执行如上述的程序代码生成方法本发明提供的一种程序代码生成方法、装置、存储介质及电子设备,方法包括:获取结构化数据处理逻辑,对所述结构化数据处理逻辑进行划分,以得到原始数据提取部分、数据处理部分以及结果数据存储部分,将所述原始数据提取部分输入至数据提取类模板中,生成数据提取类代码,将所述数据处理部分输入至数据处理类模板中并调用所述数据提取类代码,以得到数据处理类代码,将所述结果数据存储部分输入至结果数据存储类模板中并调用所述数据处理类代码,生成结果数据存储类代码,从而得到包括所述数据提取类代码、数据处理类代码以及数据存储类代码的程序代码,通过上述方法以实现将结构化的数据处理逻辑自动转换为程序代码,且转换后的程序代码中包括三个类代码,结构固定,便于用户查看使用,且无需人工编程,从而缓解了现有技术中存在的编程效率低,以及不便于后期的代码维护的问题。附图说明附图用来提供对本申请的技术方案或现有技术的进一步理解,并且构成说明书的一部分。其中,表达本申请实施例的附图与本申请的实施例一起用于解释本申请的技术方案,但并不构成对本申请技术方案的限制。图1为本申请实施例提供的一种程序代码生成方法的流程示意图。图2为本申请实施例提供的一种程序代码生成方法的另一流程示意图。具体实施方式以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达到相应技术效果的实现过程能充分理解并据以实施。本申请实施例以及实施例中的各个特征,在不相冲突前提下可以相互结合,所形成的技术方案均在本发明的保护范围之内。另外,附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。第一实施例请参阅图1,本实施例提供了一种程序代码生成方法,该方法可以被一个或多个处理器执行,并在一个或多个处理器执行时,实现以下步骤:步骤s110:获取(按照预设格式对配置逻辑进行编辑得到的)结构化数据处理逻辑。步骤s120:对所述结构化数据处理逻辑(按照与所述预设格式对应的预设划分方式)进行划分,以得到原始数据提取部分、数据处理部分以及结果数据存储部分。步骤s130:将所述原始数据提取部分输入至数据提取类模板中,生成数据提取类代码。步骤s140:将所述数据处理部分输入至数据处理类模板中并调用所述数据提取类代码,以得到数据处理类代码。步骤s150:将所述结果数据存储部分输入至结果数据存储类模板中并调用所述数据处理类代码,生成结果数据存储类代码,从而得到包括所述数据提取类代码、数据处理类代码以及数据存储类代码的程序代码。本申请通过采用上述步骤,以实现将结构化的数据处理逻辑自动转换为程序代码,且转换后的程序代码中包括三个类代码,结构固定,便于用户查看使用,且无需人工编程,从而缓解了现有技术中存在的编程效率低,以及不便于后期的代码维护的问题。具体的,在步骤s110中,获取结构化数据处理逻辑的方式可以是从前端设备获取以字符串格式的结构化数据处理逻辑,也可以是获取预存的以字符串形式/文字形式或者框图形式的结构化数据处理逻辑。应当理解,当所述结构化数据处理逻辑是以框图形式表示时,该结构化数据处理逻辑应当包括一个或多个处理逻辑框、与该处理逻辑框相对应的用于输入参数的参数输入框以及用于生成最后的目标结果数据的结果数据框,所述处理逻辑框中输入的目标处理逻辑可以是限制运算、逻辑运算和/或数学运算对应的符号、文字或字符,所述参数输入框中输入的目标参数信息包括数据表参数和/或数据库表的字段参数,所述结果数据框中的目标结果数据包括对一个或多个数据表和/或数据表的字段参数进行处理得到处理结果。当所述结构化数据处理逻辑是以字符串的方式表示时,该字符串中应当包括算子,例如operator,(即运算方式,具体可以是限制运算方式、逻辑运算方式和/或数学运算方式),该算子的元素,例如element,(即元素,具体是指参与到运算方式中进行运算的具体元素)以及算子的结果,例如write,(即结果,具体可以是指对一个或多个元素采用运算方式计算得到的结果)。当结构化数据处理逻辑是以文字的形式表示时,该文字中应当包括需要进行处理的元素或参数,对上述的元素或参数的处理方式,以及对元素或参数采用上述的处理方式得到的处理结果。在本实施例中,在执行步骤s110之前,所述方法还包括:步骤s210:预先配置处理逻辑框、参数输入框和结果数据框。步骤s220:获取向所述处理逻辑框输入的目标处理逻辑、向所述参数输入框输入的目标参数信息以及向所述结果数据框输入的目标结果数据。具体的,上述步骤s220可以是基于用户的操作选取或输入目标处理逻辑、目标参数信息以及目标结果数据。具体的,在本实施例中,所述目标处理逻辑包括限制运算、逻辑运算或数学运算的处理逻辑,所述目标参数信息包括数据表参数和/或数据库表的字段参数,所述目标结果数据包括对一个或多个数据表和/或数据表的字段参数进行处理得到处理结果。步骤s230:将所述目标参数信息、所述目标处理逻辑以及所述目标结果数据进行结构化处理以得到结构化数据处理逻辑。可以理解,上述的步骤s210-步骤s230可以是在前端设备中执行,如在pc端执行,步骤s110-s150在后端执行,如服务器端执行,上述的步骤s210-步骤s230以及步骤s110-s150均可以在pc端执行或者在服务器端执行,在此不作具体限定,根据实际需求进行设置即可。在步骤s120中,对所述结构化数据处理逻辑进行划分的方式可以是,当所述结构化数据处理逻辑以框图形式表示时,可以根据框图中各框的类型进行划分,当所述结构化数据处理逻辑以文字形式表示时,可以根据文字中的关键字进行划分,当所述结构化数据处理逻辑以字符串的形式表示时,可以根据该字符串中的关键字符进行划分。具体的,在本实施例中,当所述结构化数据处理逻辑以文字或框图表示时,上述步骤s120具体可以包括:步骤s122:将所述结构化数据处理逻辑转换为预设类型的字符串。其中,预设类型的字符串可以是json字符串,也可以是object字符串,在此不做具体限定,根据实际需求进行设置即可。可选的,在本实施例中,上述步骤s122具体可以是将所述结构化数据处理逻辑转换为json字符串。步骤s124:根据三种类型的预设字符对所述字符串进行划分以得到原始数据提取部分、数据处理部分以及结果数据存储部分。需要说明的是,其中,所述预设字符的类型为三种,且三种类型的预设字符分别与所述原始数据提取部分、数据处理部分以及结果数据存储部分对应,即每种类型的字符串对应一个部分。其中,在所述字符串为json字符串时,上述步骤s124具体可以是:根据三种类型的预设字符从所述json字符串中提取与每种类型的预设字符串对应的部分,以得到原始数据提取部分、数据处理部分以及结果数据存储部分,其中,所述预设字符的类型为三种,且三种类型的预设字符分别与所述原始数据提取部分、数据处理部分以及结果数据存储部分对应。在本实施例中,所述三种类型的预设字符包括元素类型字符、算子类型字符以及存储类性字符。即,元素类型的字符串对应划分得到的部分为原始数据提取部分,算子类型字符对应划分得到的部分为数据处理部分,存储类型字符对应划分得到的部分为结果数据存储部分。通过采用上述方法步骤,以在需要生成代码时,仅需用户根据该代码对应的处理逻辑向预先配置处理逻辑框、参数输入框和结果数据框中分别选取或输入目标处理逻辑、目标参数信息以及目标结果数据,从而将所述目标参数信息、所述目标处理逻辑以及所述目标结果数据进行结构化处理以得到结构化数据处理逻辑,并自动对所述结构化数据处理逻辑进行划分,以得到原始数据提取部分、数据处理部分以及结果数据存储部分将所述原始数据提取部分输入至数据提取类模板中,生成数据提取类代码;将所述数据处理部分输入至数据处理类模板中并调用所述数据提取类代码,以得到数据处理类代码;将所述结果数据存储部分输入至结果数据存储类模板中并调用所述数据处理类代码,生成结果数据存储类代码,从而得到包括所述数据提取类代码、数据处理类代码以及数据存储类代码的程序代码,进而有效缓解了现有技术中存在的编程效率低,以及不便于后期的代码维护的问题。实施例二以在前端已经完成预先配置处理逻辑框、参数输入框和结果数据框,用户需要基于在前端预先配置处理逻辑框、参数输入框和结果数据框中分别以拖动或输入的方式向所述处理逻辑框输入的目标处理逻辑、向所述参数输入框输入的目标参数信息以及向所述结果数据框输入的目标结果数据,从而在后端生成相应的程序代码为例进行说明。用户通过向前端配置的所述处理逻辑框输入的目标处理逻辑、向所述参数输入框输入的目标参数信息以及向所述结果数据框输入的目标结果数据,即可实现将所述目标参数信息、所述目标处理逻辑以及所述目标结果数据进行结构化处理以得到结构化数据处理逻辑,并将所述结构化数据处理逻辑转换为json字符串的格式传输给后端。具体的,以提取database1数据库中表table1的指定字段,提取database2数据库中表table2指定字段,把两张表按照”otbp”字段,进行内连接;并将上述连接中的结果与database3数据库中table3按照”otbp”字段进行内连接得到的最终结果按照hive表-overwrite模式-database_write数据库-table_write表存储为例进行说明。则可知,上述的参数输入框中输入的目标参数信息包括database1数据库中表table1的指定字段、database2数据库中表table2指定字段、table1的指定字段与table2指定字段的连接结果以及database3数据库中table3,目标处理逻辑包括内连接,输出的目标结果数据为按照hive表-overwrite模式-database_write数据库-table_write表存储的数据。将上述的各元素转换为字符串形式的结构化数据处理逻辑具体如下:在进行划分时,根据三个类型的预设字符(element、operator以及write),从所述json字符串中提取与每种类型的预设字符串对应的部分得到的前端传入逻辑中的"left_element"和"right_element"对应的内容即为数据提取部分、"operator"对应的内容中除“write”的内容即为数据计算部分、若"operator"中对应的key为"write",则划分为数据存储部分。具体的,left_element为该算子的左元素;right_element为该算子的右元素;{operator_name,operator_elements}分别为算子名称及算子相应传入参数。遍历前端传入的json字符串,将非嵌套元素如{elementa,elementb,elementc}放入produce栈中,在遍历过程中,将算子相关部分放入consumer栈中,综合produce栈中的所有元素传入数据提取类模板,对应生成所有spark原始数据提取类代码,根据consume栈中算子相关信息输入至数据处理类模板,结合原始数据提取类代码,生成数据处理类代码,在consume栈中找出write算子的相关信息及最终生成结果作为参数传入结果存储类模板中,生成结果存储类代码,从而得到包括原始数据提取类代码、数据处理类代码以及存储类代码的程序代码。实施例三本实施例提供了一种程序代码生成装置,包括获取模块、划分模块、第一生成模块、第二生成模块以及第三生成模块。所述第一获取模块,用于获取结构化数据处理逻辑。关于第一获取模块的描述具体可参考前述方法实施例中步骤s110的详细描述,也即,步骤s110可以由第一获取模块执行。所述划分模块,用于对所述结构化数据处理逻辑进行划分,以得到原始数据提取部分、数据处理部分以及结果数据存储部分。关于划分模块的描述具体可参考前述方法实施例中步骤s120的详细描述,也即,步骤s120可以由划分模块执行。在本实施例中,所述划分模块包括转换子模块和划分子模块。所述转换子模块,用于将所述结构化数据处理逻辑转换为预设类型的字符串。所述划分子模块,用于根据三种类型的预设字符对所述字符串进行划分以得到原始数据提取部分、数据处理部分以及结果数据存储部分。所述第一生成模块,用于将所述原始数据提取部分输入至数据提取类模板中,生成数据提取类代码。关于第一生成模块的描述具体可参考前述方法实施例中步骤s130的详细描述,也即,步骤s130可以由第一生成模块执行。所述第二生成模块,用于将所述数据处理部分输入至数据处理类模板中并调用所述数据提取类代码,以得到数据处理类代码。关于第二生成模块的描述具体可参考前述方法实施例中步骤s140的详细描述,也即,步骤s140可以由第二生成模块执行。所述第三生成模块,用于将所述结果数据存储部分输入至结果数据存储类模板中并调用所述数据处理类代码,生成结果数据存储类代码,从而得到包括所述数据提取类代码、数据处理类代码以及数据存储类代码的程序代码。关于第三生成模块的描述具体可参考前述方法实施例中步骤s150的详细描述,也即,步骤s150可以由第三生成模块执行。可以理解,在本实施例中,所述程序代码生成装置还包括:配置模块、第二获取模块以及结构化模块。所述配置模块,用于预先配置处理逻辑框、参数输入框和结果数据框;关于配置模块的描述具体可参考前述方法实施例中步骤s210的详细描述,也即,步骤s210可以由配置模块执行。所述第二获取模块,用于获取向所述处理逻辑框输入的目标处理逻辑、向所述参数输入框输入的目标参数信息以及向所述结果数据框输入的目标结果数据;关于第二获取模块的描述具体可参考前述方法实施例中步骤s220的详细描述,也即,步骤s220可以由第二获取模块执行。所述结构化模块,用于将所述目标参数信息、所述目标处理逻辑以及所述目标结果数据进行结构化处理以得到结构化数据处理逻辑。关于结构化模块的描述具体可参考前述方法实施例中步骤s230的详细描述,也即,步骤s230可以由结构化模块执行。实施例四本实施例提供一种存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘、服务器、app应用商城等等,其上存储有计算机程序,所述计算机程序被一个或多个处理器执行时可以实现实施例一程序代码生成方法。上述方法步骤的具体实施例过程可参见实施例一,本实施例在此不再重复赘述。实施例五本申请实施例提供了一种电子设备,包括存储器和处理器,所述存储器上存储有计算机程序,该计算机程序被所述处理器执行时,实施例一中所述的程序代码生成方法。可以理解,所述电子设备还可以包括,多媒体组件,输入/输出(i/o)接口,以及通信组件。其中,处理器用于执行如实施例一中程序代码生成方法中的全部或部分步骤。存储器用于存储各种类型的数据,这些数据例如可以包括电子设备中的任何应用程序或方法的指令,以及应用程序相关的数据。所述处理器可以是专用集成电路(applicationspecificintegratedcircuit,简称asic)、数字信号处理器(digitalsignalprocessor,简称dsp)、数字信号处理设备(digitalsignalprocessingdevice,简称dspd)、可编程逻辑器件(programmablelogicdevice,简称pld)、现场可编程门阵列(fieldprogrammablegatearray,简称fpga)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述实施例一中的程序代码生成方法。所述存储器可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(staticrandomaccessmemory,简称sram),电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,简称eeprom),可擦除可编程只读存储器(erasableprogrammableread-onlymemory,简称eprom),可编程只读存储器(programmableread-onlymemory,简称prom),只读存储器(read-onlymemory,简称rom),磁存储器,快闪存储器,磁盘或光盘。在本申请所提供的几个实施例中,应该理解到,所揭露的方法,也可以通过其它的方式实现。以上所描述的实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。以上所述仅为本申请的实施例而已,并不用于限制本申请的保护范围,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。还需要说明的是,以上所述,仅为本申请的具体实施方式,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何熟悉本
技术领域
:的技术人员在本申请揭露的技术范围内,在不脱离本发明所公开的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,以及可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1