数据汇总装置和数据汇总方法

文档序号:6378090阅读:136来源:国知局
专利名称:数据汇总装置和数据汇总方法
技术领域
本发明涉及计算机技术领域,具体而言,涉及ー种数据汇总装置和ー种数据汇总方法。
背景技术
在复杂的业务系统中,很多业务数据都是有层次性的,上级层次的数据需要实时对下级层次的业务数据进行自动汇总。自动汇总要求在末级维度成员的数据逐层汇总到上级成员,所有上级成员的数据都是由下级经过汇总计算得出来的。举例如下在企业的全面预算领域中,预算编制的方式是自下而上(末级单位填报预算数据, 上级单位自动汇总下级単位填制的预算数据)若末级单位的用户提交了ー个预算数据2011年7月A部门差旅费5000元,表达如下[2011年3季7月][部门d][差旅费]5000,假设在时间维度上的层次关系为[2011 年 3 季 7 月][2011 年 3 季][2011 年];在组织维度上的层次关系为[部门d][公司a][集団g];在科目维度上的层次关系为[差旅费][管理费用];那么,相应地,该预算数据的所有上级数据都要加上5000,即[2011 年 3 季][部门 d][差旅费]+5000 ;[2011 年 3季 7 月][公司 a][差旅费]+5000 ;[2011年3季7月][部门d][管理费用]+5000 ;[2011 年 3 季][公司 a][差旅费]+5000 ;[2011 年][部门 d][差旅费]+5000;[2011 年][集団 g][管理费用]+5000。总计有3x3x2-1=17个上级数据需要被加上5000。相关的数据汇总方法例如联机分析处理系统(OLAP, Online AnalyticProcessing)方法,可以通过定义数据立方体(Cube)和维度(Dimension),对业务数据进行类似的聚合计算。但是OLAP需要对数据立方体进行预先计算(物化Cube),因而无法保证数据汇总的实时性,无法满足业务的要求。另外,部署和使用OLAP的成本比较高,也会造成巨大的资源浪费。因此,需要ー种新的汇总方式,可保证在业务发生的同时能够进行数据汇总,保证数据汇总的实时性。

发明内容
本发明正是基于上述问题,提出了ー种数据汇总技术,可保证在业务发生的同时能够进行数据汇总,保证数据汇总的实时性。
有鉴于此,根据本发明的ー个方面,提供了ー种数据汇总装置,包括获取单元,接收用户提交的变更单元,获取所述变更単元的维度信息;查找单元,根据所述维度信息从关系型数据库中查找出所述变更単元的上级数据単元;汇总单元,根据所述变更单元修改所述上级数据单元的数据。在关系型数据库管理系统中实现多维数据的实时汇总,在提交变更单元数据时,根据变更単元的维度信息可得到上级数据単元的维度信息,从而可定位到上级数据単元,依据提交的变更单元数据就可以更改上级数据単元的数据,完成数据汇总,从而实现在业务发生时,可同时进行数据汇总,具有实时性。在上述技术方案中,优选的,所述查找単元包括遍历子単元,遍历所述变更単元中的每个数据单元,取出所述每个数据单元的维度信息;计算子単元,计算出所述每个数据 単元的每个维度上的上级维度成员列表;合并子单元,在上级维度成员列表中,合并具有相同维度的上级维度成员,得到所述上级数据单元。变更单元中包括至少ー个数据单元,每个数据单元包含了各自的维度信息,依据多维数据的预先定义,可根据维度、维度的层次以及维度的成员得到每个数据单元的每个维度上的上级维度成员列表,从而确定上级数据单元。在上述技术方案中,优选的,在所述用户选择的汇总方式为增量汇总方式时,所述汇总单元包括提取子単元,根据所述变更单元的维度信息从所述关系型数据库中提取出所述原数据单元,并计算出所述变更単元与所述原数据单元之间的差异;递归子单元,从所述变更単元开始逐级递归向上汇总,将所述差异累加至所述变更単元的所有上级数据単元中。一般来说,用户日常提交的变更单元数据可能仅仅是数据值的变化,但也可能是维度结构的变化,针对不同情况有不同的汇总方式。在数据值变化的情况下,需要计算出当前新数据与原数据之间的差异,然后逐级类型该差异,提高了汇总效率。在上述技术方案中,优选的,还可以包括锁定单元,在查找所述关系型数据库中的所述原数据单元时,锁定所述上级数据单元中的数据;更新単元,将所述变更单元和更新后的所述上级数据单元写入所述关系型数据库;解锁单元,在汇总结束后,对所述上级数据単元中的数据进行解锁。为了防止多线程并发造成的数据错误,在查询过程中,需对上级数据単元中的数据进行加锁。在上述任一技术方案中,优选的,在所述用户选择的汇总方式为全局汇总方式吋,所述数据汇总装置还包括清除単元,清除原汇总数据,保留末级数据;分组单元,根据选定的维度对所述变更单元进行分组得到多个单元变更子集;所述汇总単元还用于依据所述末级数据,从每个所述变更单元子集开始逐级递归向上汇总,生成所述变更単元的所有上级数据単元的汇总数据。若用户提交的变更单元数据涉及的是维度结构的变化,那么需采用全局汇总方式,清空所有的原汇总数据,但保留末级数据,根据末级数据和更改的维度结构重新汇总数据,虽然没有用到差异数据,但仍根据提交的变更单元数据的维度信息查找到上级维度成员列表,并在汇总时,逐级递归向上汇总。根据本发明的另一方面,还提供了ー种数据汇总方法,包括以下步骤步骤302,接收用户提交的变更单元,获取所述变更単元的维度信息;步骤304,根据所述维度信息从关系型数据库中查找出所述变更単元的上级数据単元;步骤306,根据所述变更单元修改所述上级数据单元的数据。在关系型数据库管理系统中实现多维数据的实时汇总,在提交变更单元数据时,根据变更単元的维度信息可得到上级数据単元的维度信息,从而可定位到上级数据単元,依据提交的变更单元数据就可以更改上级数据単元的数据,完成数据汇总,从而实现在业务发生时,可同时进行数据汇总,具有实时性。在上述技术方案中,优选的,在所述用户选择的汇总方式为增量汇总方式时,所述步骤304具体包括遍历所述变更単元中的每个数据单元,取出所述每个数据单元的维度信息;计算出所述每个数据单元的每个维度上的上级维度成员列表;在上级维度成员列表·中,合并具有相同维度的上级维度成员,得到所述上级数据单元。变更单元中包括至少ー个数据单元,每个数据单元包含了各自的维度信息,依据多维数据的预先定义,可根据维度、维度的层次以及维度的成员得到每个数据单元的每个维度上的上级维度成员列表,从而确定上级数据单元。在上述技术方案中,优选的,所述步骤306具体包括根据所述变更单元的维度信息从所述关系型数据库中提取出所述原数据单元,并计算出所述变更単元与所述原数据单元之间的差异;从所述变更单元开始逐级递归向上汇总,将所述差异累加至所述变更単元的所有上级数据单元中。一般来说,用户日常提交的变更单元数据可能仅仅是数据值的变化,但也可能是维度结构的变化,针对不同情况有不同的汇总方式。在数据值变化的情况下,需要计算出当前新数据与原数据之间的差异,然后逐级类型该差异,提高了汇总效率。在上述技术方案中,优选的,所述步骤306还包括在查找所述关系型数据库中的所述原数据单元时,锁定所述上级数据单元中的数据;将所述变更单元和更新后的所述上级数据単元写入所述关系型数据库;在汇总结束后,对所述上级数据単元中的数据进行解锁。为了防止多线程并发造成的数据错误,在查询过程中,需对上级数据単元中的数据进行加锁。在上述任一技术方案中,优选的,在所述用户选择的汇总方式为全局汇总方式吋,所述步骤302还包括清除原汇总数据,保留末级数据,根据选定的维度对所述进行分组得到多个变更単元子集;所述步骤306具体包括依据所述末级数据,从每个所述变更单元子集开始逐级递归向上汇总,生成所述变更単元的所有上级数据単元的汇总数据。若用户提交的变更单元数据涉及的是维度结构的变化,那么需采用全局汇总方式,清空所有的原汇总数据,但保留末级数据,根据末级数据和更改的维度结构重新汇总数据,虽然没有用到差异数据,但仍根据提交的变更单元数据的维度信息查找到上级维度成员列表,并在汇总时,逐级递归向上汇总。本发明提出了一种更加轻量级的多维数据汇总技术,通过高效率的内存汇总,在关系型数据库管理系统上,实现多维数据的实时汇总,即业务数据按照多个维度,多个层次向上逐层汇总。并保证了很高的效率,不影响正常业务的进行。相比较OLAP的物化汇总方案,该方案更加轻便且容易实施,节省了汇总计算成本,而且保证了汇总数据的实时性,业务发生的时候同时同步进行数据汇总。并且汇总数据和原始数据在ー个数据表中存储,方便随时查询分析。


图IA至图IC示出了根据本发明的实施例的维度结构图;图2示出了根据本发明的实施例的数据汇总装置的框图;图3示出了根据本发明的一个实施例的数据汇总方法的流程图;图4示出了根据本发明的又一实施例的数据汇总方法的流程图;图5示出了根据本发明的实施例的増量汇总方法的流程图; 图6示出了根据本发明的实施例的全局汇总方法的流程图。
具体实施例方式为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式
对本发明进行进一歩的详细描述。在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。首先结合图IA至图IC来说明在本发明的实施例中的多维数据的表达和存储。对于业务数据,需要预先设定数据的维度(Dimension)。维度(Dimension):是人们观察数据的特定角度,是考虑问题时的ー类属性,属性集合构成ー个维度,例如时间维度,组织维度,产品维度等等。维度的层次(Level):是对维度的进ー步的细分,如时间维度可以细分为,年层次,季度层次,月层次。维度的成员(Member):维度的具体取值,是数据在某个维度中位置的描述,如“2012年3月”是数据在时间维度上的位置的描述。通过定义多个不同的维度,能够更加灵活地观测和分析数据,每个维度的层次关系是以树形结构进行存储的,这样便于数据的汇总。多维数据集(Cube):由多个维度组成的数据载体,Cube就像一个坐标系,其中的每一个维度(Dimension)代表一个坐标轴。为了便于更加清晰的理解本发明,在本发明的实施例中以三维为例,给出了维度结构图,如图IA至图IC所示。在下面的实施例中,使用RDBMS(relational database management system,关系
型数据库管理系统)来存储多维数据集,多维数据集的数据表结构如下表所示
坐标季度Hg组织科目数据
2011.3. 7.01. CL201137部门 d差旅费5000
2011.3ノ. 01. CL20113 部门 d差旅费8000
2011.''01.CL2011 部门 d差旅费32000LUUbUj 从丄叫ば、」效從I Bj以有出,7しK、效從! Ug厄一仃效從^和木级效從! 一仃效從^定仔
在同一张数据库表里面的。其中坐标这一列是把各个维度的主键字段,经过压缩映射后,组合而形成的一个字符串,坐标字段是全表唯一的,不能有两行数据有重复的坐标值。根据坐标值,可以很方便而准确的查询出多维数据的值。压缩映射的目的是为了减少存储空间,同时提高查询的性能和效率。接下来结合图2来说明根据本发明的数据汇总装置。如图2所示,根据本发明的实施例的数据汇总装置100包括获取单元102,接收用户提交的变更单元,获取所述变更単元的维度信息;查找单元104,根据所述维度信息从关系型数据库中查找出所述变更単元的上级数据単元;汇总单元106,根据所述变更单元修改所述上级数据单元的数据,并将所述变更単元的数据和更新后的所述上级数据单元的数据写入所述关系型数据库。在关系型数据库管理系统中实现多维数据的实时汇总,在提交变更单元数据时,根据变更単元的维度信息可得到上级数据単元的维度信息,从而可定位到上级数据単元,依据提交的变更单元数据就可以更改上级数据単元的数据,完成数据汇总,从而实现在业务发生时,可同时进行数据汇总,具有实时性。优选的,所述查找単元104可以包括遍历子単元1042,遍历所述变更単元中的每个数据単元,取出所述每个数据单元的维度信息;计算子单元1044,计算出所述每个数据单元的每个维度上的上级维度成员列表;合并子单元1046,在上级维度成员列表中,合并具有相同维度的上级维度成员,得到所述上级数据单元。变更单元中包括至少ー个数据单元,每个数据单元包含了各自的维度信息,依据多维数据的预先定义,可根据维度、维度的层次以及维度的成员得到每个数据单元的每个维度上的上级维度成员列表,从而确定上级数据单元。在上述技术方案中,优选的,在所述用户选择的汇总方式为增量汇总方式时,所述汇总单元106包括提取子単元1062,根据所述变更单元的维度信息从所述关系型数据库中提取出所述原数据单元,并计算出所述变更単元与所述原数据单元之间的差异;递归子単元1064,从所述变更单元开始逐级递归向上汇总,将所述差异累加至所述变更単元的所有上级数据单元中。一般来说,用户日常提交的变更单元数据可能仅仅是数据值的变化,但也可能是维度结构的变化,针对不同情况有不同的汇总方式。在数据值变化的情况下,需要计算出当前新数据与原数据之间的差异,然后逐级类型该差异,提高了汇总效率。优选的,该数据汇总装置100还可以包括锁定单元108,在查找所述关系型数据库中的所述原数据单元时,锁定所述上级数据单元中的数据;解锁单元110,在汇总结束后,对所述上级数据単元中的数据进行解锁。为了防止多线程并发造成的数据错误,在查询过程中,需对上级数据単元中的数据进行加锁。在上述任一技术方案中,优选的,在所述用户选择的汇总方式为全局汇总方式吋,所述数据汇总装置还包括清除単元112,清除原汇总数据,保留末级数据;分组单元114,根据选定的维度对所述变更单元进行分组得到多个单元变更子集;所述汇总単元106还用于依据所述末级数据,从每个所述变更单元子集开始逐级递归向上汇总,生成所述变更单元的所有上级数据单元的汇总数据。若用户提交的变更单元数据涉及的是维度结构的变化,那么需采用全局汇总方式,清空所有的原汇总数据,但保留末级数据,根据末级数据和更改的维度结构重新汇总数据,虽然没有用到差异数据,但仍根据提交的变更单元数据的维度信息查找到上级维度成员列表,并在汇总时,逐级递归向上汇总。下面结合图3至图6进ー步说明根据本发明的数据汇总方法。如图3所示,根据本发明的实施例的数据汇总方法,包括以下步骤步骤302,接收用户提交的变更单元,获取变更单元的维度信息;步骤304,根据维度信息从关系型数据库中查找出变更单元的上级数据単元;步骤306,根据变更単元修改上级数据単元的数据,并将变更単元的数据和更新后的上级数据単元的数据写入关系型数据库。在关系型数据库管理系统中实现多维数据的实时汇总,在提交变更单元数据时,根据变更単元的维度信息可得到上级数据単元的维度信息,从而可定位到上级数据単元, 依据提交的变更单元数据就可以更改上级数据単元的数据,完成数据汇总,从而实现在业务发生时,可同时进行数据汇总,具有实时性。优选的,在用户选择的汇总方式为增量汇总方式时,所述步骤304具体包括遍历所述变更単元中的每个数据单元,取出所述每个数据单元的维度信息;计算出所述每个数据单元的每个维度上的上级维度成员列表;在上级维度成员列表中,合并具有相同维度的上级维度成员,得到所述上级数据单元。变更单元中包括至少ー个数据单元,每个数据单元包含了各自的维度信息,依据多维数据的预先定义,可根据维度、维度的层次以及维度的成员得到每个数据单元的每个维度上的上级维度成员列表,从而确定上级数据单元。优选的,所述步骤306具体可包括根据所述变更单元的维度信息从所述关系型数据库中提取出所述原数据单元,并计算出所述变更単元与所述原数据单元之间的差异;从所述变更单元开始逐级递归向上汇总,将所述差异累加至所述变更単元的所有上级数据单元中。—般来说,用户日常提交的变更单元数据可能仅仅是数据值的变化,但也可能是维度结构的变化,针对不同情况有不同的汇总方式。在数据值变化的情况下,需要计算出当前新数据与原数据之间的差异,然后逐级类型该差异,提高了汇总效率。优选的,所述步骤306还可以包括在查找所述关系型数据库中的所述原数据单元时,锁定所述上级数据单元中的数据;在汇总结束后,对所述上级数据単元中的数据进行解锁。为了防止多线程并发造成的数据错误,在查询过程中,需对上级数据単元中的数据进行加锁。在上述任一技术方案中,优选的,在所述用户选择的汇总方式为全局汇总方式吋,所述步骤302还包括清除原汇总数据,保留末级数据,根据选定的维度对所述进行分组得到多个变更単元子集;所述步骤306具体包括依据所述末级数据,从每个所述变更单元子集开始逐级递归向上汇总,生成所述变更単元的所有上级数据単元的汇总数据。若用户提交的变更单元数据涉及的是维度结构的变化,那么需采用全局汇总方式,清空所有的原汇总数据,但保留末级数据,根据末级数据和更改的维度结构重新汇总数据,虽然没有用到差异数据,但仍根据提交的变更单元数据的维度信息查找到上级维度成员列表,并在汇总时,逐级递归向上汇总。如图4所示,増量汇总的算法可以分为4个步骤,分别是步骤402 :计算上级单元的维度信息,该步骤根据用户提交的变更单元集C,遍历C中的每ー个数据单元(Cell),取出该数据単元的维度信息,计算出该数据単元在每个维度上的上级维度成员列表,并把不同维度上的上级成员列表做笛卡尔运算,得到上级数据单元的坐标,最后把重复的坐标进行合井。以上表为例,对于C中的ー个Cell: [2011年3季7月][部门d][差旅费],共可以计算得到17个上级単元坐标,把C中的每个Cell都进行一次计算后可以得到上级坐标的ー个列表。步骤404 :获取步骤402的计算结果,根据坐标集合,查询关系型数据库管理系统,得到上级数据単元的列表集合P,同时查询集合C在数据库中的原有数据单元集合CO,在此过程中需要对P中的数据进行加锁,以防止多线程并发的时候可能造成的数据错误。
步骤406 :在内存中进行増量汇总计算,并把计算结果写入集合P。该步骤的具体处理流程,请參见图5。步骤408 :提交变更单元集C和上级数据単元列表集合P中发生变更的数据单元到关系型数据库。完成増量计算后,向数据库中写入变更的数据,事务完成,同时释放在步骤404中对数据所加的锁。如图5所示,在该实施例中,使用递归算法自底而上进行增量汇总的计算,从集合C中的数据单元开始递归向上汇总,在步骤502,判断集合C中是否有剰余的数据单元,如果没有,说明处理结束,如果有,则继续下面的处理过程。在步骤504,比较末级単元格的新数据和上ー个版本的数据之间的差异,计算出数据增量diff (即差异)。在步骤506,计算该数据单元在某个维度i上取直接上级的上级单元Pi的坐标。在步骤508,判断该上级数据单元的坐标Pi是否为空,若空,则进入步骤514,若不为空,则进入步骤510。在步骤510,根据坐标Pi查询该上级数据単元。在步骤512,然后把这个diff累加到查询到的上级数据单元上,即提交的数据单元在某个维度上的父亲单元格上,然后以父単元为基础,继续进行递归调用,直到汇总过程结束,需要注意的是,如果在P中不存在父单元,系统会自动生成ー个数据单元。在步骤514,若坐标为空,则继续判断是否有下个维度,若有下个维度,则继续判断下个维度下上级数据単元的坐标,回到步骤506。若没有下个维度,则进入步骤502,继续处理C中剩余的数据单元。该汇总算法中关键部分的Java示意代码如下
权利要求
1.ー种数据汇总装置,其特征在于,包括 获取单元,接收用户提交的变更单元,获取所述变更単元的维度信息; 查找单元,根据所述维度信息从关系型数据库中查找出所述变更単元的上级数据单元; 汇总单元,根据所述变更单元修改所述上级数据单元的数据,并将所述变更単元的数据和更新后的所述上级数据单元的数据写入所述关系型数据库。
2.根据权利要求I所述的数据汇总装置,其特征在于,所述查找単元包括 遍历子単元,遍历所述变更単元中的每个数据单元,取出所述每个数据单元的维度信息; 计算子単元,计算出所述每个数据单元的每个维度上的上级维度成员列表; 合并子单元,在上级维度成员列表中,合并具有相同维度的上级维度成员,得到所述上级数据单元。
3.根据权利要求2所述的数据汇总装置,其特征在于,在所述用户选择的汇总方式为増量汇总方式时,所述汇总単元包括 提取子単元,根据所述变更单元的维度信息从所述关系型数据库中提取出所述原数据単元,并计算出所述变更単元与所述原数据单元之间的差异; 递归子単元,从所述变更单元开始逐级递归向上汇总,将所述差异累加至所述变更单元的所有上级数据单元中。
4.根据权利要求3所述的数据汇总装置,其特征在于,还包括锁定单元,在查找所述关系型数据库中的所述原数据单元时,锁定所述上级数据单元中的数据; 解锁单元,在汇总结束后,对所述上级数据単元中的数据进行解锁。
5.根据权利要求I至4中任一项所述的数据汇总装置,其特征在于,在所述用户选择的汇总方式为全局汇总方式时,所述数据汇总装置还包括清除単元,清除原汇总数据,保留末级数据; 分组单元,根据选定的维度对所述变更单元进行分组得到多个单元变更子集; 所述汇总単元还用于依据所述末级数据,从每个所述变更单元子集开始逐级递归向上汇总,生成所述变更単元的所有上级数据単元的汇总数据。
6.ー种数据汇总方法,其特征在于,包括以下步骤 步骤302,接收用户提交的变更单元,获取所述变更単元的维度信息; 步骤304,根据所述维度信息从关系型数据库中查找出所述变更単元的上级数据单元; 步骤306,根据所述变更单元修改所述上级数据单元的数据,并将所述变更単元的数据和更新后的所述上级数据单元的数据写入所述关系型数据库。
7.根据权利要求6所述的数据汇总方法,其特征在于,所述步骤304具体包括遍历所述变更単元中的每个数据单元,取出所述每个数据单元的维度信息; 计算出所述每个数据单元的每个维度上的上级维度成员列表; 在上级维度成员列表中,合并具有相同维度的上级维度成员,得到所述上级数据单元。
8.根据权利要求7所述的数据汇总方法,其特征在于,在所述用户选择的汇总方式为増量汇总方式时,所述步骤306具体包括根据所述变更单元的维度信息从所述关系型数据库中提取出所述原数据单元,并计算出所述变更単元与所述原数据单元之间的差异;从所述变更单元开始逐级递归向上汇总,将所述差异累加至所述变更単元的所有上级数据单元中。
9.根据权利要求8所述的数据汇总方法,其特征在于,所述步骤306还包括在查找所述关系型数据库中的所述原数据单元时,锁定所述上级数据单元中的数据; 在汇总结束后,对所述上级数据単元中的数据进行解锁。
10.根据权利要求6至9中任一项所述的数据汇总方法,其特征在于,在所述用户选择的汇总方式为全局汇总方式时,所述步骤302还包括清除原汇总数据,保留末级数据,根据选定的维度对所述进行分组得到多个变更単元子集; 所述步骤306具体包括依据所述末级数据,从每个所述变更单元子集开始逐级递归向上汇总,生成所述变更単元的所有上级数据単元的汇总数据。
全文摘要
本发明提供了一种数据汇总装置,包括获取单元,接收用户提交的变更单元,获取变更单元的维度信息;查找单元,根据维度信息查找出变更单元的上级数据单元;汇总单元,根据变更单元修改上级数据单元的数据。本发明还提供了一种数据汇总方法。根据本发明的技术方案,可提供更加轻量级的数据汇总方案,实现多维数据的实时汇总,保证高效率的内存汇总,且能够保证在业务发生的时候同步进行数据汇总。
文档编号G06F17/30GK102867066SQ201210371809
公开日2013年1月9日 申请日期2012年9月28日 优先权日2012年9月28日
发明者童志杰 申请人:用友软件股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1