一种基于内存计算在全面预算中实现公式计算的方法技术

技术编号:10809487 阅读:88 留言:0更新日期:2014-12-24 15:17
本发明专利技术提供一种基于内存计算在全面预算中实现公式计算的方法,该方法通过把公式和单元格数据加载到内存中进行统一运算,大大提高了公式计算的性能。该方法在内存中定义了一套完整的结构,对公式和单元格数据进行描述,并对关键信息进行唯一编码,通过唯一编码将公式和单元格数据关联,提高了数据检索的效率。一方面可以快速定位公式和参与计算的数据;另一方面可以快速进行数据运算,并根据内存信息进行数据展现。本发明专利技术通过技术与软件系统原有功能的整合,可以有效的提高软件使用人员的操作效率与数据计算的及时性,改变了传统的数据计算方式。

【技术实现步骤摘要】
一种基于内存计算在全面预算中实现公式计算的方法
本专利技术涉及一种计算机应用,具体地说是一种基于内存计算在全面预算中实现公式计算的方法。
技术介绍
全面预算报表具有一定的复杂性,在编制预算过程中,生产预算、销售预算、财务预算之间的报表都相互关联取值,报表之间关系严谨。为了数据的准确性,严谨性以及让用户能及时看到运算结果,就要求对数据进行及时的运算以及校验,这样数据运算的效率就显得尤为重要。但是全面预算中的公式多种多样,而且不同的用户场景,定义的公式是不同的,这样就导致了公式灵活多变。按照传统的软件实现方式,运算的时候需要后台批量执行多个SQL来完成,需要频繁的I/O操作,这样增加了服务器的压力,耗费了过多的时间,导致运算速度慢,性能差。随着信息化系统的应用不断深化,用户对数据运算的速度要求越来越高,如果运算速度慢,严重影响了用户体验。因此我们专利技术了一种对数据的快速运算方法,在保证数据准确性的基础上,减轻了服务器压力,提高了性能,增强了用户体验。
技术实现思路
本专利技术的目的是提供一种基于内存计算在全面预算中实现公式计算的方法。本专利技术的目的是按以下方式实现的,计算步骤如下:A)针对单元格的公式和数据,在内存中定义一种通用的数据结构存储,并且同一单元格允许对应不同的公式;其中:A1)报表打开时,加载当前报表包含的公式和数据,将公式和数据的信息存储到对应的实体结构中,并且根据公式和数据的维度信息构造唯一码,形成以唯一码为主键,以公式和数据信息的实体为值的哈希结构;A2)对于一个单元格,对应于一个公式的公式项,而且一个公式项在不同的业务规则下,允许包含在不同的公式中,所以一个单元格允许对应不同的公式;A3)对于一个单元格,如果该单元格存在公式,那么公式信息形成的唯一码和数据信息形成的唯一码是一致的,通过此唯一码能够快速定位到公式和数据信息;B)实现对公式和数据在内存结构中的快速定位和计算,针对每个计算出来的单元格可以继续计算相关的单元格数据;其中:B1).步骤A3中,当单元格的数据发生变化时,将当前单元格的维度信息构造出唯一码,同时根据步骤A1形成的哈希结构,快速定位出计算公式和参与计算的数据,然后进行数据运算;B2).步骤B1中计算完成后,定位出相应的单元格,然后再根据此单元格维度信息的唯一码递归步骤B1的过程,直到检索不到公式,完成整个计算过程;C)对公式和数据增加时间戳的管理机制,实现数据的增量处理;其中:C1)对每一个公式设置时间戳,首次计算时,将公式信息缓存到本地,再次计算时,如果公式的时间戳没有发生变化,则不加载公式,只处理本地缓存的公式;C2)对每条数据设置时间戳,首次打开报表时,将数据信息缓存到本地,再次打开时,根据时间戳,只增量加载修改的数据,并缓存到本地。所述的基于内存计算在全面预算中实现公式计算的方法,在内存中,构造了公式项的左值、公式项的右值,以及具体的单元格数据的结构,并通过数据的唯一码作为主键,建立三者的关联关系,此结构作为计算公式在内存中的一种载体;所述的基于内存计算在全面预算中实现公式计算的方法,对公式和数据在内存结构中的快速定位和计算,当单元格数据发生变化时,根据单元格数据的唯一码,通过哈希算法,在公式和数据的内存结构中快速检索出相应的公式,并进行计算,如果计算结果影响了其他的单元格数据,则进行递归处理,直到检索不到具体的公式信息,停止后续处理,完成整个计算过程。本专利技术的优异效果:相对于传统的SQL运算,减轻了服务器的压力,减少了冗余的计算公式,提高了计算性能,增强了用户体验。附图说明图1是计算机制原理图。具体实施方式参照说明书附图对本专利技术的作以下详细地说明。为使本专利技术更容易理解,下面结合附图就本专利技术的技术方案加以详尽的描述。1.公式和数据内存结构的构造:比如,公式01:A产品的销售收入=A产品的销量*A产品标准价格。其中A产品的销量为1000,A产品标准价格为50。(公式项左值:公式表达式等号左侧的公式项;公式项右值:公式表达式等号右侧的公式项。如此公式,公式项左值为:A产品的销售收入,公式项右值为:A产品的销量,A产品标准价格。)首先将公式项左值的相关信息存储到poLfFormula实体类中,同时根据该公式项的维度信息形成左值的唯一码:[A产品.销售收入],公式项右值的相关属性存储到poRfItem实体类中,并根据该公式项的维度信息形成右值的唯一码:[A产品.销量]、[A产品.价格],同时将公式项右值的信息存储到对应左值poLfFormula中的List<poRfItem>中。最终形成以左值唯一码([A产品.销售收入])为key值,poLfFormula为value值的Hash结构poLfFormulaHash。同步形成以公式项右值唯一码([A产品.销量]、[A产品.价格])为key值,公式项左值的集合List<poLfFormula>为value值的Hash结构poRfItemHash。通过以上的结构,在内存中构造了公式表达式的具体信息。下面形成内存中数据的具体信息:将A产品的销量和A产品标准价格的数据信息存储在poMemData中,形成以[A产品.销量]、[A产品.价格]唯一码为key,poMemData为value的Hash结构poWdHash。其中[A产品.销量]和[A产品.价格]这两个key,与公式项右值poRfItemHash中的key是相同的唯一码。2.公式和数据在内存结构中的快速定位和计算,如附图1所示:当单元格的数据发生变化时,通过单元格的唯一码为key查找公式项右值poRfItemHash中是否存在List<poLfFormula>,如果存在,则根据poLfFormula中的List<poRfItem>形成计算的公式表达式,并计算出受影响的单元格数据。再根据受影响单元格的唯一码递归上述处理,如果不存在则处理完毕。这样当[A产品.价格]的数据发生变化时,能快速定位出需要计算的公式01以及相关的数据信息,进行计算。3.对公式和数据增加时间戳的管理机制,实现数据的增量处理。比如,公式01:A产品的销售收入=A产品的销量*A产品标准价格。公式的定义时间为2014.03.01。假设公式上一次获取的时间为2014.02.20,当再次进行计算时,由于上次获取的时间小于公式定义的时间,则需要获取公式01的信息,缓存公式到本地,同步更新本地的时间戳为2014.03.01。当再次打开报表时,需要获取公式和数据,首先对比时间戳,如果没有变化,则不进行获取。所以对于已经获取到的公式和数据,增加时间戳,缓存到本地。当报表再次打开编制时,只获取后台时间戳有变化的公式和数据,根据后台的时间戳同步更新内存中的结构,并更新本地缓存。同理,对单元格的数据信息,也采用同上的方式,增加时间戳,减少加载的数据量。实施例:本专利技术的方法已经成功应用于浪潮ERPGS预算产品,在实际应用过程中,达到了和Excel相同的实时计算的效果,计算无延迟,提高了产品的易用性和性能,发挥了良好的效果。除说明书所述的技术特征外,均为本专业技术人员的已知技术。本文档来自技高网...
一种基于内存计算在全面预算中实现公式计算的方法

【技术保护点】
一种基于内存计算在全面预算中实现公式计算的方法, 其特征在于计算步骤如下:A) 针对单元格的公式和数据,在内存中定义一种通用的数据结构存储,并且同一单元格允许对应不同的公式;其中:A1)报表打开时,加载当前报表包含的公式和数据,将公式和数据的信息存储到对应的实体结构中,并且根据公式和数据的维度信息构造唯一码,形成以唯一码为主键,以公式和数据信息的实体为值的哈希结构;A2)对于一个单元格,对应于一个公式的公式项,而且一个公式项在不同的业务规则下,允许包含在不同的公式中,所以一个单元格允许对应不同的公式;A3)对于一个单元格,如果该单元格存在公式,那么公式信息形成的唯一码和数据信息形成的唯一码是一致的,通过此唯一码能够快速定位到公式和数据信息;B) 实现对公式和数据在内存结构中的快速定位和计算,针对每个计算出来的单元格可以继续计算相关的单元格数据;其中:B1). 步骤A3中,当单元格的数据发生变化时,将当前单元格的维度信息构造出唯一码,同时根据步骤A1形成的哈希结构,快速定位出计算公式和参与计算的数据,然后进行数据运算;B2).步骤B1中计算完成后,定位出相应的单元格,然后再根据此单元格维度信息的唯一码递归步骤B1的过程,直到检索不到公式,完成整个计算过程;C)对公式和数据增加时间戳的管理机制,实现数据的增量处理;其中:C1)对每一个公式设置时间戳,首次计算时,将公式信息缓存到本地,再次计算时,如果公式的时间戳没有发生变化,则不加载公式,只处理本地缓存的公式;C2)对每条数据设置时间戳,首次打开报表时,将数据信息缓存到本地,再次打开时,根据时间戳,只增量加载修改的数据,并缓存到本地。...

【技术特征摘要】
1.一种基于内存计算在全面预算中实现公式计算的方法,其特征在于计算步骤如下:A)针对单元格的公式和数据,在内存中定义一种通用的数据结构存储,并且同一单元格允许对应不同的公式;其中:A1)报表打开时,加载当前报表包含的公式和数据,将公式和数据的信息存储到对应的实体结构中,并且根据公式和数据的维度信息构造唯一码,形成以唯一码为主键,以公式和数据信息的实体为值的哈希结构;A2)对于一个单元格,对应于一个公式的公式项,而且一个公式项在不同的业务规则下,允许包含在不同的公式中,所以一个单元格允许对应不同的公式;A3)对于一个单元格,如果该单元格存在公式,那么公式信息形成的唯一码和数据信息形成的唯一码是一致的,通过此唯一码能够快速定位到公式和数据信息;B)实现对公式和数据在内存结构中的快速定位和计算,针对每个计算出来的单元格继续计算相关的单元格数据;其中:B1).步骤A3中,当单元格的数据发生变化时,将当前单元格的维度信息构造出唯一码,同时根据步骤A1形成的哈希结构,快速定位出计算公式和参与计算的数据,然后进行数据运算;B2).步骤B1中计算完成后,定位出相应的单元格,然后再根据此单元格...

【专利技术属性】
技术研发人员:韩伟谭永胜张敦雪
申请(专利权)人:浪潮通用软件有限公司
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1