一种代码智能生成并涵盖数据字段及其值任意变化的方法
文献发布时间:2023-06-19 13:46:35
技术领域
本发明涉及计算机技术领域,具体而言,涉及一种代码智能生成并涵盖数据字段及其值任意变化的方法。
背景技术
SAS语言是大数据分析和建模最常用和最流行的开发工具之一。因为其商业属性和一些行业需求,尤其是医疗卫生制药行业,受到大数据科学家和算法模型工程师喜爱和追捧。SAS语言的代码引擎的开发和运营维护过程中,尤其是遇到非常复杂多变的数据或者客户的复杂多变的需求,以及数据的列(字段)和列(字段)的值处总是处在不断变化的时候,通常SAS语言开发工程师和运维师需要反复对代码进行修改更新,不然代码运行就容易出现错误(bugs)现象,就要花大量时间进行debug。而且,在代码引擎的开发过程中,有时候需要写很多很多代码,譬如几万行甚至几十万行代码,debug起来,或者更新起来会非常耗时又非常费力,还特别容易出错,需要反复调试才能开发成功。依据现有的SAS技术,大都通过设置很多个宏参数来替代,但是当宏参数非常多并且又变化多端的时候,频繁修改更新非常多的宏参数也会变成一项繁琐的工作任务。
如果能有一种SAS代码开发的智能方法,能智能地涵盖复杂多变的数据字段以及字段值,把这些复杂多变的需求用既智能又简单的方法轻松愉快的开发出来,那就能极大缩短程序员开发代码的时间,极大降低运维工程师的工作量,而且再也不需要经常性的更新和debug了,运行出错机率也极大降低。
数据安全在各行各业都是一个重要的话题。我国已经通过了国家立法,来保护数据安全。在医疗领域、金融银行领域等,都不同程度的涉及到企业客户的私密信息,譬如身份证信息、银行账号、微信号、手机号码和家庭地址等的加密,以及其他任何用户想加密不想公开的数据信息,因为这些信息一旦泄露,将会给客户对象造成诸多不便或者损失。
如何开发一款代码软件,能对任意结构化数据中任意多的敏感列(字段)同时进行加密,防止这些列下面的任意敏感信息(列的任意取值)泄露,成为我们的追求目标。为了实现这个目标,我们面临的挑战是,三个任意:1)任意结构化数据;2)数据中的任意多敏感列(字段),也就是说,列(字段)名字和列(字段)数量都可以任意变化;以及3)列(字段)可以任意取值。然后可以同时进行加密。
这种方法目前最合适的场景是,当数据具有非常多的字段或者某些字段具有很多任意变化的取值,字段及其取值很有可能处于不断更新和变化之中。
发明内容
本发明的目的在于提供一种代码智能生成并涵盖数据字段及其值任意变化的方法,如果代码的开发具有某种固定的,甚至非常复杂的规律的开发逻辑,如果人工使用键盘敲代码,不但非常费时费力麻烦,而且还特别容易出错。这个时候,如果代码智能生成并能涵盖数据字段和字段值的任意变化的新方法,然后把开发好的代码直接全自动代码引擎之中,可以很好的解决字段和字段值的任意变化带来的困扰,因为代码智能生成并自动涵盖了字段名字、字段数量和字段取值的任意变化,前期开发、后期运营维护的时间和人力也得到极大节省。
本发明的另一目的在于提供一种代码智能生成并涵盖数据字段及其值任意变化的系统,其能够运行一种代码智能生成并涵盖数据字段及其值任意变化的方法。
本发明的实施例是这样实现的:
第一方面,本申请实施例提供一种代码智能生成并涵盖数据字段及其值任意变化的方法,其包括把任意结构化数据通过预设过程和/或预设程序步,提取该数据中的所有字段以及字段基本信息;以contents_testing数据为基础,开发智能代码自动涵盖任意列,名称和任意数量的列;通过proc SQL程序步,把for_macro_generation数据中的代码列读成宏变量macro variable;把得到的各宏变量设置在预设处。
在本发明的一些实施例中,上述把任意结构化数据通过预设过程和/或预设程序步,提取该数据中的所有字段以及字段基本信息包括:把任意结构化数据通过proccontents和/或预设程序步,提取该数据中的所有字段以及字段基本信息。
在本发明的一些实施例中,上述还包括:通过该基本信息数据生成崭新的到处可用的智能代码。
在本发明的一些实施例中,上述以contents_testing数据为基础,开发智能代码自动涵盖任意列,名称和任意数量的列包括:以contents_testing数据为基础,开发智能代码自动涵盖任意字段,名称和任意数量的字段。
在本发明的一些实施例中,上述还包括:运行该智能代码生成代码数据for_macro_generation,通过智能代码生成新列在接下来的SAS代码中使用。
在本发明的一些实施例中,上述通过proc SQL程序步,把for_macro_generation数据中的代码列读成宏变量macro variable包括:把sha256_macro列,定义为宏变量macrovariable,该宏变量的名字为sha256_macro。
在本发明的一些实施例中,上述还包括:把msk_engine列,定义为宏变量macrovariable,该宏变量的名字为msk_engine。
第二方面,本申请实施例提供一种代码智能生成并涵盖数据字段及其值任意变化的系统,其包括提取模块,用于把任意结构化数据通过预设过程和/或预设程序步,提取该数据中的所有字段以及字段基本信息;
开发模块,用于以contents_testing数据为基础,开发智能代码自动涵盖任意列,名称和任意数量的列;
转换模块,用于通过proc SQL程序步,把for_macro_generation数据中的代码列读成宏变量macro variable;
设置模块,用于把得到的各宏变量设置在预设处。
在本发明的一些实施例中,上述包括:用于存储计算机指令的至少一个存储器;与上述存储器通讯的至少一个处理器,其中当上述至少一个处理器执行上述计算机指令时,上述至少一个处理器使上述系统执行:提取模块、开发模块、转换模块及设置模块。
第三方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如一种代码智能生成并涵盖数据字段及其值任意变化的方法中任一项的方法。
相对于现有技术,本发明的实施例至少具有如下优点或有益效果:
1.智能化地涵盖了任意数据中的任意列(字段)名称和数量以及列(字段)取值的任意变化,把复杂繁琐的代码开发工作变得非常简单容易。
2.新生成的代码可以具备隐藏性质。使用该方法生成的新代码不需要把新代码展示出来,这样的代码软件更加安全可靠。
3.使用该方法开发的SAS代码软件具备智能化特点,能自动地涵盖列(字段)以及字段取值的任意变化,让其具有超强的鲁棒性,强大的泛化能力。SAS代码软件再也不会因为数据的任意变化、列(字段)名称、数量和取值的任意变化而持续更新已经开发好的代码,极大减轻了SAS程序开发运维工作量。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明实施例提供的一种代码智能生成并涵盖数据字段及其值任意变化的方法步骤示意图;
图2为本发明实施例提供的一种代码智能生成并涵盖数据字段及其值任意变化的方法详细步骤示意图;
图3为本发明实施例提供的一种代码智能生成并涵盖数据字段及其值任意变化的系统模块示意图;
图4为本发明实施例提供的一种电子设备;
图5为在contents_testing只选取了前四行的示意图;
图6为具体代码示意图;
图7为运行改代码生成的代码数据示意图;
图8为截选第一部分示意图;
图9为截选第二部分示意图;
图10为实现代码示意图。
图标:10-提取模块;20-开发模块;30-转换模块;40-设置模块;101-存储器;102-处理器;103-通信接口。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
需要说明的是,术语“包括”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
下面结合附图,对本申请的一些实施方式作详细说明。在不冲突的情况下,下述的各个实施例及实施例中的各个特征可以相互组合。
实施例1
请参阅图1,图1为本发明实施例提供的一种代码智能生成并涵盖数据字段及其值任意变化的方法步骤示意图,其如下所示:
步骤S100,把任意结构化数据通过预设过程和/或预设程序步,提取该数据中的所有字段以及字段基本信息;
在一些实施方式中,譬如NAME,TYPE,LENGTH,分别表示字段名字,字段类型(字符串和数字),字段值的长度等基本信息。譬如,在代码软件中,运行如图4代码就可以获得输入的加密数据的基本信息。
就可以得到该输入数据的基本信息数据,其名称为contents_testing,其行数为任意数值。里面只保留了NAME,LENGTH,TYPE三列,其中NAME列里包含输入数据的所有列(字段);不同数据,列(字段)不同,列(字段)数量也不同,这属于不同(任意)输入数据的任意变化属性;
请参阅图5,图5是在contents_testing只选取了前四行进行截图,实际上该数据信息数据可以拥有任意行数。
其中,&mask_list是指,需要加密的敏感列的名字,需要用户提供;
IN_PATH.&infilename.是指,需要加密的输入数据的路径IN_PATH,和需要加密的数据名称&infilename;
contents_testing(keep=Name LENGTH TYPE)是指,该代码的输出数据,里面keep保留了NAME,LENGTH,TYPE三列,因为这三列是用来生成新代码所必须的列。
步骤S110,以contents_testing数据为基础,开发智能代码自动涵盖任意列,名称和任意数量的列;
在一些实施方式中,用contents_testing数据为基础,通过代码来写代码,完成后,输出数据名字为:for_macro_generation。具体代码请参阅图6,运行改代码可生成代码数据,图示如图7,数据太长,我们截断成两部分,第一部分请参阅图8,第二部分请参阅图9,数据中,除了NAME,TYPE和LENGTH三列,其余各列都是在接下来的SAS代码中能够到处使用的代码。
步骤S120,通过proc SQL程序步,把for_macro_generation数据中的代码列读成宏变量macro variable;
在一些实施方式中,把for_macro_generation中的各列读成宏变量macrovariable。实现代码请参阅图10,图10中的代码“”into:”后面紧跟的就是宏变量的名称。通过图10的这段代码,就可以:
把retain_engine列,定义为宏变量macro variable,该宏变量的名字为retain_engine;
把sha256_macro列,定义为宏变量macro variable,该宏变量的名字为sha256_macro;
把length_engine列,定义为宏变量macro variable,该宏变量的名字为length_engine;
把format_engine列,定义为宏变量macro variable,该宏变量的名字为format_engine;
把msk_engine列,定义为宏变量macro variable,该宏变量的名字为msk_engine;
把switch_engine列,定义为宏变量macro variable,该宏变量的名字为switch_engine;
把drop_engine列,定义为宏变量macro variable,该宏变量的名字为drop_engine;
把rename_engine列,定义为宏变量macro variable,该宏变量的名字为rename_engine。
步骤S130,把得到的各宏变量设置在预设处。
在一些实施方式中,接下来,就可以把上述各个宏变量用在适合它们的地方。使用的形式为:
&msk_engine.;
&sha256_macro.;
在源代码中,分别有多处地方可以用到上述宏变量。譬如图10中,每一个宏变量后面都隐藏了很多行代码。譬如,&msk_engine.就代表了很多行代码,此处只选取前4行:
AID_msk=sha256(sha256(sha256(sha256(sha256(sha256(sha256(sha256(sha256(sha256(sha256(cats(AIDSalt))))))))))));
IDAY_msk=sha256(sha256(sha256(sha256(sha256(sha256(sha256(sha256(sha256(sha256(sha256(cats(IDAYSalt))))))))))));
IMONTH_msk=sha256(sha256(sha256(sha256(sha256(sha256(sha256(sha256(sha256(sha256(sha256(cats(IMONTHSalt))))))))))));
IYEAR_msk=sha256(sha256(sha256(sha256(sha256(sha256(sha256(sha256(sha256(sha256(sha256(cats(IYEARSalt))))))))))))。
实施例2
请参阅图2,图2为本发明实施例提供的一种代码智能生成并涵盖数据字段及其值任意变化的系统模块示意图,其如下所示:
提取模块10,用于把任意结构化数据通过预设过程和/或预设程序步,提取该数据中的所有字段以及字段基本信息;
开发模块20,用于以contents_testing数据为基础,开发智能代码自动涵盖任意列,名称和任意数量的列;
转换模块30,用于通过proc SQL程序步,把for_macro_generation数据中的代码列读成宏变量macro variable;
设置模块40,用于把得到的各宏变量设置在预设处。
如图3所示,本申请实施例提供一种电子设备,其包括存储器101,用于存储一个或多个程序;处理器102。当一个或多个程序被处理器102执行时,实现如上述第一方面中任一项的方法。
还包括通信接口103,该存储器101、处理器102和通信接口103相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。存储器101可用于存储软件程序及模块,处理器102通过执行存储在存储器101内的软件程序及模块,从而执行各种功能应用以及数据处理。该通信接口103可用于与其他节点设备进行信令或数据的通信。
其中,存储器101可以是但不限于,随机存取存储器101(Random Access Memory,RAM),只读存储器101(Read Only Memory,ROM),可编程只读存储器101(ProgrammableRead-Only Memory,PROM),可擦除只读存储器101(Erasable Programmable Read-OnlyMemory,EPROM),电可擦除只读存储器101(Electric Erasable Programmable Read-OnlyMemory,EEPROM)等。
处理器102可以是一种集成电路芯片,具有信号处理能力。该处理器102可以是通用处理器102,包括中央处理器102(Central Processing Unit,CPU)、网络处理器102(Network Processor,NP)等;还可以是数字信号处理器102(Digital Signal Processing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本申请所提供的实施例中,应该理解到,所揭露的方法及系统和方法,也可以通过其它的方式实现。以上所描述的方法及系统实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的方法及系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
另一方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器102执行时实现如上述第一方面中任一项的方法。所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器101(ROM,Read-Only Memory)、随机存取存储器101(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
综上所述,本申请实施例提供的一种代码智能生成并涵盖数据字段及其值任意变化的方法及系统,智能化地涵盖了任意数据中的任意列(字段)名称和数量以及列(字段)取值的任意变化,把复杂繁琐的代码开发工作变得非常简单容易。新生成的代码可以具备隐藏性质。使用该方法生成的新代码不需要把新代码展示出来,这样的代码软件更加安全可靠。使用该方法开发的SAS代码软件具备智能化特点,能自动地涵盖列(字段)以及字段取值的任意变化,让其具有超强的鲁棒性,强大的泛化能力。SAS代码软件再也不会因为数据的任意变化、列(字段)名称、数量和取值的任意变化而持续更新已经开发好的代码,极大减轻了SAS程序开发运维工作量。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细节,而且在不背离本申请的精神或基本特征的情况下,能够以其它的具体形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
- 一种代码智能生成并涵盖数据字段及其值任意变化的方法
- 生成任意目标架构的并行单指令多数据代码的系统和方法