首页> 中国专利> 报表生成方法、报表生成装置以及可读存储介质

报表生成方法、报表生成装置以及可读存储介质

摘要

本发明提出了一种报表生成方法、报表生成装置以及可读存储介质,报表生成方法包括:构建预设数据模板,预设数据模板包括多个子模板和相应的模板类别,多个子模板分别对应不同的数据类别;在接收到多个第一数据的情况下,将多个第一数据分别配置到对应的子模板中,生成目标数据集合;获取预设模板相应的第一表达式,第一表达式与数据类别和模板类别相关联;根据第一表达式对目标数据集合进行处理,得到目标报表。相比相关技术中的查询数据后对数据处理的合并报表方法,能够省去数据查询的操作,从而针对高频更新的数据能够批量的计算,提高数据的计算速度,满足高频多数据量的合并报表的使用需求,提升用户的使用体验。

著录项

  • 公开/公告号CN115577692A

    专利类型发明专利

  • 公开/公告日2023-01-06

    原文格式PDF

  • 申请/专利权人 用友网络科技股份有限公司;

    申请/专利号CN202211191936.8

  • 发明设计人 郭关飞;何冠宇;

    申请日2022-09-28

  • 分类号G06F40/186(2020.01);G06F40/174(2020.01);

  • 代理机构北京友联知识产权代理事务所(普通合伙) 11343;

  • 代理人马静

  • 地址 100094 北京市海淀区北清路68号

  • 入库时间 2023-06-19 18:19:26

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-01-24

    实质审查的生效 IPC(主分类):G06F40/186 专利申请号:2022111919368 申请日:20220928

    实质审查的生效

  • 2023-01-06

    公开

    发明专利申请公布

说明书

技术领域

本发明涉及合并报表技术领域,具体而言,涉及一种报表生成方法、报表生成装置以及可读存储介质。

背景技术

目前,企业往往需要对大量的数据进行统一的管理,针对企业不同类别,定时更新的需要,相关技术往往不能快速的合并出用户需要的报表。

相关技术中,往往需要将全部数据存储至数据库中,通过SQL(Structured QueryLanguage,结构化查询语言)查询需要的数据进行二次计算,而当数据超过一百万行以上,合并报表需要花费几十分钟,甚至几个小时才能完成。

对于多维数据库采用的MDX(Multi-Dimensional Expressions,多维表达式)查询语音,对于高频更新的数据处理并不能及时处理,不能满足企业合并报表的使用需求。

发明内容

本发明旨在至少解决现有技术或相关技术中存在的技术问题之一。

有鉴于此,本发明的第一方面提供了一种报表生成方法。

本发明的第二方面提供了一种报表生成装置。

本发明的第三方面提供了一种报表生成装置。

本发明的第四方面提供了一种可读存储介质。

为了实现上述至少一个目的,本发明的第一方面的技术方案提出了一种报表生成方法,包括:构建预设数据模板,预设数据模板包括多个子模板和相应的模板类别,多个子模板分别对应不同的数据类别;在接收到多个第一数据的情况下,将多个第一数据分别配置到对应的子模板中,生成目标数据集合;获取预设模板相应的第一表达式,第一表达式与数据类别和模板类别相关联;根据第一表达式对目标数据集合进行处理,得到目标报表。

在该技术方案中,构建预设数据模板,预设数据模板包括多个子模板和相应的模板类别,多个子模板分别对应不同的数据类别,能够提前根据数据类别的不同,设置与多个与数据类型对应的子模板,子模板与数据类型存在一一对应的对应关系,在接收到多个第一数据的情况下,将多个第一数据分别配置到对应的子模板中,生成目标数据集合,相比相关技术中的查询数据后对数据处理的合并报表方法,能够省去数据查询的操作,从而在针对大数据量,例如当数据为千万行至十亿行时,能够大幅度的减少查询时间,从而提高整个合并报表过程的处理速度,获取预设模板相应的第一表达式,第一表达式与数据类别和模板类别相关联,能够确定与类别对应的表达式,保证在接收合并报表请求的情况下,数据能够根据类别对应到不同的模板中,并根据模板对应的表达式进行计算,根据第一表达式对目标数据集合进行处理,得到目标报表,能够批量的对数据进行处理,不需要计算中间过程的数据结果,从而针对高频更新的数据能够批量的计算,提高数据的计算速度,提高了合并报表的速度,满足高频多数据量的合并报表的使用需求,提升用户的使用体验。

另外,本发明提供的上述技术方案中的报表生成方法还可以具有如下附加技术特征:

在上述技术方案中,在接收到多个第一数据的情况下,将多个第一数据分别配置到对应的子模板中,生成目标数据集合,包括:在接收到多个第一数据的情况下,确定每个第一数据的维度数据和明细数据;根据每个第一数据对应的维度数据和明细数据,将每个第一数据分别配置到相应的子模板,生成目标数据集合。

在该技术方案中,将维度数据和明细数据配置到相应的子模板中,能够便于将多个第一数据按照维度数据和明细数据分别配置到对应的子模板中,与相关技术相比不需要在数据库中对某项业务对应的数据进行查询,减少合并报表数据的查询时间,从而减少整个合并报表过程所需要的时间,提高合并报表的效率,满足不同数据类型的合并报表的要求,保证合并报表的生成速度,提高用户的使用体验。

在上述任一技术方案中,子模板分别对应设置有传输通道;根据每个第一数据对应的维度数据和明细数据,将每个第一数据分别配置到相应的子模板,生成目标数据集合,包括:根据每个第一数据对应的维度数据,确定每个第一数据相应的传输通道;通过相应的传输通道,将每个第一数据的明细数据配置到相应的子模板,生成目标数据集合。

在该技术方案中,每个第一数据的明细数据通过相应的传输通道配置到相应的子模板中,实现了对明细数据的独立线程处理,当接收到多个第一数据的情况下,多个第一数据中的明细数据能够分别通过独立的线程进行处理,从而实现了对明细数据的多线程处理,提高了数据配置的速度,从而提高了目标数据集合的生成速度,提高合并报表过程的处理速度,满足大数据量的合并报表的使用需求,提高用户的使用体验。

在上述任一技术方案中,获取预设模板相应的第一表达式,包括:获取预设模板中多个子模板之间的关联关系,以及每个子模板对应的第二表达式,关联关系为多个子模板对应的数据类别和模板类别之间的关系;根据关联关系与多个第二表达式,建立多个第三表达式;根据多个第三表达式与多个第二表达式,确定第一表达式。

在该技术方案中,本申请通过预设模板中多个子模板之间的关联关系获取每个子模板对应的第二表达式,以及根据关联关系与多个第二表达式,建立多个第三表达式,确定第一表达式,与相关技术相比,能够降低省去中间表达式结果的计算过程,从而减少合并报表的计算步骤,提高了合并报表的速度,满足多数据量的合并报表的使用需求,提升用户的使用体验。

在上述任一技术方案中,根据第一表达式对目标数据集合进行处理,得到目标报表,包括:通过多个第二表达式,同步对目标数据集合中相应的第一数据进行处理,得到多个第一目标数据;根据多个第三表达式对多个第一目标数据进行处理,得到第二目标数据;根据第二目标数据,生成目标报表。

在该技术方案中,通过多个第二表达式,同步对目标数据集合中相应的第一数据进行处理,能够充分利用服务器的资源,提高数据的处理速度,根据多个第三表达式对多个第一目标数据进行处理,得到第二目标数据,能够实现对大量数据的批量处理,从而提高了第一目标数据的处理速度,进而根据第一目标数据得到的第二目标数据,生成目标报表,能够提高报表的生成速度,满足用户大数据量的使用需求。

在上述任一技术方案中,第二表达式与子模板一一对应,第三表达式与多个子模板对应的第一类别信息相对应,其中,第一类别信息包括多级第二类别信息,每个第二类别信息均对应一个第三表达式。

在该技术方案中,第一类别信息包括多级第二类别信息,而每个第一类别信息均对应一个第三表达式,第二表达式与子模板一一对应,从而根据不同子模板类别关系,确定第三表达式与第二表达式的关系,与相关技术相比,不需要进行搜索判断表达式之间的关系,从而省去了报表合并过程中的查找步骤,进而缩短报表合并的时间,提高报表合并的速度,满足用户的使用需求。

在上述任一技术方案中,预设数据模板中的每个子模板均对应一个存储单元。

在该技术方案中,每个子模板对应一个存储单元,与将全部数据存储在一个单元相比,能够减轻存储单元的存储压力,同时,存储单元与消息队列相对应,能够保证每个处理进程都是独立进行的,不存在相互交叉的处理流程,从而降低数据处理过程中出现错误的概率。

本发明的第二方面提出了一种报表生成装置,包括:构建单元,用于构建预设数据模板,预设数据模板包括多个子模板和相应的模板类别,多个子模板分别对应不同的数据类别;生成单元,用于在接收到多个第一数据的情况下,将多个第一数据分别配置到对应的子模板中,生成目标数据集合;获取单元,用于获取预设模板相应的第一表达式,第一表达式与数据类别和模板类别相关联;处理单元,用于根据第一表达式对目标数据集合进行处理,得到目标报表。

在该技术方案中,构建单元能够提前设置数据模板,并根据数据类别的不同,设置多个子模板,便于后续数据能够根据类别对应加载到相应的子模板中,生成单元能够将多个第一数据分别配置到类别对应的子模板中,生成目标数据集合,避免在报表生成的过程中对数据进行查询操作,提高数据处理效率,获取单元获取模板对应的表达式,能够根据类别的不同,将数据对应到不同的表达式之中,提高数据的处理速度,处理单元对目标集合进行处理后,得到目标报表,满足用户的使用需求。

本发明的第三方面提出了一种报表生成装置,包括:存储器和处理器,存储器存储在处理器上运行的程序或指令,程序或指令被处理器执行时实现第一方面的报表生成方法的步骤。

在该技术方案中,报表生成装置包括存储器和处理器,存储器存储在处理器上运行的程序或指令,程序或指令被处理器执行时实现第一方面的报表生成方法的步骤,从而具有上述任一技术方案的全部有益技术效果,在此不再赘述。

本发明的第四方面提出了一种可读存储介质,其上存储有程序或指令,程序或指令被处理器执行时实现第一方面的报表生成方法的步骤。

在该技术方案中,可读存储介质,其上存储有程序或指令,程序或指令被处理器执行时实现如第一方面的报表生成方法的步骤,从而具有上述任一技术方案的全部有益技术效果,在此不再赘述。

本发明的附加方面和优点将在下面的描述部分中变得明显,或通过本发明的实践了解到。

附图说明

图1示出了根据本发明的一个实施例的报表生成方法的流程示意图之一;

图2示出了根据本发明的一个实施例的报表生成方法的流程示意图之二;

图3示出了根据本发明的一个实施例的报表生成方法的处理示意图之一;

图4示出了根据本发明的一个实施例的报表生成方法的流程示意图之三;

图5示出了根据本发明的一个实施例的报表生成方法的流程示意图之四;

图6示出了根据本发明的一个实施例的报表生成方法的处理示意图之二;

图7示出了根据本发明的一个实施例的报表生成方法的流程示意图之五;

图8示出了根据本发明的一个实施例的报表生成方法的处理示意图之三;

图9示出了根据本发明的一个实施例的报表生成方法的处理示意图之四;

图10示出了根据本发明的一个实施例的报表生成方法的处理示意图之五;

图11示出了根据本发明的一个实施例的报表生成装置的结构示意图之一;

图12示出了根据本发明的一个实施例的报表生成装置的结构示意图之二。

具体实施方式

为了可以更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。需要说明的是,在不冲突的情况下,本申请的实施例及实施例中的特征可以相互组合。

在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明的保护范围并不受下面公开的具体实施例的限制。

下面参照图1至图12描述根据本发明的一些实施例的报表生成方法、报表生成装置以及可读存储介质。

实施例一

如图1所示,本申请一些实施例的报表生成方法,包括:

步骤102,构建预设数据模板,预设数据模板包括多个子模板和相应的模板类别,多个子模板分别对应不同的数据类别;

每个子模板对应一种类型,例如,当用户需要合并A地区和B地区的某一项业务的财务报表时,A地区某项业务对应的财务数据形成一个子模板A,B地区某项业务对应的财务数据形成一个子模板B。可以理解的是,A地区不仅包括一项业务,对应不同的业务,分别存储有不同的子模板,每个子模板中存储有与该业务对应的相关数据。

步骤104,在接收到多个第一数据的情况下,将多个第一数据分别配置到对应的子模板中,生成目标数据集合;

将多个第一数据分配到对应的子模板中,生成目标数据集合,便于后续能够针对业务的不同,调取与业务相关的子模板中的数据,不需要在数据库中对某项业务对应的数据进行查询,减少合并报表数据的查询时间,从而减少整个合并报表过程所需要的时间,提高合并报表的效率,满足不同数据类型的合并报表的要求,保证合并报表的生成速度,提高用户的使用体验。

步骤106,获取预设模板相应的第一表达式,第一表达式与数据类别和模板类别相关联;

第一表达式可以为针对某项业务的子模板中的数据运算式,例如,A地区某项业务对应的财务数据形成一个子模板A,子模板A对应将数据a与数据b相加的运算式。

步骤108,根据第一表达式对目标数据集合进行处理,得到目标报表。

目标数据集合中包括多个分配至对应子模板的数据,在对目标数据集合处理时,能够通过模板对应的第一表达式,批量的对某项业务对应的子模板数据进行处理。而相关技术中的多维表达式计算,需要根据表达式之间的层级关系,一层一层的对表达式进行处理,而本申请不需要计算中间的表达式结果,从而减少合并报表的计算步骤,提高了合并报表的速度,满足对高频多数据量的合并报表的使用需求,提升用户的使用体验。

本申请通过构建预设数据模板,预设数据模板包括多个子模板和相应的模板类别,每个模板针对一个类别,能够提前将数据分类,在接收到多个数据的情况下,将多个数据分别配置到类别对应的模板中,并生成数据集合,相比相关技术中的查询数据后对数据处理的合并报表方法,能够省去数据查询操作。在针对大数据量,例如当数据为千万行至十亿行时,本申请能够大幅度的减少查询时间,从而提高整个合并报表过程的处理速度,获取与模板对应的表达式,并根据表达式对数据集合进行处理,能够批量的对数据进行处理,不需要计算中间过程的数据结果,从而针对高频更新的数据能够批量的计算,省去根据表达式层级依次计算的时间,提高数据的计算速度,提高了合并报表的速度,满足对高频多数据量的合并报表的使用需求,提升用户的使用体验。

如图2所示,在本申请的一个实施例中,在接收到多个第一数据的情况下,将多个第一数据分别配置到对应的子模板中,生成目标数据集合,包括:

步骤202,在接收到多个第一数据的情况下,确定每个第一数据的维度数据和明细数据;

维度数据可以为数据的种类,明细数据可以为某一数据种类下数据的具体数值,例如,维度数据可以为A地区的用电量,而明细数据为A地区用电量具体为200度。

步骤204,根据每个第一数据对应的维度数据和明细数据,将每个第一数据分别配置到相应的子模板,生成目标数据集合。

将维度数据和明细数据配置到相应的子模板中,能够便于将多个第一数据按照维度数据和明细数据分别配置到对应的子模板中,可以理解的是,维度数据和明细数据存在一定的对应的关系,后续合并报表时,能够根据维度信息,将第一数据配置到明细数据对应的子模板,从而便于后续对报表数据的处理。而相关技术需要对数据库中某项业务对应的数据进行查询,本申请相比相关技术能够减少合并报表数据的查询时间,从而减少整个合并报表过程所需要的时间,提高合并报表的效率,满足不同数据类型的合并报表的要求,保证合并报表的生成速度,提高用户的使用体验。

在本申请的一个实施例中,子模板分别对应设置有传输通道。

如图3所示,在数据源发出多个第一数据时,每个第一数据对应设置有线程加载器,每个线程加载器对应设置有传输通道。当接收多个第一数据时,能够根据第一数据对应的线程加载器,查找到对应的传输通道,从而保证每个第一数据均设置有独立的处理线程,与相关技术相比,不需要在接收到多个第一数据的情况下,通过设置标识符的方式对数据进行加锁处理。

相关技术中,未设置与数据对应的线程加载器,也未对线程加载器对应设置有单独的处理通道,从而为了保证数据在多线程环境下传输的正确性,需要将数据添加标识符,使得对添加标识符的数据进行处理,对未添加标识符的数据不进行处理,一方面,当多线程的数据量较大时,未添加标识符的数据较多时,会对服务器带来较大的存储压力,影响服务器的性能,另一方面,针对大量数据量的处理,考虑到服务器的处理性能,不能同时将数据全部添加标识符,从而需要依次加锁,数据处理速度较慢。而本申请不需要对第一数据进行加锁,省去了加锁的操作,同时不会影响服务器的性能,能够增加合并报表的数据处理速度,满足大数据量的合并报表的使用需求,提高用户的使用体验。

如图4所示,在本申请的一个实施例中,根据每个第一数据对应的维度数据和明细数据,将每个第一数据分别配置到相应的子模板,生成目标数据集合,包括:

步骤402,根据每个第一数据对应的维度数据,确定每个第一数据相应的传输通道;

传输通道可以为一个队列,队列可以为并发队列,是同时处理的队列,可以根据用户需求设置并发队列的长度或设置并发队列的接收周期,使得并发队列在指定周期内接收相关数据,本申请并不对并发队列的具体形式作出限制。

步骤404,通过相应的传输通道,将每个第一数据的明细数据配置到相应的子模板,生成目标数据集合。

每个第一数据的明细数据通过相应的传输通道配置到相应的子模板中,实现了对明细数据的独立线程处理,当接收到多个第一数据的情况下,多个第一数据中的明细数据能够分别通过独立的线程进行处理,从而实现了明细数据的多线程处理,提高了数据配置的速度,从而提高了目标数据集合的生成速度,提高合并报表过程的处理速度,满足大数据量的合并报表的使用需求,提高用户的使用体验。

如图5所示,在本申请的一个实施例中,获取预设模板相应的第一表达式,包括:

步骤502,获取预设模板中多个子模板之间的关联关系,以及每个子模板对应的第二表达式,关联关系为多个子模板对应的数据类别和模板类别之间的关系;

不同的子模板之间可能存在层级关系,而该层级关系与子模板对应的数据类别和模板类别的关系有关。例如,A地区包括B城市和C城市,对应地,A地区的用水量A1包括B城市的用水量B1和C城市的用水量C1。用水量A1对应设置有子模板A2,用水量B1对应设置有子模板B2,用水量C1对应设置有子模板C2。子模板A2对子模板B2和子模板C2就存在包含的关系,这与A地区包括B城市和C城市的数据类型之间的关系有关。而A地区不光设置有用水量A1的子模板A2,也设置有风能发电量a1的子模板a2。而A地区与子模板A2相关联与A地区与子模板A2的用水量类型有关。子模板B2的第二表达式可以为某个月份至某个月份之间用水量的求和。

步骤504,根据关联关系与多个第二表达式,建立多个第三表达式;

根据子模板B2的第二表达式可以为某个月份至某个月份之间用水量的求和,子模板C2的第二表达式可以为某个月份至某个月份之间用水量的求和,而子模板A2的第三表达式为对子模板B2第二表达式和子模板C2第二表达式两个表达式之间的求和。

步骤506,根据多个第三表达式与多个第二表达式,确定第一表达式。

当数据量较大时,存在多个第三表达式和多个第二表达式,而第一表达式与多个第三表达式和多个第二表达式存在关联关系,多个表达式之间存在并列的关系。

示例性地,如图6所示,切片可以理解为对数据进行过滤,例如,统计某公司第十天至第二十天的采购费用时,需要对整个月的数据进行过滤,过滤出第十天至第二十天的采购费用。

本申请并不对表达式之间的关系进行限制,可以理解的是,某个表达式可以由与其存在关联的一个表达式或多个表达式计算得到,也可以由与其关联的某个或多个切片计算得到,亦可以由与其关联的表达式和切片计算得到。

本申请并不需要对第一表达式与切片之间的表达式数量进行限制,本申请也不需要计算第一表达式与切片之间表达式的计算结果。可以理解的是,第二表达式和第三表达式是第一表达式与切片之间的中间表达式,在构建中间表达式时,中间表达式不能产生重复依赖。例如,第三表达式1可以由第二表达式1和切片3构成,不能存在第三表达式1由第三表达式1和切片3构成。重复依赖不能计算出结果,且会一直循环,计算异常。

本申请通过预设模板中多个子模板之间的关联关系获取每个子模板对应的第二表达式,以及根据关联关系与多个第二表达式,建立多个第三表达式,确定第一表达式,与相关技术相比,能够降低省去中间表达式结果的计算过程,从而减少合并报表的计算步骤,提高了合并报表的速度,满足多数据量的合并报表的使用需求,提升用户的使用体验。

如图7所示,在本申请的一个实施例中,根据第一表达式对目标数据集合进行处理,得到目标报表,包括:

步骤702,通过多个第二表达式,同步对目标数据集合中相应的第一数据进行处理,得到多个第一目标数据;

多个第二表达式同步对第一数据进行处理,与相关技术中的异步处理相比,能够同时对数据进行处理,提高数据的处理速度,同时,同步处理与异步处理相比,能够充分利用服务器的资源。

步骤704,根据多个第三表达式对多个第一目标数据进行处理,得到第二目标数据;

根据多个第三表达式对第一目标数据进行处理,能够实现对大量数据的批量处理,从而提高了第一目标数据的处理速度,提高合并报表过程的处理速度,满足大数据量的合并报表的使用需求,提高用户的使用体验。

步骤706,根据第二目标数据,生成目标报表。

本申请通过多个第二表达式,同步对目标数据集合中相应的第一数据进行处理,能够充分利用服务器的资源,提高数据的处理速度,根据多个第三表达式对多个第一目标数据进行处理,得到第二目标数据,能够实现对大量数据的批量处理,从而提高了第一目标数据的处理速度,进而根据第一目标数据得到的第二目标数据,生成目标报表,能够提高报表的生成速度,满足用户大数据量的使用需求。

在本申请的一个实施例中,第二表达式与子模板一一对应,第三表达式与多个子模板对应的第一类别信息相对应,其中,第一类别信息包括多级第二类别信息,每个第二类别信息均对应一个第三表达式。

第一类别信息包括多级第二类别信息,而每个第一类别信息均对应一个第三表达式,第二表达式与子模板一一对应,从而根据不同子模板类别关系,确定第三表达式与第二表达式的关系,与相关技术相比,不需要进行搜索判断表达式之间的关系,从而省去了报表合并过程中的查找步骤,进而缩短报表合并的时间,提高报表合并的速度,满足用户的使用需求。

在本申请的一个实施例中,预设数据模板中的每个子模板均对应一个存储单元。

每个子模板对应一个存储单元,与将全部数据存储在一个单元相比,能够减轻存储单元的存储压力,同时,存储单元与消息队列相对应,能够保证每个处理进程都是独立进行的,不存在相互交叉的处理流程,从而降低数据处理过程中出现错误的概率。

如图8所示,在本申请的一个实施例中,服务器包括数据立方体、数据管理模块和多维计算引擎模块。其中,维度数据和明细数据存储在数据立方体中。维度数据在数据立方体中组成了一个有向无环图,有向无环图能够展示维度数据之间的关联关系。

如图9所示,明细数据根据一定的规则,将不同的数据存储至不同的块(block)中。

数据立方体包括块和区(shard),每个区存储在一个JVM(Java Virtual Machine,Java虚拟机)中,每个区中存储有多个块。可以根据用户设置,将数据分成若干个块,例如用户设置每个块中存储10个数,当接收到数据为1000个时,对应生成块的数量为100个。而针对这100个块可以对其设置基数进行编号,例如:

可以将分块基数分均设置为10;

用cards(卡片)数组表示每个分块的基,其计算方法如下:

cards[0]=1;

cards[1]=cards[0]×10;

cards[2]=cards[1]×10;

其中,[0]、[1]、[2]分别代表不同的维度,[0]的维度大于[1]的维度,[1]的维度大于[2]的维度,可以理解的是cards[0]数据中包含100个数的数据,而cards[1]数组中包括10个数的数据,一个cards[0]数组由10个cards[1]数组组成,而cards[2]数组中包括1个数的数据,一个cards[1]数组由10个cards[2]数组组成。

维度[0]、[1]、[2]的值可以用哈希编号表示,具体地,块索引的计算方式为:

blockIndex=d0×cards[0]+d1×cards[1]+d2×cards[2]+...;

其中,哈希编号为di(0≤i<N),具体为i可以0、1和2,di可以为d1,d2和d3,blockIndex表示块的索引号。

如图9所示,不同维度的索引号不同,根据索引号的不同,能够将与维度相关的数据存入块,并存储至不同区中。

如图3和图8所示,线程加载器位于数据管理模块中,块加载器和队列位于多维计算引擎中。数据管理模块包括明细数据的全量加载、明细数据的增量加载和维度管理三部分。其中,维度管理可以通过接口操作服务器中的维度数据,具体包括新增、查找、删除等,可以根据用户的需求一次性全部加载合并报表所需要的数据,也可以根据用户的需求将增加的合并报表所需要的数据,加载处理后的数据可以更新到服务器的内存中。可以理解的是,数据管理模块加载数据后,将加载的数据存入数据立方体的块中。

多维计算引擎模块包括多维表达式解析、明细数据过滤和多维卷积计算三个部分,多维表达式解析功能可以解析自定义的多维表达式,判断多维表达式是否正确,在多维表达式正确的情况下,调用相关的多维计算接口;明细数据过滤功能可以根据多维表达式中隐含的过滤条件,从数据立方体的明细数据中快速筛选出参与计算的明细数据;多维卷积计算功能提供多线程的多维卷积算法,从而利用计算机的多核处理器快速计算合并报表的结果数据。可以理解的是,数据立方体接收到加载后的数据后,将数据发送给多维计算引擎,多维计算引擎可能会对数据进行修改,并对修改后的数据传输至数据立方体的块中。

内存中变化的数据需要持久化到数据库中,为了不影响多维计算引擎模块的效率,通过消息队列对数据进行持久化处理,并将消息队列传输至数据源。

每个块加载器可以对应有多个块,从而减少块加载器的数量,提高服务器资源利用和配置。

如图10所示,在本申请的一个实施例中,数据立方体中存储有多条维度数据和其他数据,其他数据可以为定义数据或相关信息数据,定义数据或相关信息数据对报表的合并并不产生影响。数据立方体与内存并发队列之间需要进行格式的转换。内存并发队列与消息处理器格式不同,也需要进行格式的转换。消息处理器对消息进行处理后,会调整格式将数据回写至数据库以及进行主从同步。

经过消息处理器将数据回写数据库和主从同步,能够实现数据同步的一致性和高效率。一方面,同步数据的顺序与节点上的修改操作(增、删、改)顺序一致;另一方面,数据同步机制并不占用太多计算资源,避免影响计算速度。

具体地,内存队列是一个MPSC(多生产者单消费者)队列,支持多线程并发写入;不同数据立方体使用不同的内存队列,能够避免不同数据立方体之间存在同步的先后顺序。对于修改的数据按照行需顺序进入数据。

消息处理器是一个独立的线程,且只能使用一个线程,从而保证数据的处理速度。用户可以在系统中提前设置QueueItem(队列项目)和DataEvent(数据事件)的数据结构。其中,QueueItem为用于内存队列的数据结构,而DataEvent则是发送到Kafka(卡夫卡)的数据结构,Kafka为一种独立的消息队列服务。本申请通过将QueueItem格式的消息转换为DataEvent,才能同步发送到不同的Kafka的topic(主题)中。不同的Kafka的topic(主题)可以包括数据库回写和主从同步。

实施例二

如图11所示,本申请的一个实施例提出了一种报表生成装置1100,包括:构建单元1102,用于构建预设数据模板,预设数据模板包括多个子模板和相应的模板类别,多个子模板分别对应不同的数据类别;生成单元1104,用于在接收到多个第一数据的情况下,将多个第一数据分别配置到对应的子模板中,生成目标数据集合;获取单元1106,用于获取预设模板相应的第一表达式,第一表达式与数据类别和模板类别相关联;处理单元1108,用于根据第一表达式对目标数据集合进行处理,得到目标报表。

在该实施例中,构建单元1102能够提前设置数据模板,并根据数据类别的不同,设置多个子模板,便于后续数据能够根据类别对应加载到相应的子模板中,生成单元1104能够将多个第一数据分别配置到类别对应的子模板中,生成目标数据集合,避免在报表生成的过程中对数据进行查询操作,提高数据处理效率,获取单元1106获取模板对应的表达式,能够根据类别的不同,将数据对应到不同的表达式之中,提高数据的处理速度,处理单元1108对目标集合进行处理后,得到目标报表,满足用户的使用需求。

实施例三

如图12所示,本发明的一个实施例提出了一种报表生成装置1200,包括:存储器1202和处理器1204,存储器1202存储在处理器1204上运行的程序或指令,程序或指令被处理器1204执行时实现上述任一实施例的报表生成方法的步骤。

在该技术方案中,报表生成装置1200包括存储器1202和处理器1204,存储器1202存储在处理器1204上运行的程序或指令,程序或指令被处理器1204执行时实现上述任一实施例的报表生成方法的步骤,从而具有上述任一实施例的全部有益技术效果,在此不再赘述。

实施例四

在本申请的一个实施例中,一种可读存储介质,其上存储有程序或指令,程序或指令被处理器执行时实现上述任一实施例的报表生成方法的步骤。

在该技术方案中,可读存储介质,其上存储有程序或指令,程序或指令被处理器执行时实现如上述任一实施例的报表生成方法的步骤,从而具有上述任一实施例的全部有益技术效果,在此不再赘述。

进一步地,可以理解的是,流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属技术领域的技术人员所理解。

在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。就本说明书而言,“计算机可读介质”可以是任何可以包含、存储、通信、传播或传输程序以供指令执行系统、装置或设备或结合这些指令执行系统、装置或设备而使用的装置。计算机可读介质的更具体的示例(非穷尽性列表)包括以下:具有一个或多个布线的电连接部(电子装置),便携式计算机盘盒(磁装置),随机存取存储器(RAM),只读存储器(ROM),可擦除可编辑只读存储器(EPROM或闪速存储器),光纤装置,以及便携式光盘只读存储器(CDROM)。另外,计算机可读介质甚至可以是可在其上打印程序的纸或其他合适的介质,因为可以例如通过对纸或其他介质进行光学扫描,接着进行编辑、解译或必要时以其他合适方式进行处理来以电子方式获得程序,然后将其存储在计算机存储器中。

应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。

本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。

此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。

上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号