首页> 中国专利> 数据汇总装置和数据汇总方法

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

摘要

本发明提供了一种数据汇总装置,包括:获取单元,接收用户提交的变更单元,获取变更单元的维度信息;查找单元,根据维度信息查找出变更单元的上级数据单元;汇总单元,根据变更单元修改上级数据单元的数据。本发明还提供了一种数据汇总方法。根据本发明的技术方案,可提供更加轻量级的数据汇总方案,实现多维数据的实时汇总,保证高效率的内存汇总,且能够保证在业务发生的时候同步进行数据汇总。

著录项

  • 公开/公告号CN102867066A

    专利类型发明专利

  • 公开/公告日2013-01-09

    原文格式PDF

  • 申请/专利权人 用友软件股份有限公司;

    申请/专利号CN201210371809.6

  • 发明设计人 童志杰;

    申请日2012-09-28

  • 分类号

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

  • 代理人尚志峰

  • 地址 100094 北京市海淀区北清路68号用友软件园

  • 入库时间 2024-02-19 16:35:27

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2015-10-21

    授权

    授权

  • 2015-10-14

    著录事项变更 IPC(主分类):G06F17/30 变更前: 变更后: 申请日:20120928

    著录事项变更

  • 2013-02-20

    实质审查的生效 IPC(主分类):G06F17/30 申请日:20120928

    实质审查的生效

  • 2013-01-09

    公开

    公开

说明书

技术领域

本发明涉及计算机技术领域,具体而言,涉及一种数据汇总装置和一 种数据汇总方法。

背景技术

在复杂的业务系统中,很多业务数据都是有层次性的,上级层次的数 据需要实时对下级层次的业务数据进行自动汇总。

自动汇总要求在末级维度成员的数据逐层汇总到上级成员,所有上级 成员的数据都是由下级经过汇总计算得出来的。举例如下:

在企业的全面预算领域中,预算编制的方式是自下而上(末级单位填 报预算数据,上级单位自动汇总下级单位填制的预算数据)

若末级单位的用户提交了一个预算数据: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 Analytic  Processing)方法,可以通过定义数据立方体(Cube)和维度 (Dimension),对业务数据进行类似的聚合计算。但是OLAP需要对数 据立方体进行预先计算(物化Cube),因而无法保证数据汇总的实时 性,无法满足业务的要求。另外,部署和使用OLAP的成本比较高,也会 造成巨大的资源浪费。

因此,需要一种新的汇总方式,可保证在业务发生的同时能够进行数 据汇总,保证数据汇总的实时性。

发明内容

本发明正是基于上述问题,提出了一种数据汇总技术,可保证在业务 发生的同时能够进行数据汇总,保证数据汇总的实时性。

有鉴于此,根据本发明的一个方面,提供了一种数据汇总装置,包 括:获取单元,接收用户提交的变更单元,获取所述变更单元的维度信 息;查找单元,根据所述维度信息从关系型数据库中查找出所述变更单元 的上级数据单元;汇总单元,根据所述变更单元修改所述上级数据单元的 数据。

在关系型数据库管理系统中实现多维数据的实时汇总,在提交变更单 元数据时,根据变更单元的维度信息可得到上级数据单元的维度信息,从 而可定位到上级数据单元,依据提交的变更单元数据就可以更改上级数据 单元的数据,完成数据汇总,从而实现在业务发生时,可同时进行数据汇 总,具有实时性。

在上述技术方案中,优选的,所述查找单元包括:遍历子单元,遍历 所述变更单元中的每个数据单元,取出所述每个数据单元的维度信息;计 算子单元,计算出所述每个数据单元的每个维度上的上级维度成员列表; 合并子单元,在上级维度成员列表中,合并具有相同维度的上级维度成 员,得到所述上级数据单元。

变更单元中包括至少一个数据单元,每个数据单元包含了各自的维度 信息,依据多维数据的预先定义,可根据维度、维度的层次以及维度的成 员得到每个数据单元的每个维度上的上级维度成员列表,从而确定上级数 据单元。

在上述技术方案中,优选的,在所述用户选择的汇总方式为增量汇总 方式时,所述汇总单元包括:提取子单元,根据所述变更单元的维度信息 从所述关系型数据库中提取出所述原数据单元,并计算出所述变更单元与 所述原数据单元之间的差异;递归子单元,从所述变更单元开始逐级递归 向上汇总,将所述差异累加至所述变更单元的所有上级数据单元中。

一般来说,用户日常提交的变更单元数据可能仅仅是数据值的变化, 但也可能是维度结构的变化,针对不同情况有不同的汇总方式。在数据值 变化的情况下,需要计算出当前新数据与原数据之间的差异,然后逐级类 型该差异,提高了汇总效率。

在上述技术方案中,优选的,还可以包括:锁定单元,在查找所述关 系型数据库中的所述原数据单元时,锁定所述上级数据单元中的数据;更 新单元,将所述变更单元和更新后的所述上级数据单元写入所述关系型数 据库;解锁单元,在汇总结束后,对所述上级数据单元中的数据进行解 锁。

为了防止多线程并发造成的数据错误,在查询过程中,需对上级数据 单元中的数据进行加锁。

在上述任一技术方案中,优选的,在所述用户选择的汇总方式为全局 汇总方式时,所述数据汇总装置还包括:清除单元,清除原汇总数据,保 留末级数据;分组单元,根据选定的维度对所述变更单元进行分组得到多 个单元变更子集;所述汇总单元还用于依据所述末级数据,从每个所述变 更单元子集开始逐级递归向上汇总,生成所述变更单元的所有上级数据单 元的汇总数据。

若用户提交的变更单元数据涉及的是维度结构的变化,那么需采用全 局汇总方式,清空所有的原汇总数据,但保留末级数据,根据末级数据和 更改的维度结构重新汇总数据,虽然没有用到差异数据,但仍根据提交的 变更单元数据的维度信息查找到上级维度成员列表,并在汇总时,逐级递 归向上汇总。

根据本发明的另一方面,还提供了一种数据汇总方法,包括以下步 骤:步骤302,接收用户提交的变更单元,获取所述变更单元的维度信 息;步骤304,根据所述维度信息从关系型数据库中查找出所述变更单元 的上级数据单元;步骤306,根据所述变更单元修改所述上级数据单元的 数据。

在关系型数据库管理系统中实现多维数据的实时汇总,在提交变更单 元数据时,根据变更单元的维度信息可得到上级数据单元的维度信息,从 而可定位到上级数据单元,依据提交的变更单元数据就可以更改上级数据 单元的数据,完成数据汇总,从而实现在业务发生时,可同时进行数据汇 总,具有实时性。

在上述技术方案中,优选的,在所述用户选择的汇总方式为增量汇总 方式时,所述步骤304具体包括:遍历所述变更单元中的每个数据单元, 取出所述每个数据单元的维度信息;计算出所述每个数据单元的每个维度 上的上级维度成员列表;在上级维度成员列表中,合并具有相同维度的上 级维度成员,得到所述上级数据单元。

变更单元中包括至少一个数据单元,每个数据单元包含了各自的维度 信息,依据多维数据的预先定义,可根据维度、维度的层次以及维度的成 员得到每个数据单元的每个维度上的上级维度成员列表,从而确定上级数 据单元。

在上述技术方案中,优选的,所述步骤306具体包括:根据所述变更 单元的维度信息从所述关系型数据库中提取出所述原数据单元,并计算出 所述变更单元与所述原数据单元之间的差异;从所述变更单元开始逐级递 归向上汇总,将所述差异累加至所述变更单元的所有上级数据单元中。

一般来说,用户日常提交的变更单元数据可能仅仅是数据值的变化, 但也可能是维度结构的变化,针对不同情况有不同的汇总方式。在数据值 变化的情况下,需要计算出当前新数据与原数据之间的差异,然后逐级类 型该差异,提高了汇总效率。

在上述技术方案中,优选的,所述步骤306还包括:在查找所述关系 型数据库中的所述原数据单元时,锁定所述上级数据单元中的数据;将所 述变更单元和更新后的所述上级数据单元写入所述关系型数据库;在汇总 结束后,对所述上级数据单元中的数据进行解锁。

为了防止多线程并发造成的数据错误,在查询过程中,需对上级数据 单元中的数据进行加锁。

在上述任一技术方案中,优选的,在所述用户选择的汇总方式为全局 汇总方式时,所述步骤302还包括:清除原汇总数据,保留末级数据,根 据选定的维度对所述进行分组得到多个变更单元子集;所述步骤306具体 包括:依据所述末级数据,从每个所述变更单元子集开始逐级递归向上汇 总,生成所述变更单元的所有上级数据单元的汇总数据。

若用户提交的变更单元数据涉及的是维度结构的变化,那么需采用全 局汇总方式,清空所有的原汇总数据,但保留末级数据,根据末级数据和 更改的维度结构重新汇总数据,虽然没有用到差异数据,但仍根据提交的 变更单元数据的维度信息查找到上级维度成员列表,并在汇总时,逐级递 归向上汇总。

本发明提出了一种更加轻量级的多维数据汇总技术,通过高效率的内 存汇总,在关系型数据库管理系统上,实现多维数据的实时汇总,即业务 数据按照多个维度,多个层次向上逐层汇总。并保证了很高的效率,不影 响正常业务的进行。相比较OLAP的物化汇总方案,该方案更加轻便且容 易实施,节省了汇总计算成本,而且保证了汇总数据的实时性,业务发生 的时候同时同步进行数据汇总。并且汇总数据和原始数据在一个数据表中 存储,方便随时查询分析。

附图说明

图1A至图1C示出了根据本发明的实施例的维度结构图;

图2示出了根据本发明的实施例的数据汇总装置的框图;

图3示出了根据本发明的一个实施例的数据汇总方法的流程图;

图4示出了根据本发明的又一实施例的数据汇总方法的流程图;

图5示出了根据本发明的实施例的增量汇总方法的流程图;

图6示出了根据本发明的实施例的全局汇总方法的流程图。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附 图和具体实施方式对本发明进行进一步的详细描述。

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

首先结合图1A至图1C来说明在本发明的实施例中的多维数据的表 达和存储。

对于业务数据,需要预先设定数据的维度(Dimension)。

维度(Dimension):是人们观察数据的特定角度,是考虑问题时的 一类属性,属性集合构成一个维度,例如时间维度,组织维度,产品维度 等等。

维度的层次(Level):是对维度的进一步的细分,如时间维度可以 细分为,年层次,季度层次,月层次。

维度的成员(Member):维度的具体取值,是数据在某个维度中位 置的描述,如“2012年3月”是数据在时间维度上的位置的描述。

通过定义多个不同的维度,能够更加灵活地观测和分析数据,每个维 度的层次关系是以树形结构进行存储的,这样便于数据的汇总。

多维数据集(Cube):由多个维度组成的数据载体,Cube就像一个 坐标系,其中的每一个维度(Dimension)代表一个坐标轴。

为了便于更加清晰的理解本发明,在本发明的实施例中以三维为例, 给出了维度结构图,如图1A至图1C所示。

在下面的实施例中,使用RDBMS(relational database management  system,关系型数据库管理系统)来存储多维数据集,多维数据集的数据 表结构如下表所示:

  坐标   年   季度   月   组织   科目   数据   2011.3.7.O1.CL   2011   3   7   部门d   差旅费   5000   2011.3.~.O1.CL   2011   3   ~   部门d   差旅费   8000   2011.~.~.O1.CL   2011   ~   ~   部门d   差旅费   32000

从上面的数据可以看出,汇总数据(最后一行数据)和末级数据(第 一行数据)是存在同一张数据库表里面的。其中坐标这一列是把各个维度 的主键字段,经过压缩映射后,组合而形成的一个字符串,坐标字段是全 表唯一的,不能有两行数据有重复的坐标值。根据坐标值,可以很方便而 准确的查询出多维数据的值。压缩映射的目的是为了减少存储空间,同时 提高查询的性能和效率。

接下来结合图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在数据 库中的原有数据单元集合C0,在此过程中需要对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示意代码如下:

当用户提交的数据单元涉及维度机构的变化时,采用如图6所示的全 局汇总方法。

增量汇总的前提是数据库中的汇总数据是正确,仅对局部的数据进行 改变,以最小的计算量去修改汇总数据,而全局汇总的情况不同,由于维 度的结构发生了变更,比如用户增加了维度,或者修改了维度成员的层次 结构,导致原来的汇总数据有问题。因此,需要先清除所有的汇总数据, 保留末级数据,再重新由末级数据数据重新汇总生成新的汇总数据。如图 6所示,全局汇总的具体算法可以分为以下几个步骤:

步骤602:清除原汇总数据。步骤604:把末级数据按照某个维度例 如科目进行分组,形成多个变更单元子集C,之所以选择科目这个维度进 行分组,主要原因是数据在科目上的区分度较好,按照科目进行分组,能 够保证每个变更单元子集合C的单元数目控制在一定的规模,不会太大, 否则会给服务器的内存造成很大的压力。

步骤606:对于每个变更集C,调用增量汇总的算法incSum,图5所 示的算法,重新把上级的汇总数据进行生成。在增量汇总的情况下,大部 分时候上级数据单元列表集合P中的元素都是空的,系统会自动生成上级 数据单元。而且增量数据的计算和增量汇总的情况稍有不同,在增量汇总 的情况下:diff=C.getCell(cell).getValue()-C0.getCell(cell).getValue();

而在全局汇总的情况下:diff=C.getCell(cell).getValue()。

综上所述,本发明提出了一种更加轻量级的多维数据汇总技术,通过 高效率的内存汇总,在RDBMS上,实现多维数据的实时汇总,即业务数 据按照多个维度,多个层次向上逐层汇总。并保证了很高的效率,不影响 正常业务的进行。相比较OLAP的物化汇总方案,该方案更加轻便且容易 实施,节省了IT成本,而且保证了汇总数据的实时性,业务发生的时候 同时同步进行数据汇总。并且汇总数据和原始数据在一个数据表中存储, 方便随时查询分析。本发明可应用于涉及到需要对多维度数据进行高效率 实时汇总的业务领域。

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

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号