CN103019728B - 一种高效复杂报表解析引擎及其解析方法 - Google Patents

一种高效复杂报表解析引擎及其解析方法 Download PDF

Info

Publication number
CN103019728B
CN103019728B CN201210563189.6A CN201210563189A CN103019728B CN 103019728 B CN103019728 B CN 103019728B CN 201210563189 A CN201210563189 A CN 201210563189A CN 103019728 B CN103019728 B CN 103019728B
Authority
CN
China
Prior art keywords
cell
unit
data set
data
grouping
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.)
Active
Application number
CN201210563189.6A
Other languages
English (en)
Other versions
CN103019728A (zh
Inventor
施明泰
李功新
陈谋坤
林开雄
林立
陈书亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
XIAMEN GREAT POWER GEO INFORMATION TECHNOLOGY Co Ltd
State Grid Corp of China SGCC
State Grid Information and Telecommunication Co Ltd
Original Assignee
XIAMEN GREAT POWER GEO INFORMATION TECHNOLOGY Co Ltd
State Grid Corp of China SGCC
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by XIAMEN GREAT POWER GEO INFORMATION TECHNOLOGY Co Ltd, State Grid Corp of China SGCC filed Critical XIAMEN GREAT POWER GEO INFORMATION TECHNOLOGY Co Ltd
Priority to CN201210563189.6A priority Critical patent/CN103019728B/zh
Publication of CN103019728A publication Critical patent/CN103019728A/zh
Application granted granted Critical
Publication of CN103019728B publication Critical patent/CN103019728B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明提供了一种高效复杂报表解析引擎及其解析方法,其通过分组运算解析、多源交叉运算解析及动态片间运算解析,从而能根据报表模板规则中配置的数据源、聚集函数、分组函数、计算表达式,属性表达式、显示表达式、统计图表达式等进行一一动态解析,完成报表的数据获取、分组、汇总计算、片间数据计算、统计图数据钻取等的高效复杂报表解析引擎及其解析方法。通过该引擎方法能最终生成一张计算好的二维的数据报文。将数据报文发送到前端报表展示工具,就可以渲染出一张用户所需要报表,并可导出该报表。解决了用户不用编程可以制作出复杂报表的应用需求。

Description

一种高效复杂报表解析引擎及其解析方法
技术领域
本发明涉及计算机报表处理领域,尤其是指一种高效复杂报表解析引擎及其解析方法。
背景技术
报表就是用表格、图表等格式来动态显示数据,在没有计算机以前,人们利用纸和笔来记录数据,比如:民间常常说的豆腐帐,就是卖豆腐的每天将自己的卖出的豆腐记在一个本子上,然后每月都要汇总算算。这种情况下,报表数据和报表格式是紧密结合在一起的,都在同一个本子上。数据也只能有一种,几乎只有记账的人才能理解的表现形式,且这种形式难于修改。
当计算机出现之后,人们利用计算机处理数据和界面设计的功能来生成、展示报表。计算机上的报表的主要特点是数据动态化,格式多样化,并且实现报表数据和报表格式的完全分离,用户可以只修改数据,或者只修改格式。
报表工具的核心在于提高报表开发效率和后期维护性,提高用户体验,减少开发成本。
报表工具的最大价值在于学习成本低,让业务人员实现做报表,甚至快速构建报表展现系统。如果一个报表工具能让最终业务人员容易学习和使用,一个企业所有信息系统就可以采用同一个报表工具,没有必要每个信息系统用一个报表解决方案。
很多人对于报表还有个偏见,认为同样的报表,Excel几乎都能做出来,为什么还要花大量的人力物力去开发专门的报表工具呢?因为Excel与专业的报表工具应用场景存在许多不同。
一、动态刷新报表数据。Excel能够绘制出非常复杂多样的报表,也可以在表内定义复杂的数据关系,但原始数据及表的样式都只能是确定的,每张报表都需要临时手工制作,而不能根据业务系统数据库中的数据自动更新统计报表。举个简单例子,一张销售订单的明细表,当数据库中增加了一条订单的时候,Excel表格数据不可能自动更新。Web报表工具制作出来的报表,数据直接取自数据库,当数据库中的数据变化时,Web报表工具自动计算出新的报表。
二、对报表实现权限控制。地区经理销售经理和销售总监看到报表时有存在差别的,如果用Excel来做报表,需要为销售经理和销售总监每人制作一张Excel表;而Web报表工具能根据不同角色对应的数据权限调出相应的数据,一张Web报表模板就能解决问题。
三、数据填报功能。如果部门100个人,每人都有一张员工Excel的员工通信录。当某个人电话号码变动时候,需要更新Excel通信录,然后给每个人重新发一份Excel表样;用Web报表工具做一张可以更新数据的填报表,员工只需要修改电话号码,并且将信息入库,其他员工再次打开数据库时候,信息就全部更新了。
Web报表工具在处理报表有上述优势,但作为专业的报表软件来说,对应用人员要求也相对较高,业务人员很难直接使用,而且大多数报表工具在报表设计上远不如Excel方便,故而也无法取代Excel,两种产品会在较长时期内相辅相成。
一个好的Web报表工具应当在展现方式及操作习惯尽量与Excel相似,减少用户的学习时间,能够无缝的导入导出Excel,易于与权限系统集成,并且具有数据填报功能。
在逝去时光中,很多外资企业虽然携带优秀管理和成熟技术来到中国,却遭遇水土不服,如雅虎、亚马逊,他们的命运不是被收购就是在亏损中苦苦挣扎。作为国内报表市场的启蒙者—水晶报表也同样面临这种困境。这个老牌的报表从1988年开始开发以来,它几乎在一夜之间成为报表软件业的标准。很多产品,包括Birt、JasperReport、StyleReport等产品,早期版本几乎都是以水晶报表的操作风格为蓝本设计的。但是在中国水晶报表遇到如下几个问题:
1.多数据源关联交叉表是非常常见的一种报表样式。水晶报表解决方案是,通过编写复杂视图或子报表来解决。但是,如果遇到复杂需求,写一个复杂视图就是一件不容易的事情,同时还要面对视图性能的挑战。使用子报表解决,可能在格式上有麻烦(比如表格的对齐),也有可能在计算上有困难(主子报表之间往往只传递参数,无法直接引用数据进行公式计算。
2.中国业务人员习惯了Excel的表格式报表,积累了大量用Excel手工制作的报表,甚至给系统集成商描述报表需求时候也直接丢给他们一堆Excel文件。由于种种历史原因中国业务人员喜欢Excel类的报表。另外,中国报表样式非常复杂,需要类Excel这种布局粒度小,更加灵活的报表设计器。以上种种原因,让中国用户对水晶报表条带式的报表工具选择放弃。
3.水晶报表的部署需要独立的服务器。但是中国大量信息系统,特别一些大型的项目,希望报表产品很容易地部署在大型主机或者大型应用服务器集群上,可以把应用服务器体系的高性能充分利用,包括使用集群、连接池等等。
4.很多业务系统,不光需要通过报表工具把业务数据从数据库取出来展现在前端,而且希望能在前端修改数据。虽然用表单工具+水晶报表可以解决该问题。但是遇到同样问题是无法做到在展现统计数据的同时可以修改数据,那么这种解决方案就很难满足国内复杂多变的报表需求。
复杂多变的中国式报表更增加了报表系统的开发难度,特别是对多源、分片、不规则分组、片间计算等需求。多源是指一张报表的数据来自多个数据表,很难用一句SQL写出,甚至多个不同的异构数据库。分片是指一张报表的数据来自多个数据分片,每片规则不同,没有一套作用于整个报表的规则,并列分组或列表(行列方向均可能有)非常常见。不规则分组是指一张报表数据分组看不出规律(常常只能穷举,或者编写复杂的条件表达式,每一组的条件表达式均不相同),所有分组信息不一定全部出现在分组结果中,个别分组还可能重复出现,次序也与原数据记录无关。片间计算是指一张报表计算没有固定所在行或所在列,通过需要跨不同行或跨不同列进进行运算通过得出中间结果。要设计这样的报表,通常需要花费大量的时间和精力编写烦琐的代码,而用户在使用过程中报表计算规则可能不断发生变化,开发人员就要反复的修改代码,从而使得系统越来越复杂,最终成为难以收拾的烂摊子。为适应用户需求的变化,不得不考虑二次开发者重新设计,这将造成大量的重复劳动和资源的浪费,而且可靠性差、难以维护。
为了解析上述问题,时下Web报表工具亟需一种降低用户设计复杂报表难度,增强设计复杂报表灵活性的动态报表计算解析方法及解析引擎。
发明内容
本发明的目的在于克服了上述缺陷,提供一种能对复杂的报表进行自动解析规则模板中设置的数据源、数据集、计算表达式等,完成报表数据的加载、预处理、转换、计算的一种高效复杂报表解析引擎及其解析方法。
本发明的目的是这样实现的:一种高效复杂报表解析方法,它包括,
A)、分组运算解析,根据报表规则模板设置获取分组表达式,对报表原数据按照设置的规则进行的分组计算,从而得到包含各自组内所有行数据集的数据分组的步骤;具体为:
A1)、元单元格计算,以遍历方式根据元单元格地址取得元单元格对象,如果元单元格对象不存在,则获取下一个元单元格对象,如果元单元格对象存在,则获取当前元单元格对象,并判断当前单元格对象的表达式是否是为分组表达式,是则继续步骤,否则结束本次计算继续遍历;
A2)、解析分组表达式,根据获取的分组表达式,获取目标数据集名称、目标分组字段及过滤表达式,继续步骤;
A3)、目标数据集存在判断,根据取得的目标数据集名称,从报表上下文中尝试加载数据集,若加载不到数据集,直接此处返回步骤A1继续遍历,若加载到数据集则继续步骤;
A4)、分组目标列存在判断,根据目标分组字段,判断加载到的数据集是否存在当前分组字段,若不存在,直接返回步骤A1继续遍历,若存在则遍历目标数据集,根据分组字段在当前数据列取得对应的数据值;
A5)、分组规则匹配计算,解析分组规则表达式,取得分组规则,然后根据取得的数据值输入到分组规则进行运算,得出分组名及分组数据集;
A6)、设置分组,根据分组规则匹配获取分组名为键,以分组数据集为值,添加到分组存储区中,进入下一数据行分组计算,直到所有数据行都计算完毕,结束分组计算;
B)、多源交叉运算解析,对多个数据源间交叉计算的报表确定计算的数据范围,对报表中单元格计算表式所在的列进行横向扩展,所在的行进行纵向扩展进行计算的步骤;具体为:
B1)、交叉单元格运算,根据输入的单元格,判断当前单元格所在的行是否存在纵向扩展,所在的列是否存在横向扩展,存在则该单元格为交叉单元格,继续步骤,不存在则直接结束本次解析;
B2)、数据集光标是否更改,根据输入的交叉单元格取得交叉单元格的计算表达式,根据计算表式,取得当前计算所在行所在列的数据值,判断是否需要设置计算所在目标数据集的位置,若不需要,则返回步骤B1,需要则继续步骤;
B3)、设置左主格数据集,获取交叉单元格所在行最左边的计算单元格并设置为左主格数据集;
B4)、判断当前计算光标是否设置到左主格数据集,如果是则需要获取交叉单元格所在列最顶上的计算单元格,设置上主格数据为当前运算光标;否则求左主格数据集与上主格数据集的交集,并设置为当前运算目标数据光标进入下一次迭代计算,直到所有单元格计算完成;
C)、动态片间运算解析,对动态报表扩展单元格中属于引用单元格的表达式进行判断,然后获取引用单元格,对存在的既纵向扩展又横向扩展的单元格的函数表达式全部进行计算的步骤;具体为:
C1)、片间计算表达式判断,根据输入的单元格,获取当前单元格计算表达式,判断计算表达式是否属于引用单元格表达式,若不是则直接结束本次解析,若是则继续步骤;
C2)、预编译,对输入的引用单元格表达式进行表达式预编译解析,包括对引用单元格合法性判断及引用初始化计算,而后继续步骤;
C3)、语法解析,将预编译中间结果推送到解析引擎进行解析取得函数表达式,然后获取引用单元格,若获取失败则直接结束本次解析,成功则继续步骤;
C4)、根据上一步获取引用单元格中的函数表达式进行运算,根据获取的引用单元格,判断当前单元格是否已经计算,若是则直接结束本次解析,否则继续步骤;
C5)、是否为扩展单元格,判断引用单元格是否为扩展单元格,若是则保存扩展单元格ID与元单元格的对应关系,并将当前扩展单元格加入到未计算单元格堆栈中;否则保存单元格ID与当前单元格已计算出来的值的对应关系后,进入下一次迭代计算,直到所有单元格计算完毕,然后从未计算单元格堆栈一个个取出进行计算,如果还是无法计算,抛出计算异常并终止计算。
本发明还提供了一种高效复杂报表解析引擎,它包括,
分组运算解析组件,用于根据报表规则模板设置获取分组表达式,对报表原数据按照设置的规则进行的分组计算,从而得到包含各自组内所有行数据集的数据分组;
多源交叉运算解析组件,用于对多个数据源间交叉计算的报表确定计算的数据范围,对报表中单元格计算表式所在的列进行横向扩展,所在的行进行纵向扩展进行计算;
动态片间运算解析组件,用于对动态报表扩展单元格中属于引用单元格的表达式进行判断,然后获取引用单元格,对存在的既纵向扩展又横向扩展的单元格的函数表达式全部进行计算;
所述分组运算解析组件具体包括,
元单元格计算单元,用于以遍历方式根据元单元格地址取得元单元格对象,如果元单元格对象不存在,则获取下一个元单元格对象,如果元单元格对象存在,则获取当前元单元格对象,并判断当前单元格对象的表达式是否是为分组表达式,是则送至解析分组表达式单元,否则结束本次计算继续遍历;
解析分组表达式单元,用于根据元单元格计算单元获取的分组表达式,获取目标数据集名称、目标分组字段及过滤表达式,然后送至目标数据集存在判断单元;
目标数据集存在判断单元,用于根据解析分组表达式单元取得的目标数据集名称,从报表上下文中尝试加载数据集,若加载不到数据集,直接此处返回元单元格计算单元继续遍历,若加载到数据集则送到分组目标列存在判断单元;
分组目标列存在判断单元,用于根据解析分组表达式单元取得的目标分组字段,判断目标数据集存在判断单元加载到的数据集是否存在当前分组字段,若不存在,直接返回元单元格计算单元继续遍历,若存在则遍历目标数据集,根据分组字段在当前数据列取得对应的数据值,送到分组规则匹配计算单元;
分组规则匹配计算单元,用于解析分组规则表达式,取得分组规则,然后根据取得的数据值输入到分组规则进行运算,得出分组名及分组数据集;
设置分组单元,用于根据分组规则匹配计算单元取得的分组规则匹配获取分组名为键,以分组数据集为值,添加到分组存储区中,进入下一数据行分组计算,直到所有数据行都计算完毕,结束分组计算;
所述多源交叉运算解析组件具体包括,
交叉单元格运算单元,用于根据输入的单元格,判断当前单元格所在的行是否存在纵向扩展,所在的列是否存在横向扩展,存在则该单元格为交叉单元格,转到数据集光标是否更改单元,不存在则直接结束本次解析;
数据集光标是否更改单元,用于根据输入的交叉单元格取得交叉单元格的计算表达式,根据计算表式,取得当前计算所在行所在列的数据值,判断是否需要设置计算所在目标数据集的位置,若不需要,则转回交叉单元格运算单元,需要则转到设置左主格数据集单元;
设置左主格数据集单元,用于获取交叉单元格所在行最左边的计算单元格并设置为左主格数据集,而后转到左主格数据集判断单元;
左主格数据集判断单元,用于判断当前计算光标是否设置到左主格数据集,如果是则需要获取交叉单元格所在列最顶上的计算单元格,设置上主格数据为当前运算光标;否则求左主格数据集与上主格数据集的交集,并设置为当前运算目标数据光标进入下一次迭代计算,直到所有单元格计算完成;
所述动态片间运算解析组件具体包括,
片间计算表达式判断单元,用于根据输入的单元格,获取当前单元格计算表达式,判断计算表达式是否属于引用单元格表达式,若不是则直接结束本次解析,若是则送到预编译单元;
预编译单元,用于对片间计算表达式判断单送来的引用单元格表达式进行表达式预编译解析,包括对引用单元格合法性判断及引用初始化计算,而后送到语法解析单元;
语法解析单元,用于将预编译中间结果推送到解析引擎进行解析取得函数表达式,然后获取引用单元格,若获取失败则直接结束本次解析,成功则转到获取引用单元格单元;
获取引用单元格单元,用于根据上一步获取引用单元格中的函数表达式进行运算,根据获取的引用单元格,判断当前单元格是否已经计算,若是则直接结束本次解析,否则转到是否为扩展单元格单元;
是否为扩展单元格单元,用于判断获取引用单元格单元获取的引用单元格是否为扩展单元格,若是则保存扩展单元格ID与元单元格的对应关系,并将当前扩展单元格加入到未计算单元格堆栈中;否则保存单元格ID与当前单元格已计算出来的值的对应关系后,进入下一次迭代计算,直到所有单元格计算完毕,然后从未计算单元格堆栈一个个取出进行计算,如果还是无法计算,抛出计算异常并终止计算。
与现有技术相比,本发明有益效果在于提供了一个能根据报表模板规则中配置的数据源、聚集函数、分组函数、计算表达式,属性表达式、显示表达式、统计图表达式等进行一一动态解析,完成报表的数据获取、分组、汇总计算、片间数据计算、统计图数据钻取等的高效复杂报表解析引擎及其解析方法。通过该引擎方法能最终生成一张计算好的二维的数据报文。将数据报文发送到前端报表展示工具,就可以渲染出一张用户所需要报表,并可导出该报表。解决了用户不用编程可以制作出复杂报表的应用需求。
附图说明
下面结合附图详述本发明的具体结构
图1为本发明的分组运算解析的具体步骤流程图;
图2为本发明的多源交叉运算解析的具体步骤流程图;
图3为本发明的动态片间运算解析的具体步骤流程图;
图4为本发明的具体实施例的配置数据集数据源示例图;
图5为本发明的具体实施例的配置报表表达式与显示图形示例图;
图6为本发明的具体实施例的通过配置后进行后台解析后效果图;
图7为本发明的具体实施例的配置解析的折线效果图;
图8为本发明的具体实施例的配置解析的三维饼图效果图;
图9为本发明的具体实施例的配置解析的柱状与警戒位效果图。
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
对应背景技术中所提出的问题,传统的报表开发工具虽然可以解决上述问题,但开发工具较为庞大,分为胖客户端设计器,服务端报表解析,无形中增加了报表维护量。加上其设计模型比较复杂,给开发、系统集成带来不少的难度。
为此,本发明提出发一个轻量级动态报表计算引擎及其解析方法,客户可以通过浏览器直接进行报表设计、预览,报表引擎组件体积比较小,可以直接嵌入到已有的生产系统中进行无缝整合。不仅提高系统开发和维护效率,降低开发成本,又可以增加系统的灵活性,适应用户需求的不断变化。解决了用户不用编程可以制作出复杂报表的应用需求。
本发明提供了一种高效复杂报表解析方法,它包括,
A)、分组运算解析,根据报表规则模板设置获取分组表达式,对报表原数据按照设置的规则进行的分组计算,从而得到包含各自组内所有行数据集的数据分组的步骤;
此步骤主要实现原理根据分组表达式得出分组的规则,然后把相同规则数据行划分到一个指定分区。
B)、多源交叉运算解析,对多个数据源间交叉计算的报表确定计算的数据范围,对报表中单元格计算表式所在的列进行横向扩展,所在的行进行纵向扩展进行计算的步骤;
此步骤主要实现原理根据一个单元格在横向扩展和纵向扩展形成的一个交叉的数据区域,再根据扩展格与元单元格映射关系来进行交叉的数据区域计算。
C)、动态片间运算解析,对动态报表扩展单元格中属于引用单元格的表达式进行判断,然后获取引用单元格,对存在的既纵向扩展又横向扩展的单元格的函数表达式全部进行计算的步骤。
此步骤主要实现原理根据可扩展元单格设置的不同数据源,当单元格扩展时,就形成了各自单元格对应数据源一个数据片区。如果有多个不同数据源就形成了多个数据片区,根据单元格地址就可以获取不同数据分区中的数值。
上述高效复杂报表解析方法,通过分组运算解析解决了无序二维数据的数据整理过程,多源交叉运算在分组运算的基础上,解决元单元格在纵向和横向扩展时,形成交叉数据计算问题,动态片间运算在前面两个处理环节的基础,解决不同数据源间数据计算问题。
参见图1,上述A的步骤具体包括,
A1)、元单元格解析,以遍历方式根据元单元格地址取得元单元格对象,如果元单元格对象不存在,则获取下一个元单元格对象,如果元单元格对象存在,则获取当前元单元格对象,并判断当前单元格对象的表达式是否是为分组表达式,是则继续步骤,否则结束本次计算;
A2)、解析分组表达式,根据获取的分组表达式,获取目标数据集名称、目标分组字段及过滤表达式,继续步骤;
A3)、目标数据集存在判断,根据取得的目标数据集名称,从报表上下文中尝试加载数据集,若加载不到数据集,直接此处返回步骤A1继续遍历,若加载到数据集则继续步骤;
A4)、分组目标列存在判断,根据目标分组字段,判断加载到的数据集是否存在当前分组字段,若不存在,直接返回步骤A1继续遍历,若存在则遍历目标数据集,根据分组字段在当前数据列取得对应的数据值;
A5)、分组规则匹配计算,解析分组规则表达式,取得分组规则,然后根据取得的数据值输入到分组规则进行运算,得出分组名及分组数据集。
A6)、设置分组,根据分组规则匹配获取分组名为键,以分组数据集为值,添加到分组存储区中,进入下一数据行分组计算,直到所有数据行都计算完毕,结束分组计算。
经过上述分组运算解析的几个步骤的处理,把原来一个二维无序数据集划分为一个有规则分组序列,每个分组包含了符合相同规则数据行,每个分组可以进行二次分组。
例如,在用电量统计表中,通过上述方法可首先根据区域分组,分为华北、华南等地区之后,把华南地区这个分组根据省份再次分组,分为福建、广东等。
参见图2,上述B的步骤具体包括,
B1)、交叉单元格运算,根据输入的单元格,判断当前单元格所在的行是否存在纵向扩展,所在的列是否存在横向扩展,存在则该单元格为交叉单元格,继续步骤,不存在则直接结束本次解析;
B2)、数据集光标是否更改,根据输入的交叉单元格取得交叉单元格的计算表达式,根据计算表式,取得当前计算所在行所在列的数据值,判断是否需要设置计算所在目标数据集的位置,若不需要,则返回步骤B1,需要则继续步骤;
B3)、设置左主格数据集,获取交叉单元格所在行最左边的计算单元格并设置为左主格数据集;
B4)、判断当前计算光标是否设置到左主格数据集,如果是则需要获取交叉单元格所在列最顶上的计算单元格,设置上主格数据为当前运算光标;否则求左主格数据集与上主格数据集的交集,并设置为当前运算目标数据光标进入下一次迭代计算。直到所有单元格计算完成。
经过上述多源交叉运算解析的几个步骤的处理,计算出每个可扩展元单元格扩展出来单元格范围,也就是对应计算之后数据区单元格。这样要获取不同数据范围的数据可以通过这个元单元格进行推算查找。
例如,用在统计居民每个月用电量比上个月多用百分比时,统计这个月用电量之后,需要获取到上个月用户量,进行作百分计算。就可以元单元格扩展关系来获取。
参见图3,上述C的步骤具体包括,
C1)、片间计算表达式判断,根据输入的单元格,获取当前单元格计算表达式,判断计算表达式是否属于引用单元格表达式,若不是则直接结束本次解析,若是则继续步骤;
C2)、预编译,对输入的引用单元格表达式进行表达式预编译解析,包括对引用单元格合法性判断及引用初始化计算,而后继续步骤;
C3)、语法解析,将预编译中间结果推送到解析引擎进行解析取得函数表达式,然后获取引用单元格,若获取失败则直接结束本次解析,成功则继续步骤;
C4)、根据上一步获取引用单元格中的函数表达式进行运算,根据获取的引用单元格,判断当前单元格是否已经计算,若是则直接结束本次解析,否则继续步骤;
C5)、是否为扩展单元格,判断引用单元格是否为扩展单元格,若是则保存扩展单元格ID与元单元格的对应关系,并将当前扩展单元格加入到未计算单元格堆栈中;否则保存单元格ID与当前单元格已计算出来的值的对应关系后,进入下一次迭代计算,直到所有单元格计算完毕,然后从未计算单元格堆栈一个个取出进行计算。如果还是无法计算,抛出计算异常并终止计算。
经过上述动态片间运算解析的几个步骤的处理,计算出每个可扩展元单元格扩展出来单元格与元单元格的映射关系,也就是可以根据一个元单元格就可以计算出扩展多少个单元格,以及每个单元格数值。这样每个可扩展单元格根据数据源不同,生成了各自的一个数据片区。如果需要计算不同数据片区中的数据时,就可以根据元单元格与扩展出来单元格的映射关系进行推算。
本发明还提供了一种高效复杂报表解析引擎,复杂报表解析引擎是分解为一系列的解析组件,包括分组运算解析组件、多源交叉运算解析组件、动态片间运算解析组件等,各个组件相对独立,各尽其责,共同完成报表计算解析。
分组运算解析组件,用于根据报表规则模板设置获取分组表达式,对报表原数据按照设置的规则进行的分组计算,从而得到包含各自组内所有行数据集的数据分组。
此组件主要实现原理根据分组表达式得出分组的规则,然后把相同规则数据行划分到一个指定分区。
多源交叉运算解析组件,用于对多个数据源间交叉计算的报表确定计算的数据范围,对报表中单元格计算表式所在的列进行横向扩展,所在的行进行纵向扩展进行计算。
此组件主要实现原理根据一个单元格在横向扩展和纵向扩展形成的一个交叉的数据区域,再根据扩展格与元单元格映射关系来进行交叉的数据区域计算。
动态片间运算解析组件,用于对动态报表扩展单元格中属于引用单元格的表达式进行判断,然后获取引用单元格,对存在的既纵向扩展又横向扩展的单元格的函数表达式全部进行计算。
此组件主要实现原理根据可扩展元单格设置的不同数据源,当单元格扩展时,就形成了各自单元格对应数据源一个数据片区。如果有多个不同数据源就形成了多个数据片区,根据单元格地址就可以获取不同数据分区中的数值。
上述高效复杂报表解析引擎,通过分组运算解析解决了无序二维数据的数据整理过程,多源交叉运算在分组运算的基础上,解决元单元格在纵向和横向扩展时,形成交叉数据计算问题,动态片间运算在前面两个处理环节的基础,解决不同数据源间数据计算问题。
较佳的,上述分组运算解析组件具体包括,
元单元格计算单元,用于以遍历方式根据元单元格地址取得元单元格对象,如果元单元格对象不存在,则获取下一个元单元格对象,如果元单元格对象存在,则获取当前元单元格对象,并判断当前单元格对象的表达式是否是为分组表达式,是则送至解析分组表达式单元,否则结束本次计算继续遍历;
解析分组表达式单元,用于根据元单元格计算单元获取的分组表达式,获取目标数据集名称、目标分组字段及过滤表达式,然后送至目标数据集存在判断单元;
目标数据集存在判断单元,用于根据解析分组表达式单元取得的目标数据集名称,从报表上下文中尝试加载数据集,若加载不到数据集,直接此处返回元单元格计算单元继续遍历,若加载到数据集则送到分组目标列存在判断单元;
分组目标列存在判断单元,用于根据解析分组表达式单元取得的目标分组字段,判断目标数据集存在判断单元加载到的数据集是否存在当前分组字段,若不存在,直接返回元单元格计算单元继续遍历,若存在则遍历目标数据集,根据分组字段在当前数据列取得对应的数据值,送到分组规则匹配计算单元;
分组规则匹配计算单元,用于解析分组规则表达式,取得分组规则,然后根据取得的数据值输入到分组规则进行运算,得出分组名及分组数据集;
设置分组单元,用于根据分组规则匹配计算单元取得的分组规则匹配获取分组名为键,以分组数据集为值,添加到分组存储区中,进入下一数据行分组计算,直到所有数据行都计算完毕,结束分组计算。
经过上述分组运算解析的几个组件的处理,可把原来一个二维无序数据集划分为一个有规则分组序列,每个分组包含了符合相同规则数据行,每个分组可以进行二次分组。
较佳的,上述多源交叉运算解析组件具体包括,
交叉单元格运算单元,用于根据输入的单元格,判断当前单元格所在的行是否存在纵向扩展,所在的列是否存在横向扩展,存在则该单元格为交叉单元格,转到数据集光标是否更改单元,不存在则直接结束本次解析;
数据集光标是否更改单元,用于根据输入的交叉单元格取得交叉单元格的计算表达式,根据计算表式,取得当前计算所在行所在列的数据值,判断是否需要设置计算所在目标数据集的位置,若不需要,则转回交叉单元格运算单元,需要则转到设置左主格数据集单元;
设置左主格数据集单元,用于获取交叉单元格所在行最左边的计算单元格并设置为左主格数据集,而后转到左主格数据集判断单元;
左主格数据集判断单元,用于判断当前计算光标是否设置到左主格数据集,如果是则需要获取交叉单元格所在列最顶上的计算单元格,设置上主格数据为当前运算光标;否则求左主格数据集与上主格数据集的交集,并设置为当前运算目标数据光标进入下一次迭代计算,直到所有单元格计算完成。
经过上述多源交叉运算解析的几个组件的处理,计算出每个可扩展元单元格扩展出来单元格范围,也就是对应计算之后数据区单元格。这样要获取不同数据范围的数据可以通过这个元单元格进行推算查找。
较佳的,上述动态片间运算解析组件具体包括,
片间计算表达式判断单元,用于根据输入的单元格,获取当前单元格计算表达式,判断计算表达式是否属于引用单元格表达式,若不是则直接结束本次解析,若是则送到预编译单元;
预编译单元,用于对片间计算表达式判断单送来的引用单元格表达式进行表达式预编译解析,包括对引用单元格合法性判断及引用初始化计算,而后送到语法解析单元;
语法解析单元,用于将预编译中间结果推送到解析引擎进行解析取得函数表达式,然后获取引用单元格,若获取失败则直接结束本次解析,成功则转到获取引用单元格单元;
获取引用单元格单元,用于根据上一步获取引用单元格中的函数表达式进行运算,根据获取的引用单元格,判断当前单元格是否已经计算,若是则直接结束本次解析,否则转到是否为扩展单元格单元;
是否为扩展单元格单元,用于判断获取引用单元格单元获取的引用单元格是否为扩展单元格,若是则保存扩展单元格ID与元单元格的对应关系,并将当前扩展单元格加入到未计算单元格堆栈中;否则保存单元格ID与当前单元格已计算出来的值的对应关系后,进入下一次迭代计算,直到所有单元格计算完毕,然后从未计算单元格堆栈一个个取出进行计算,如果还是无法计算,抛出计算异常并终止计算。
经过上述动态片间运算解析的几个组件的处理,计算出每个可扩展元单元格扩展出来单元格与元单元格的映射关系,也就是可以根据一个元单元格就可以计算出扩展多少个单元格,以及每个单元格数值。这样每个可扩展单元格根据数据源不同,生成了各自的一个数据片区。如果需要计算不同数据片区中的数据时,就可以根据元单元格与扩展出来单元格的映射关系进行推算。
综上所述,本发明提供了实现复杂报表动态解析的方法,根据报表模板规则中配置的数据源、聚集函数、分组函数、计算表达式,属性表达式、显示表达式、统计图表达式等,输入到动态报表计算引擎中相应的组件进行一一解析,完成报表的数据获取、分组、汇总计算、片间数据计算等,最终生成一张计算好的二维的数据报文。将数据报文发送到前端报表展示工具,就可以渲染出一张用户所需要报表。根据报表导出。
具体实施例:
本发明采用的实例为通过在福建全省的雷电观测站,对福建省电力公司下辖各地市、区县、直属县电力公司的区域范围内所监测到的雷电数据进行报表统计与各种图表的展现,通过图表与数据结合的更加直观、更加友好化展现。
参见图4为配置数据集数据源示例图。
参见图5为配置报表表达式与显示图形示例图。
对全省各地市、区县、直属县电力公司监测的雷电个数、地区面积进行统计求和,通过报表工具先进行分组成求和统计组,再通过单元格求和函数配置对单元格数据进行统计,将函数配置信息进行保存,后台自动通过函数引擎算法进行数据求和统计,同时并将统计信息反馈回页面报表进行展现。传统报表的统计求和不能进行跨数据集,而报表工具可通过配置跨数据集进行根据求和函数得出求和统计的数据。在配置求和统计函数时,对求和统计函数进行前端配置校验,如:单元格不存在,求和统计函数名称错误,函数名称与单元格定义需要用括号进行分开等方法校验配置是否符合报表的规范及准确性。
对全省各地市、区县、直属县电力公司监测的落雷个数进行密度求平均、同时对各单位设备遭雷击的次数进行求平均,通过报表工具进行分组求平均,再通过单元格进行求平均函数的配置,将求平均配置信息进行保存,后台自动通过函数解析引擎对数据的平均值进行运算,运算完成后将信息反馈回页面报表进行展现。在传统报表的求平均数时,先要将所有值进行统计,并进行相关数据的除法进才能得到平均数;同时传统报表也不支持跨数据集进行平均数求值;而报表工具可通过跨数据集配置对跨数据集进行运算,并只需要对单元格进行配置定义成分组后的求平均函数进行保存,即可通过后台报表的函数求平均解析引擎进行函数解析,从而得到正确的函数值。同时配置求平均函数的前端配置也有进行报表函数的规范进行校验。如:基本的跨数据集名称与字段名称是否存在或者名称是否正确,求平均的函数名称是否配置填写正确,函数表达式是否填写正确等。
对全省各地市、区县、直属县电力公司监测的雷电的最大最小的电流幅值进行排序,通过报表分组配置中的最大、最小函数进行分组配置,然后将单元格配置成最大、最小函数,将值保存后,后台自动运行函数算法解析引擎得出最大、最小数据值反馈回报表页面展现。传统报表中只能进行从大到小或者从小到大进行数据排序,而不能实现所有数据没有进行排列的情况下抽取出最大值或者最小值,同时也不支持对最大值或最小值的配置等功能,报表工具通过配置最大或最小函数对数据的最大、最小值获得,同时也支持跨数据集配置运算等。在配置最大、最小函数数据单元格时,也有一定的前端配置校验规范与提示。如:数据集或者数据集字段不存在,数据表达式运用非法字符(、。?等),函数名称不正确,单元格不能定义成环路等信息校验。
对全省各地市、区县、直属县电力公司监测统计的雷击次数进行三维柱状图或者二维柱状图表展现;对全省各地市、区县、直属县电力公司地域面积统计进行三维饼图或者二维饼图展现;对全省各地市、区县、直属县电力公司监测的雷电个数进行曲线图表展现。通过多个单元格合并成一个单元格,在单元格中选择图表配置,选择单元格中需要配置的图表与数据源,如:二维柱状图、三维柱状图,二维饼图、三维饼图、三维折线图、条形框图等各种图表配置,数据源为C1或C2等不同单元格的数据,在进行图表配置完成后保存,后台解析引擎根据图表配置进行解析,将最后结果展现在报表页面上。传统报表工具不能实现配置三维柱状图,同时也不能对柱状图各颜色的配置等。
参见图6为通过分组运算解析组件、多源交叉运算解析组件、动态片间运算解析组件解析后效果图。
参见图7为通过分组运算解析组件生成数据并结合折线图展现效果图。
参见图8为通过分组运算解析组件生成数据并结合三维饼图展现效果图。
参见图9为通过分组运算解析组件生成数据并结合柱状图展现效果图。
通过以上实例说明报表工具设置的各类报表规则模板,并发送到后端的报表解析引擎进行一系列的函数解析与图表分析、数据运算,成功生成用户所需各类统计报表。从而验证解析引擎在报表的处理上实现各种复杂报表的运算执行高效率,同时实现了在传统报表中所不具备的功能点,使用户对报表的友好性与体验达到一致的好评。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (2)

1.一种高效复杂报表解析方法,其特征在于:它包括,
A)、分组运算解析,根据报表规则模板设置获取分组表达式,对报表原数据按照设置的规则进行的分组计算,从而得到包含各自组内所有行数据集的数据分组的步骤;具体为:
A1)、元单元格计算,以遍历方式根据元单元格地址取得元单元格对象,如果元单元格对象不存在,则获取下一个元单元格对象,如果元单元格对象存在,则获取当前元单元格对象,并判断当前单元格对象的表达式是否是为分组表达式,是则转向当前步骤之后的下一步骤,否则结束本次计算继续遍历;
A2)、解析分组表达式,根据获取的分组表达式,获取目标数据集名称、目标分组字段及过滤表达式,转向当前步骤之后的下一步骤;
A3)、目标数据集存在判断,根据取得的目标数据集名称,从报表上下文中尝试加载数据集,若加载不到数据集,直接此处返回步骤A1继续遍历,若加载到数据集则转向当前步骤之后的下一步骤;
A4)、分组目标列存在判断,根据目标分组字段,判断加载到的数据集是否存在当前分组字段,若不存在,直接返回步骤A1继续遍历,若存在则遍历目标数据集,根据分组字段在当前数据列取得对应的数据值;
A5)、分组规则匹配计算,解析分组规则表达式,取得分组规则,然后根据取得的数据值输入到分组规则进行运算,得出分组名及分组数据集;
A6)、设置分组,根据分组规则匹配获取分组名为键,以分组数据集为值,添加到分组存储区中,进入下一数据行分组计算,直到所有数据行都计算完毕,结束分组计算;
B)、多源交叉运算解析,对多个数据源间交叉计算的报表确定计算的数据范围,对报表中单元格计算表达式所在的列进行横向扩展,所在的行进行纵向扩展进行计算的步骤;具体为:
B1)、交叉单元格运算,根据输入的单元格,判断当前单元格所在的行是否存在纵向扩展,所在的列是否存在横向扩展,存在则该单元格为交叉单元格,转向当前步骤之后的下一步骤,不存在则直接结束本次解析;
B2)、数据集光标是否更改,根据输入的交叉单元格取得交叉单元格的计算表达式,根据计算表式,取得当前计算所在行所在列的数据值,判断是否需要设置计算所在目标数据集的位置,若不需要,则返回步骤B1,需要则转向当前步骤之后的下一步骤;
B3)、设置左主格数据集,获取交叉单元格所在行最左边的计算单元格并设置为左主格数据集;
B4)、判断当前计算光标是否设置到左主格数据集,如果是则需要获取交叉单元格所在列最顶上的计算单元格,设置上主格数据为当前运算光标;否则求左主格数据集与上主格数据集的交集,并设置为当前运算目标数据光标进入下一次迭代计算,直到所有单元格计算完成;
C)、动态片间运算解析,对动态报表扩展单元格中属于引用单元格的表达式进行判断,然后获取引用单元格,对存在的既纵向扩展又横向扩展的单元格的函数表达式全部进行计算的步骤;具体为:
C1)、片间计算表达式判断,根据输入的单元格,获取当前单元格计算表达式,判断计算表达式是否属于引用单元格表达式,若不是则直接结束本次解析,若是则转向当前步骤之后的下一步骤;
C2)、预编译,对输入的引用单元格表达式进行表达式预编译解析,包括对引用单元格合法性判断及引用初始化计算,而后转向当前步骤之后的下一步骤;
C3)、语法解析,将预编译中间结果推送到解析引擎进行解析取得函数表达式,然后获取引用单元格,若获取失败则直接结束本次解析,成功则转向当前步骤之后的下一步骤;
C4)、根据上一步获取引用单元格中的函数表达式进行运算,根据获取的引用单元格,判断当前单元格是否已经计算,若是则直接结束本次解析,否则转向当前步骤之后的下一步骤;
C5)、是否为扩展单元格,判断引用单元格是否为扩展单元格,若是则保存扩展单元格ID与元单元格的对应关系,并将当前扩展单元格加入到未计算单元格堆栈中;否则保存单元格ID与当前单元格已计算出来的值的对应关系后,进入下一次迭代计算,直到所有单元格计算完毕,然后从未计算单元格堆栈一个个取出进行计算,如果还是无法计算,抛出计算异常并终止计算。
2.一种高效复杂报表解析引擎,其特征在于:它包括,
分组运算解析组件,用于根据报表规则模板设置获取分组表达式,对报表原数据按照设置的规则进行的分组计算,从而得到包含各自组内所有行数据集的数据分组;
多源交叉运算解析组件,用于对多个数据源间交叉计算的报表确定计算的数据范围,对报表中单元格计算表达式所在的列进行横向扩展,所在的行进行纵向扩展进行计算;
动态片间运算解析组件,用于对动态报表扩展单元格中属于引用单元格的表达式进行判断,然后获取引用单元格,对存在的既纵向扩展又横向扩展的单元格的函数表达式全部进行计算;
所述分组运算解析组件具体包括,
元单元格计算单元,用于以遍历方式根据元单元格地址取得元单元格对象,如果元单元格对象不存在,则获取下一个元单元格对象,如果元单元格对象存在,则获取当前元单元格对象,并判断当前单元格对象的表达式是否是为分组表达式,是则送至解析分组表达式单元,否则结束本次计算继续遍历;
解析分组表达式单元,用于根据元单元格计算单元获取的分组表达式,获取目标数据集名称、目标分组字段及过滤表达式,然后送至目标数据集存在判断单元;
目标数据集存在判断单元,用于根据解析分组表达式单元取得的目标数据集名称,从报表上下文中尝试加载数据集,若加载不到数据集,直接此处返回元单元格计算单元继续遍历,若加载到数据集则送到分组目标列存在判断单元;
分组目标列存在判断单元,用于根据解析分组表达式单元取得的目标分组字段,判断目标数据集存在判断单元加载到的数据集是否存在当前分组字段,若不存在,直接返回元单元格计算单元继续遍历,若存在则遍历目标数据集,根据分组字段在当前数据列取得对应的数据值,送到分组规则匹配计算单元;
分组规则匹配计算单元,用于解析分组规则表达式,取得分组规则,然后根据取得的数据值输入到分组规则进行运算,得出分组名及分组数据集;
设置分组单元,用于根据分组规则匹配计算单元取得的分组规则匹配获取分组名为键,以分组数据集为值,添加到分组存储区中,进入下一数据行分组计算,直到所有数据行都计算完毕,结束分组计算;
所述多源交叉运算解析组件具体包括,
交叉单元格运算单元,用于根据输入的单元格,判断当前单元格所在的行是否存在纵向扩展,所在的列是否存在横向扩展,存在则该单元格为交叉单元格,转到数据集光标是否更改单元,不存在则直接结束本次解析;
数据集光标是否更改单元,用于根据输入的交叉单元格取得交叉单元格的计算表达式,根据计算表式,取得当前计算所在行所在列的数据值,判断是否需要设置计算所在目标数据集的位置,若不需要,则转回交叉单元格运算单元,需要则转到设置左主格数据集单元;
设置左主格数据集单元,用于获取交叉单元格所在行最左边的计算单元格并设置为左主格数据集,而后转到左主格数据集判断单元;
左主格数据集判断单元,用于判断当前计算光标是否设置到左主格数据集,如果是则需要获取交叉单元格所在列最顶上的计算单元格,设置上主格数据为当前运算光标;否则求左主格数据集与上主格数据集的交集,并设置为当前运算目标数据光标进入下一次迭代计算,直到所有单元格计算完成;
所述动态片间运算解析组件具体包括,
片间计算表达式判断单元,用于根据输入的单元格,获取当前单元格计算表达式,判断计算表达式是否属于引用单元格表达式,若不是则直接结束本次解析,若是则送到预编译单元;
预编译单元,用于对片间计算表达式判断单送来的引用单元格表达式进行表达式预编译解析,包括对引用单元格合法性判断及引用初始化计算,而后送到语法解析单元;
语法解析单元,用于将预编译中间结果推送到解析引擎进行解析取得函数表达式,然后获取引用单元格,若获取失败则直接结束本次解析,成功则转到获取引用单元格单元;
获取引用单元格单元,用于根据上一步获取引用单元格中的函数表达式进行运算,根据获取的引用单元格,判断当前单元格是否已经计算,若是则直接结束本次解析,否则转到是否为扩展单元格单元;
是否为扩展单元格单元,用于判断获取引用单元格单元获取的引用单元格是否为扩展单元格,若是则保存扩展单元格ID与元单元格的对应关系,并将当前扩展单元格加入到未计算单元格堆栈中;否则保存单元格ID与当前单元格已计算出来的值的对应关系后,进入下一次迭代计算,直到所有单元格计算完毕,然后从未计算单元格堆栈一个个取出进行计算,如果还是无法计算,抛出计算异常并终止计算。
CN201210563189.6A 2012-12-20 2012-12-20 一种高效复杂报表解析引擎及其解析方法 Active CN103019728B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210563189.6A CN103019728B (zh) 2012-12-20 2012-12-20 一种高效复杂报表解析引擎及其解析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210563189.6A CN103019728B (zh) 2012-12-20 2012-12-20 一种高效复杂报表解析引擎及其解析方法

Publications (2)

Publication Number Publication Date
CN103019728A CN103019728A (zh) 2013-04-03
CN103019728B true CN103019728B (zh) 2015-07-15

Family

ID=47968366

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210563189.6A Active CN103019728B (zh) 2012-12-20 2012-12-20 一种高效复杂报表解析引擎及其解析方法

Country Status (1)

Country Link
CN (1) CN103019728B (zh)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104536969A (zh) * 2014-12-01 2015-04-22 北京百度网讯科技有限公司 一种确定结果数据集的方法与装置
CN104679819B (zh) * 2014-12-22 2018-03-23 上海找钢网信息科技股份有限公司 钢贸行业现货资源的数据解析方法及系统
CN105512098B (zh) * 2015-11-30 2019-02-15 歌尔股份有限公司 一种天线产品性能数据获取方法及系统
CN106604312B (zh) * 2016-11-10 2020-12-22 王蕴卓 一种路由器测试数据可视化的方法及系统
CN106648662B (zh) * 2016-12-23 2020-02-21 江西博微新技术有限公司 基于工程造价计算描述语言bcl的报表生成装置及生成方法
CN110309207A (zh) * 2018-02-07 2019-10-08 北京第一视角科技有限公司 医疗数据变量可视化方法、装置、存储介质以及电子设备
CN108763386B (zh) * 2018-05-19 2022-02-18 国云科技股份有限公司 基于nosql的多类型报表数据共享装置及其实现方法
CN109117469A (zh) * 2018-09-03 2019-01-01 平安科技(深圳)有限公司 Excel报表文件生成方法、装置、计算机设备及存储介质
CN109871524B (zh) * 2019-02-21 2023-06-09 腾讯科技(深圳)有限公司 一种图表生成方法及装置
CN110109672B (zh) * 2019-04-17 2023-01-10 奇安信科技集团股份有限公司 一种表达式的解析处理方法及装置
CN112231071B (zh) * 2020-05-20 2021-06-18 腾讯科技(深圳)有限公司 事务处理方法、装置、计算机设备及存储介质
CN112000660B (zh) * 2020-07-03 2022-11-15 苏宁云计算有限公司 多报表数据处理方法、装置、计算机设备和存储介质
CN112685423A (zh) * 2020-12-31 2021-04-20 天津浪淘科技股份有限公司 一种多源数据报表的生成方法、系统以及执行方法
CN114048722B (zh) * 2021-11-23 2022-05-24 北京三维天地科技股份有限公司 一种电子报表模板设计及动态渲染的方法及系统
CN114416832B (zh) * 2022-01-26 2022-11-15 重庆允丰科技有限公司 一种公式字段、报表的配置方法及计算机存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101021839A (zh) * 2007-03-23 2007-08-22 北京润乾信息系统技术有限公司 非线性报表生成方法
CN101183371A (zh) * 2007-12-12 2008-05-21 中兴通讯股份有限公司 一种快速完成大数据处理的方法和报表系统
CN102446164A (zh) * 2010-10-12 2012-05-09 金蝶软件(中国)有限公司 一种报表公式的解析方法、装置及业务系统
CN102591968A (zh) * 2011-12-31 2012-07-18 深圳联友科技有限公司 一种扩展表格的实现方法及扩展引擎

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101021839A (zh) * 2007-03-23 2007-08-22 北京润乾信息系统技术有限公司 非线性报表生成方法
CN101183371A (zh) * 2007-12-12 2008-05-21 中兴通讯股份有限公司 一种快速完成大数据处理的方法和报表系统
CN102446164A (zh) * 2010-10-12 2012-05-09 金蝶软件(中国)有限公司 一种报表公式的解析方法、装置及业务系统
CN102591968A (zh) * 2011-12-31 2012-07-18 深圳联友科技有限公司 一种扩展表格的实现方法及扩展引擎

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
《不规则分组报表模型的研究与实现》;林碧英 等;《微计算机信息》;20100831;第2010年卷(第24期);全文 *
刘丽钦.《基于非线性模型的报表工具的研究》.《中国优秀硕士学位论文全文数据库(电子期刊)信息科技辑》.2010,第2010年卷(第9期),第I138-401页. *

Also Published As

Publication number Publication date
CN103019728A (zh) 2013-04-03

Similar Documents

Publication Publication Date Title
CN103019728B (zh) 一种高效复杂报表解析引擎及其解析方法
AU2021204978B2 (en) Using an object model of heterogeneous data to facilitate building data visualizations
CN103412897B (zh) 一种基于分布式结构的并行数据处理方法
CN102917009B (zh) 一种基于云计算技术的股票数据采集和存储方法和系统
CN103927346B (zh) 基于数据量的查询连接方法
CN108647330A (zh) 一种基于bim模型文件的3d轻量化转换方法
CN108228724A (zh) 基于图数据库的电网gis拓扑分析方法及存储介质
CN105139281A (zh) 一种电力营销大数据的处理方法及系统
CN104205039A (zh) 使用兴趣驱动数据管线进行数据分析的兴趣驱动商业智能系统和方法
CN102023983B (zh) 一种统计时空数据库管理方法
CN109871418A (zh) 一种时空数据的空间索引方法和系统
Wang et al. Research and implementation on spatial data storage and operation based on Hadoop platform
CN102867066B (zh) 数据汇总装置和数据汇总方法
CN103488673A (zh) 用于执行调和处理的方法、控制器、程序及数据存储系统
CN105550268A (zh) 大数据流程建模分析引擎
CN103488537A (zh) 一种数据抽取、转换和加载etl的执行方法及装置
CN104318481A (zh) 一种面向电网运行的全息时标量测数据萃取转换方法
CN103853818A (zh) 多维数据的处理方法和装置
CN107016501A (zh) 一种高效的工业大数据多维分析方法
CN104572833B (zh) 一种映射规则创建方法及装置
CN113378011B (zh) 一种复杂产品总装数字孪生体的构建方法及系统
CN106202378A (zh) 一种流式气象数据的快速处理方法及系统
CN106055590A (zh) 基于大数据及图数据库的电力网络数据处理方法和系统
CN104268247A (zh) 一种基于模糊层次分析的主数据归集方法
Singh et al. Spatial data analysis with ArcGIS and MapReduce

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
CB03 Change of inventor or designer information

Inventor after: Shi Mingtai

Inventor after: Li Gongxin

Inventor after: Chen Moukun

Inventor after: Lin Kaixiong

Inventor after: Lin Li

Inventor after: Chen Shuliang

Inventor after: Huang Wensi

Inventor before: Shi Mingtai

Inventor before: Li Gongxin

Inventor before: Chen Moukun

Inventor before: Lin Kaixiong

Inventor before: Lin Li

Inventor before: Chen Shuliang

COR Change of bibliographic data
TR01 Transfer of patent right

Effective date of registration: 20160712

Address after: 361000 Fujian province Xiamen software park two sunrise Road No. 28 404-406

Patentee after: Xiamen Great Power Geo Information Technology Company Limited

Patentee after: State Grid Corporation of China

Patentee after: State Grid Inforamtion & Telecommunication Great Power Science and Technology Co., Ltd.

Address before: 361000 Fujian province Xiamen software park two sunrise Road No. 28 404-406

Patentee before: Xiamen Great Power Geo Information Technology Company Limited

Patentee before: State Grid Corporation of China