一种运算方法、装置、电子设备和可读存储介质与流程

文档序号:25213592发布日期:2021-05-28 14:10阅读:64来源:国知局
一种运算方法、装置、电子设备和可读存储介质与流程

本发明涉及数据处理技术领域,具体涉及一种运算方法、装置、电子设备和可读存储介质。



背景技术:

在金融行业每交易日日终需要进行的入账、对账、统计报表数据进行批量处理后进行分析运算,但是目前的金融行业的业务批处理过程存在着处理数据量大、耗时长、自动化执行及周期性执行等特点。尤其是当系统需要对外部来源数据进行加载然后进行聚集运算处理时,这种批处理带来的问题就会更严重,因为目前的处理方式均是将外部来源数据加载到现有数据库中,等待数据加载完成后再对全部数据执行聚集运算,这样就导致需要等待所有数据都加载完成后才能对所有数据进行聚集运算,如果数据量较大的话,其加载和运行的时间都会比较长,业务批处理和分析运算的效率就很低。



技术实现要素:

本申请的目的旨在至少能解决上述的技术缺陷之一。本申请所采用的技术方案如下:

第一方面,本申请实施例公开了一种运算方法,所述方法包括:

获取源数据;

将所述源数据依次加载在n个数据表中;其中n为大于1的正整数;

在所述源数据加载过程中,对满足预设条件的第m个数据表执行目标聚集运算;其中m为小于等于n的正整数。

可选地,所述满足预设条件的第m个数据表包括:

在所述第m个数据表中加载的数据量满足预设阈值;或,当m等于n时,所述源数据加载完毕。

可选地,在获取源数据的同时,所述方法还包括:

获取所述源数据的存储量;

根据所述源数据的存储量,在数据库中创建n个数据表。

可选地,在在所述第m个数据表中加载的数据量满足预设阈值或源数据加载完毕时,所述方法还包括:

将所述第m个数据表标记为加载完成的数据表。

可选地,所述目标聚集运算包括以下至少一种:

求和、计数、求最大值、求最小值、求平均值。

可选地,在对满足预设条件的第m个数据表执行目标聚集运算之后,所述方法还包括:

将第m个数据表执行目标聚集运算的结果存储于中间表中。

进一步地,所述方法还包括:

在将对第n个数据表执行目标聚集运算的结果存储于所述中间表后,对所述中间表执行统一的目标聚集运算。

第二方面,本申请实施例提供了一种运算装置,所述装置包括:接口模块、创建模块、加载模块、存储模块和运算模块,其中,

所述接口模块,用于获取源数据;

所述创建模块,用于在数据库中创建n个数据表;

所述加载模块,用于将所述源数据依次加载在n个数据表中;其中n为大于1的正整数;

所述存储模块,用于对所述第m个数据库进行判断的预设条件;

所述运算模块,用于在所述源数据加载过程中,对满足预设条件的第m个数据表执行目标聚集运算;其中m为小于等于n的正整数。

第三方面,本申请实施例提供了一种电子设备,包括处理器和存储器;

所述存储器,用于存储操作指令;

所述处理器,用于通过调用所述操作指令,执行上述任一实施例中所述的方法。

第四方面,本申请实施例提供了一种计算机可读存储介质,所述存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一实施例所述的方法。

本申请实施例提供运算方案通过对源数据进行分片(数据表)加载,并在分片加载过程中对已经加载好的分片数据表执行运算,即采用加载与运算同步的方案,通过最后的汇总运算保证数据运算逻辑的一致性。其有益效果至少包括提高了对数据量较大的源数据的运算效率。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍。

图1为本申请实施例提供的一种运算方法的流程示意图;

图2为本申请实施例提供的一种运算装置的示意图;

图3为本申请实施例提供的一种电子设备的结构示意图。

具体实施方式

下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本发明的限制。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式,其中的“第一”“第二”等只是为了介绍清楚方案而进行的对象区分定义,并不对对象本身进行限制,当然“第一”和“第二”限定的对象可能是同一个终端、设备和用户等,也可能是同一种终端、设备和用户。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的全部或任一单元和全部组合。

此外应理解,本申请实施例中“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b的情况,其中a、b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一(项)个”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a、b或c中的至少一项(个),可以表示:a,b,c,a和b,a和c,b和c,或a、b和c,其中a、b、c可以是单个,也可以是多个。

为了更清楚地介绍本申请的技术方案,以下介绍一些下述实施例可能涉及到的概念、术语或装置,以帮助理解本申请公开的运算方案:

数据的批处理是指系统定期自动地对大批量数据进行业务处理及分析的计算过程。

数据的聚集运算主要是指sql语言中的分组聚集函数。该分组聚集函数主要包含sum(求和),count(计数),max(最大值),min(最小值),avg(平均值),这些函数配合分组依据使用可以计算每个分组的相应的值。

为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。

下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。

下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。

图1示出了本申请实施例提供的一种运算的流程示意图,如图1所示,该方法主要可以包括:

s101、获取源数据;

s102、将所述源数据依次加载在n个数据表中;其中n为大于1的正整数;

在本申请可选实施例中,在获取源数据的同时,所述方法还包括:

获取所述源数据的存储量,即源数据文件的大小,根据所述源数据的存储量,在数据库中创建n个(分片)数据表。例如源数据1000万条,设置一个数据表分片存储200万条数据,那么就需要创建5个数据表。在本申请中所述在所述支持sql查询的数据库中创建数据表以完成源数据的加载。

s103、在所述源数据加载过程中,对满足预设条件的第m个数据表执行目标聚集运算;其中m为小于等于n的正整数。

可选地,所述满足预设条件的第m个数据表包括:在所述第m个数据表中加载的数据量满足预设阈值将所述第m个数据表标记为加载完成的数据表。或者当m等于n时,只要将所述源数据加载完毕后即可,即可以将第n张表标记加载完成的数据表。

在本申请实施例中,在加载过程中,当某一个数据表,例如第m个加载的数据达到预设的数据量阈值时(例如上述例子中提到的200万条数据),停止加载当前的第m个分片数据表并将其标志为已经加载完成,随后重新创建第m+1个数据表用来放置正在加载的数据并继续开始加载过程。上述源数据加载步骤会重复进行直到源数据全部加载完成。可选地,所述目标聚集运算包括以下至少一种:sum(求和),count(计数),max(最大值),min(最小值),avg(平均值),这些函数配合groupby使用可以计算每个数据表相应的值。进一步地,将对第m个数据表聚集运算的结果放置到聚集运算中间表中。根据目前现有技术中原本聚集运算的要求,如sum(),count(),avg(),max(),min(),对第m个数据表使用与原本聚集运算使用相同的运算符,如原来整体运算时需要对第m个数据库中加载的数据使用sum()运算,那么就对本申请中的第m个数据表的数据也使用sum()运算。如此当有新的数据分片表数据加载完成后,会在数据加载的同时对刚刚完成加载的数据分片表继续进行本次聚集运算。

在具体实施例中,在对满足预设条件的第m个数据表执行目标聚集运算之后,所述方法还包括:

将第m个数据表执行目标聚集运算的结果存储于中间表中,也即在每一个数据表加载完成后进行运算然后将每一张数据表的运算结果存储于一张独立的中间表中,如此该中间表中就会存储有n个运算结果。进一步地,在最后在对该中间表再执行一次统一的目标聚集运算。在可选实施例中,如果每一张加载完成的数据表进行聚集运算时按照确定的维度进行的则数据加载顺序是按照这个维度的顺序来加载并放置在同一个数据表中,例如按人进行汇总则该数据加载的顺序是按人来排序的,也就是同一个人的数据只会被放到同一个数据表中,那么针对中间表的第二次聚集运算可以不需要,存储在中间表的第一次运算的结果就是正确的。

以验证针对n个分片数据表运算是否正确。具体实现过程为:根据原本聚集运算的要求,在后续的数据处理中,需要对现有的聚集运算结果表再做一次汇总运算,以完成原有的逻辑。如果原本的聚集运算是sum(),avg(),max(),min()则再做一次相同的汇总运算;如果原本的聚集运算是count,则后续的运算使用的是sum(),因为第一次的count相当如是原来大表数据的每个分片都进行了一次count,最终为了得到最后的groupby之后的count,需要对每个分片的count结果进行sum。

本申请实施例通过将数据分片加载,并在整体数据加载过程中将数据加载和数据处理并行处理,并通过最后的汇总运算保证数据运算逻辑的一致性,提高了整体数据运算整体的运行效率。

基于图1所示的运算方法,另一方面本申请实施例提供了一种运算装置,所述装置如图2所示,所述装置可以包括:201接口模块、202创建模块、203加载模块、204存储模块和205运算模块,其中,

所述201接口模块,用于获取源数据;

所述202创建模块,用于在数据库中创建n个数据表;

所述203加载模块,用于将所述源数据依次加载在n个数据表中;其中n为大于1的正整数;

所述204存储模块,用于对所述第m个数据库进行判断的预设条件;

所述205运算模块,用于在所述源数据加载过程中,对满足预设条件的第m个数据表执行目标聚集运算;其中m为小于等于n的正整数。

可以理解的是,本实施例中的运算装置的上述各组成设备具有实现图1中所示的实施例中的方法相应步骤的功能。该功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。该硬件或软件包括一个或多个与上述功能相对应的模块或系统。上述模块和系统可以是软件和/或硬件,上述各模块和系统可以单独实现,也可以多个模块和系统集成实现。对于上述各模块和系统的功能描述具体可以参见图1中所示实施例中的方法的对应描述,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。

可以理解的是,本发明实施例示意的结构并不构成对运算装置的具体结构的具体限定。在本申请另一些实施例中,运算装置可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实现。

本申请实施例提供了一种电子设备,包括处理器和存储器;

存储器,用于存储操作指令;

处理器,用于通过调用操作指令,执行本申请任一实施方式中所提供的运算方法。

作为一个示例,图3示出了本申请实施例所适用的一种电子设备的结构示意图,如图3所示,该电子设备300包括:处理器301和存储器303。其中,处理器301和存储器303相连,如通过总线302相连。可选的,电子设备300还可以包括收发器304。需要说明的是,实际应用中收发器304不限于一个。可以理解的是,本发明实施例示意的结构并不构成对电子设备300的具体结构的具体限定。在本申请另一些实施例中,电子设备300可以包括比图示更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者不同的部件布置。图示的部件可以以硬件,软件或软件和硬件的组合实。可选地,电子设备还可以包括显示屏305,用于显示图像,或需要时接收用户的操作指令。

其中,处理器301应用于本申请实施例中,用于实现上述方法实施例所示的方法。收发器304可以包括接收机和发射机,收发器304应用于本申请实施例中,用于执行时实现本申请实施例的电子设备与其他设备通信的功能。

处理器301可以是cpu(centralprocessingunit,中央处理器),通用处理器,dsp(digitalsignalprocessor,数据信号处理器),asic(applicationspecificintegratedcircuit,专用集成电路),fpga(fieldprogrammablegatearray,现场可编程门阵列)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本申请公开内容所描述的各种示例性的逻辑方框,模块和电路。处理器301也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,dsp和微处理器的组合等。

处理器301也可以包括一个或多个处理单元,例如:处理器301可以包括应用处理器(applicationprocessor,ap),调制解调处理器,图形处理器(graphicsprocessingunit,gpu),图像信号处理器(imagesignalprocessor,isp),控制器,存储器,视频编解码器,数字信号处理器(digitalsignalprocessor,dsp),基带处理器,和/或神经网络处理器(neural-networkprocessingunit,npu)等。其中,不同的处理单元可以是独立的器件,也可以集成在一个或多个处理器中。其中,控制器可以是电子设备300的神经中枢和指挥中心。控制器可以根据指令操作码和时序信号,产生操作控制信号,完成取指令和执行指令的控制。处理器301中还可以设置存储器,用于存储指令和数据。在一些实施例中,处理器301中的存储器为高速缓冲存储器。该存储器可以保存处理器301刚用过或循环使用的指令或数据。如果处理器301需要再次使用该指令或数据,可从所述存储器中直接调用。避免了重复存取,减少了处理器301的等待时间,因而提高了系统的效率。

处理器301可以运行本申请实施例提供的运算方法,以便于降低用户的操作复杂度、提高终端设备的智能化程度,提升用户的体验。处理器301可以包括不同的器件,比如集成cpu和gpu时,cpu和gpu可以配合执行本申请实施例提供的运算方法,比如运算方法中部分算法由cpu执行,另一部分算法由gpu执行,以得到较快的处理效率。

总线302可包括一通路,在上述组件之间传送信息。总线302可以是pci(peripheralcomponentinterconnect,外设部件互连标准)总线或eisa(extendedindustrystandardarchitecture,扩展工业标准结构)总线等。总线302可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

存储器303可以是rom(readonlymemory,只读存储器)或可存储静态信息和指令的其他类型的静态存储设备,ram(randomaccessmemory,随机存取存储器)或者可存储信息和指令的其他类型的动态存储设备,也可以是eeprom(electricallyerasableprogrammablereadonlymemory,电可擦可编程只读存储器)、cd-rom(compactdiscreadonlymemory,只读光盘),也可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件,闪存器件,通用闪存存储器(universalflashstorage,ufs),或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。

可选的,存储器303用于存储执行本申请方案的应用程序代码,并由处理器301来控制执行。处理器301用于执行存储器303中存储的应用程序代码,以实现本申请任一实施方式中所提供的运算方法。

存储器303可以用于存储计算机可执行程序代码,所述可执行程序代码包括指令。处理器301通过运行存储在存储器303的指令,从而执行电子设备300的各种功能应用以及数据处理。存储器303可以包括存储程序区和存储数据区。其中,存储程序区可存储操作系统,应用程序的代码等。存储数据区可存储电子设备300使用过程中所创建的数据(比如相机应用采集的图像、视频等)等。

存储器303还可以存储本申请实施例提供的运算方法对应的一个或多个计算机程序。该一个或多个计算机程序被存储在上述存储器303中并被配置为被该一个或多个处理器301执行,该一个或多个计算机程序包括指令,上述指令可以用于执行上述相应实施例中的各个步骤。

当然,本申请实施例提供的运算方法的代码还可以存储在外部存储器中。这种情况下,处理器301可以通过外部存储器接口运行存储在外部存储器中的运算方法的代码,处理器301可以控制运行运算流程。

显示屏305包括显示面板。显示面板可以采用液晶显示屏(liquidcrystaldisplay,lcd),有机发光二极管(organiclight-emittingdiode,oled),有源矩阵有机发光二极体或主动矩阵有机发光二极体(active-matrixorganiclightemittingdiode的,amoled),柔性发光二极管(flexlight-emittingdiode,fled),miniled,microled,micro-oled,量子点发光二极管(quantumdotlightemittingdiodes,qled)等。在一些实施例中,电子设备300可以包括1个或n个显示屏305,n为大于1的正整数。显示屏305可用于显示由用户输入的信息或提供给用户的信息以及各种图形用户界面(graphicaluserinterface,gui)。例如,显示屏305可以显示照片、视频、网页、或者文件等。

本申请实施例提供的电子设备,适用于上述方法任一实施例,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。

本申请实施例提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现上述方法实施例所示的运算方法。

本申请实施例提供的计算机可读存储介质,适用于上述方法任一实施例,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。

本申请实施例还提供了一种计算机程序产品,当该计算机程序产品在计算机上运行时,使得计算机执行上述相关步骤,以实现上述实施例中的方法。本申请实施例提供的计算机程序产品,适用于上述方法任一实施例,因此,其所能达到的有益效果可参考上文所提供的对应的方法中的有益效果,此处不再赘述。

本申请实施例提供运算方案通过对源数据进行分片(数据表)加载,并在分片加载过程中对已经加载好的分片数据表执行运算,即采用加载与运算同步的方案,通过最后的汇总运算保证数据运算逻辑的一致性。其有益效果至少包括提高了对数据量较大的源数据的运算效率。

在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其他的方式实现。例如,以上所描述的装置实施例仅是示意性的,例如,模块或单元的划分,仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以丢弃,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其他的形式。

作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是一个物理单元或多个物理单元,即可以位于一个地方,或者也可以分布到多个不同地方。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(readonlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

以上内容,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,还可以做出若干改进和润饰,这些变化、替换、改进和润饰也应视为都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1