CN104239686A - 一种基于内存计算在全面预算中实现公式计算的方法 - Google Patents
一种基于内存计算在全面预算中实现公式计算的方法 Download PDFInfo
- Publication number
- CN104239686A CN104239686A CN201410391747.4A CN201410391747A CN104239686A CN 104239686 A CN104239686 A CN 104239686A CN 201410391747 A CN201410391747 A CN 201410391747A CN 104239686 A CN104239686 A CN 104239686A
- Authority
- CN
- China
- Prior art keywords
- formula
- data
- cell
- unique code
- computation
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明提供一种基于内存计算在全面预算中实现公式计算的方法,该方法通过把公式和单元格数据加载到内存中进行统一运算,大大提高了公式计算的性能。该方法在内存中定义了一套完整的结构,对公式和单元格数据进行描述,并对关键信息进行唯一编码,通过唯一编码将公式和单元格数据关联,提高了数据检索的效率。一方面可以快速定位公式和参与计算的数据;另一方面可以快速进行数据运算,并根据内存信息进行数据展现。本发明通过技术与软件系统原有功能的整合,可以有效的提高软件使用人员的操作效率与数据计算的及时性,改变了传统的数据计算方式。
Description
技术领域
本发明涉及一种计算机应用, 具体地说是一种基于内存计算在全面预算中实现公式计算的方法。
背景技术
全面预算报表具有一定的复杂性,在编制预算过程中,生产预算、销售预算、财务预算之间的报表都相互关联取值,报表之间关系严谨。为了数据的准确性,严谨性以及让用户能及时看到运算结果,就要求对数据进行及时的运算以及校验,这样数据运算的效率就显得尤为重要。但是全面预算中的公式多种多样,而且不同的用户场景,定义的公式是不同的,这样就导致了公式灵活多变。按照传统的软件实现方式,运算的时候需要后台批量执行多个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。
当再次打开报表时,需要获取公式和数据,首先对比时间戳,如果没有变化,则不进行获取。
所以对于已经获取到的公式和数据,增加时间戳,缓存到本地。当报表再次打开编制时,只获取后台时间戳有变化的公式和数据,根据后台的时间戳同步更新内存中的结构,并更新本地缓存。
同理,对单元格的数据信息,也采用同上的方式,增加时间戳,减少加载的数据量。
实施例:
本发明的方法已经成功应用于浪潮ERP GS预算产品,在实际应用过程中,达到了和Excel相同的实时计算的效果,计算无延迟,提高了产品的易用性和性能,发挥了良好的效果。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。
Claims (3)
1.一种基于内存计算在全面预算中实现公式计算的方法, 其特征在于计算步骤如下:
A) 针对单元格的公式和数据,在内存中定义一种通用的数据结构存储,并且同一单元格允许对应不同的公式;其中:
A1)报表打开时,加载当前报表包含的公式和数据,将公式和数据的信息存储到对应的实体结构中,并且根据公式和数据的维度信息构造唯一码,形成以唯一码为主键,以公式和数据信息的实体为值的哈希结构;
A2)对于一个单元格,对应于一个公式的公式项,而且一个公式项在不同的业务规则下,允许包含在不同的公式中,所以一个单元格允许对应不同的公式;
A3)对于一个单元格,如果该单元格存在公式,那么公式信息形成的唯一码和数据信息形成的唯一码是一致的,通过此唯一码能够快速定位到公式和数据信息;
B) 实现对公式和数据在内存结构中的快速定位和计算,针对每个计算出来的单元格可以继续计算相关的单元格数据;其中:
B1). 步骤A3中,当单元格的数据发生变化时,将当前单元格的维度信息构造出唯一码,同时根据步骤A1形成的哈希结构,快速定位出计算公式和参与计算的数据,然后进行数据运算;
B2).步骤B1中计算完成后,定位出相应的单元格,然后再根据此单元格维度信息的唯一码递归步骤B1的过程,直到检索不到公式,完成整个计算过程;
C)对公式和数据增加时间戳的管理机制,实现数据的增量处理;其中:
C1)对每一个公式设置时间戳,首次计算时,将公式信息缓存到本地,再次计算时,如果公式的时间戳没有发生变化,则不加载公式,只处理本地缓存的公式;
C2)对每条数据设置时间戳,首次打开报表时,将数据信息缓存到本地,再次打开时,根据时间戳,只增量加载修改的数据,并缓存到本地。
2.根据权利要求1所述的基于内存计算在全面预算中实现公式计算的方法,其特征在于在内存中,构造了公式项的左值、公式项的右值,以及具体的单元格数据的结构,并通过数据的唯一码作为主键,建立三者的关联关系,此结构作为计算公式在内存中的一种载体。
3.根据权利要求1所述的基于内存计算在全面预算中实现公式计算的方法,其特征在于对公式和数据在内存结构中的快速定位和计算,当单元格数据发生变化时,根据单元格数据的唯一码,通过哈希算法,在公式和数据的内存结构中快速检索出相应的公式,并进行计算,如果计算结果影响了其他的单元格数据,则进行递归处理,直到检索不到具体的公式信息,停止后续处理,完成整个计算过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410391747.4A CN104239686B (zh) | 2014-08-12 | 2014-08-12 | 一种基于内存计算在全面预算中实现公式计算的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410391747.4A CN104239686B (zh) | 2014-08-12 | 2014-08-12 | 一种基于内存计算在全面预算中实现公式计算的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104239686A true CN104239686A (zh) | 2014-12-24 |
CN104239686B CN104239686B (zh) | 2017-04-12 |
Family
ID=52227736
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410391747.4A Active CN104239686B (zh) | 2014-08-12 | 2014-08-12 | 一种基于内存计算在全面预算中实现公式计算的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104239686B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095641A (zh) * | 2015-05-29 | 2015-11-25 | 努比亚技术有限公司 | 一种计算空间容量的方法和装置 |
CN112751334A (zh) * | 2020-12-21 | 2021-05-04 | 中国电力科学研究院有限公司 | 一种基于内存计算架构的电网在线建模的方法及系统 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0916689A (ja) * | 1995-06-27 | 1997-01-17 | Hitachi Ltd | 表計算方法及びその装置 |
US20010056440A1 (en) * | 2000-06-26 | 2001-12-27 | David Abramson | Parallel execution mechanism for spreadsheets |
CN101038584A (zh) * | 2006-03-14 | 2007-09-19 | 国际商业机器公司 | 用于执行计算处理的系统和方法 |
CN101710347A (zh) * | 2009-12-23 | 2010-05-19 | 金蝶软件(中国)有限公司 | 一种对数据表中的数据进行处理的方法和装置 |
CN102004953A (zh) * | 2010-11-09 | 2011-04-06 | 浪潮集团山东通用软件有限公司 | 多维度全面预算的实现方法 |
US20120179687A1 (en) * | 2008-07-10 | 2012-07-12 | Mcafee, Inc. | System and method for data mining and security policy management |
-
2014
- 2014-08-12 CN CN201410391747.4A patent/CN104239686B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH0916689A (ja) * | 1995-06-27 | 1997-01-17 | Hitachi Ltd | 表計算方法及びその装置 |
US20010056440A1 (en) * | 2000-06-26 | 2001-12-27 | David Abramson | Parallel execution mechanism for spreadsheets |
CN101038584A (zh) * | 2006-03-14 | 2007-09-19 | 国际商业机器公司 | 用于执行计算处理的系统和方法 |
US20120179687A1 (en) * | 2008-07-10 | 2012-07-12 | Mcafee, Inc. | System and method for data mining and security policy management |
CN101710347A (zh) * | 2009-12-23 | 2010-05-19 | 金蝶软件(中国)有限公司 | 一种对数据表中的数据进行处理的方法和装置 |
CN102004953A (zh) * | 2010-11-09 | 2011-04-06 | 浪潮集团山东通用软件有限公司 | 多维度全面预算的实现方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105095641A (zh) * | 2015-05-29 | 2015-11-25 | 努比亚技术有限公司 | 一种计算空间容量的方法和装置 |
CN105095641B (zh) * | 2015-05-29 | 2018-04-03 | 努比亚技术有限公司 | 一种计算空间容量的方法和装置 |
CN112751334A (zh) * | 2020-12-21 | 2021-05-04 | 中国电力科学研究院有限公司 | 一种基于内存计算架构的电网在线建模的方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN104239686B (zh) | 2017-04-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110599169B (zh) | 数据处理方法、装置、终端及介质 | |
Salahshour et al. | Existence and uniqueness results for fractional differential equations with uncertainty | |
CN103714129B (zh) | 基于条件规则的动态数据结构和关系的构建装置和构建方法 | |
WO2014018641A3 (en) | Mapping entities in data models | |
CN105512336A (zh) | 一种基于Hadoop的海量数据处理方法和装置 | |
CN104123374A (zh) | 分布式数据库中聚合查询的方法及装置 | |
CN103810244A (zh) | 一种基于数据分布的分布式数据存储系统的扩容方法 | |
CN107037978A (zh) | 数据迁移校正方法及系统 | |
CN105808696A (zh) | 一种基于全局和局部特征的跨在线社交网络用户匹配方法 | |
US20200286025A1 (en) | Continuous data quality assessment and monitoring for big data | |
WO2015074466A1 (zh) | 一种数据查询方法及装置 | |
CN105183901A (zh) | 一种数据查询引擎读取数据库表的方法及装置 | |
CN102521299B (zh) | 资源描述框架数据的处理方法 | |
CN103530812A (zh) | 一种基于局部敏感哈希的电网状态相似度量化分析方法 | |
CN111522846A (zh) | 一种基于时序中间态数据结构的数据聚合方法 | |
SE0402280L (sv) | Metod, en dataprogramprodukt samt en bärare för att ange envägslatens i ett datanätverk | |
CN104239686A (zh) | 一种基于内存计算在全面预算中实现公式计算的方法 | |
Zhu et al. | Commodities price dynamic trend analysis based on web mining | |
CN103345536B (zh) | 一种语义关联索引方法 | |
CN110472143A (zh) | 一种信息推送方法、装置、可读存储介质及终端设备 | |
Waziri et al. | A Two‐Step Matrix‐Free Secant Method for Solving Large‐Scale Systems of Nonlinear Equations | |
CN111046280B (zh) | 一种应用fm的跨领域推荐方法 | |
US20170046387A1 (en) | Method and apparatus for querying nondeterministic graph | |
CN105681425B (zh) | 基于分布式存储系统的多节点修复方法及其系统 | |
CN113407587B (zh) | 用于联机分析处理引擎的数据处理方法、装置、设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |