CN102521413A - 基于网络报表的取数装置和方法 - Google Patents

基于网络报表的取数装置和方法 Download PDF

Info

Publication number
CN102521413A
CN102521413A CN2011104480803A CN201110448080A CN102521413A CN 102521413 A CN102521413 A CN 102521413A CN 2011104480803 A CN2011104480803 A CN 2011104480803A CN 201110448080 A CN201110448080 A CN 201110448080A CN 102521413 A CN102521413 A CN 102521413A
Authority
CN
China
Prior art keywords
data
numerical value
middle table
unit
report
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
Application number
CN2011104480803A
Other languages
English (en)
Other versions
CN102521413B (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.)
CHANJET INFORMATION TECHNOLOGY Co Ltd
Original Assignee
CHANJET INFORMATION TECHNOLOGY Co Ltd
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 CHANJET INFORMATION TECHNOLOGY Co Ltd filed Critical CHANJET INFORMATION TECHNOLOGY Co Ltd
Priority to CN 201110448080 priority Critical patent/CN102521413B/zh
Publication of CN102521413A publication Critical patent/CN102521413A/zh
Application granted granted Critical
Publication of CN102521413B publication Critical patent/CN102521413B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供了一种基于网络报表的取数装置和方法,该装置包括:请求发送单元,将报表查询请求发送至网络服务器;数据获取单元,获取报表数据;报表创建单元,建立第一中间表、第二中间表和第三中间表;数据导入单元,将对应的报表数据导入第一中间表、第二中间表、第三中间表;序号添加单元,在第一中间表中添加第一序号列,为第二中间表添加第二序号列;排序单元,将第一中间表中的报表数据进行排序;分组单元,将第二中间表中的报表数据进行分组;依赖数值确定单元,确定依赖数值;数值范围确定单元,确定数值范围;数据输出单元,将报表数据中的相应数据输出至浏览器。通过本发明的技术方案,可以准确获取部分数据,避免服务器缓存不足。

Description

基于网络报表的取数装置和方法
技术领域
本发明涉及数据获取技术领域,具体而言,涉及一种基于网络报表的取数装置和方法。
背景技术
报表通过查询、统计和分析,为企业提供所需的准确数据。企业级报表系统最显著的特征是它产生高度灵活报表格式的能力,数据能够以各种形式展现给信息消费者,而且业务报表需要为消费者查询实时的数据。
现有的报表是居于微软的ReportView控件接口进行设计,这种设计思路是把大部分工作交给控件在web端来完成。微软Reportview控件在界面展现时需要获取全部数据,并缓存到Web服务器上,经过内存计算才能展现,且计算过程中一直占用内存。当大数据量的情况下,缓存的数据会使得IIS(Internet Information Services,互联网信息服务)内存泄漏。一般当IIS内存达到IIS内存上限时(大概是1.8G),报表会提示“资源被占用”或者报内存溢出的黄页。由于每次都获取全部数据才能展现,因此报表取数的效率也有严重问题。
相关技术方案中,采用直接查询全部数据,并把全部数据缓存到WEB服务器的内存中,后由ReportView控件在内存中对数据进行处理,并对数据进行分页,最后获取当前页需要的数据在界面上进行显示。具体的技术方案的原理示意图如图3所示。
上述技术方案由于全部数据获取后,就交给ReportView控件放在内存中进行处理,需要页面关闭时才释放内存,且每次数据都需要全部输出,会有效率问题,当数据量很大时,就会有内存溢出现象。
具体实现步骤是:
1、用户申请一个报表查询请求;
2、系统弹出一个查询界面,用户设置报表的查询条件,分组列和排序列;
3、按照用户设置的查询条件,读取符合条件的全部数据集;
4、读取的数据集缓存到Session对象中;
5、把Session对象中的数据绑定到ReportView控件上;
6、ReportView控件根据排序列对数据进行排序;
7、ReportView控件的内置的表达式引擎根据系统预置的计算公式和计算列进行解析,并计算出表达式的值;
8、由ReportView控件的引擎处理数据的分组,分页及小记等;
9、最后,根据显示列输出到页面上;
10、页面关闭时,对Session对象缓存的数据进行释放;
由于上述方案依赖于ReportView控件的引擎,通过控件引擎进行数据的分组、分页及小记等,因此,控件需要全部的数据才能运算,大数据缓存在WEB服务器上,必然会导致WEB服务器的内存溢出,产品运行越来越慢的现象。
因此,需要一种新的基于网络报表的取数技术,可以准确获取部分数据,避免服务器缓存不足。
发明内容
本发明正是基于上述问题,提出了一种新的基于网络报表的取数技术,可以准确获取部分数据,避免服务器缓存不足。
有鉴于此,本发明提出了一种基于网络报表的取数装置,包括:请求发送单元,将来自浏览器的报表查询请求发送至网络服务器,所述报表查询请求包括查询条件、排序条件及分组条件;数据获取单元,所述网络服务器根据所述查询条件,从数据库中获取对应的报表数据;报表创建单元,在所述网络服务器中建立第一中间表、第二中间表和第三中间表;数据导入单元,将所述数据获取单元获取的所述报表数据导入所述第一中间表中,将来自排序单元的报表数据导入所述第二中间表中,以及将来自分组单元的报表数据导入所述第三中间表中;序号添加单元,在所述第一中间表中添加对应于其中每行报表数据的自增长的第一序号列,以及为所述第二中间表添加对应于其中每行报表数据的自增长的第二序号列;所述排序单元,按照所述排序条件将所述第一中间表中的报表数据进行排序;所述分组单元,按照所述分组条件将所述第二中间表中的报表数据进行分组;依赖数值确定单元,获取所述第三中间表中的每行数据对应于所述第二序号列中的关联序号,并将所述关联序号的数值作为依赖数值;数值范围确定单元,获取每组数据中的最大依赖数值和最小依赖数值,并将所述最大依赖数值与所述最小依赖数值之间的所有依赖数值作为数值范围;数据输出单元,按照所述依赖数值、所述第二序号列及所述第一序号列之间的对应关系,将所述报表数据中对应于所述所有依赖数值的数据输出至所述浏览器。
在该技术方案中,当服务器根据用户的查询条件,当数据库中获取了对应的数据时,与该条件相关的数据中,包含了很多实际上并不需要的数据,因而当存储至服务器的缓存中时,就可能导致服务器缓存不足、甚至溢出。而通过本发明的技术方案,可以首先确定出用户真正需要的那部分数据,然后仅将该部分数据存储至服务器的缓存中,从而避免了缓存的溢出问题,提高运行效率。此外,这里提及的“自增长”是指,在第一中间表和第二中间表中,分别添加一列,该列的行数不定,而是根据获取的数据的行数的增加而自动增长,保证为每一行数据添加上对应的序号。“依赖数值”是指,对于某一行的数据,与其存在关联关系的数据的范围,从而确定真正需要获取的数据。
在上述技术方案中,优选地,还包括:索引建立单元,根据所述报表数据及其对应的项目,为所述第一中间表建立索引。在该技术方案中,通过建立索引,便于数据的查找和对数据范围的确定。
在上述技术方案中,优选地,还包括:索引复制单元,在所述第二中间表和所述第三中间表中使用所述索引建立单元建立的所述索引。在该技术方案中,由于第一中间表、第二中间表和第三中间表之间存在的相互关系,可以将在第一中间表中建立的索引用于第二中间表和第三中间表中,增加通用性的同时,也不必另外生成,节省资源。
在上述技术方案中,优选地,还包括:存储单元,将所述数据获取单元获取的所述报表数据存储在所述网络服务器的内存中;以及内存释放单元,在所述数据输出单元将所述所有依赖数值对应的报表数据输出至所述浏览器之后,删除存储在所述网络服务器的所述内存中的数据。在该技术方案中,通过对内存的及时释放,避免发生内存溢出,影响运行效率。
在上述技术方案中,优选地,还包括:分级单元,在存在多个所述分组条件的情况下,建立分组的级别,则所述第三中间表中的每行数据属于多个级别的分组;以及所述数值范围确定单元还用于:分别获取每个最高级别分组中的最大依赖数值和最小依赖数值,并将所述最大依赖数值与所述最小依赖数值之间的所有依赖数值作为所述数值范围。在该技术方案中,每行数据具有至少一个分组条件的限制,在存在多个分组条件时,比如n个条件,则一行数据最多受到n个条件限制,而多行数据最少受到1个条件限制,那么,对于受到更少条件限制的行数据,设置为最高级别,此时,对于每个条件,都对应存在一部分行数据属于最高级别,分别获取对应的最高级别的依赖数值,用于最后获取数据的范围。
根据本发明的又一方面,还提出了一种基于网络报表的取数方法,包括:步骤202,网络服务器接收来自浏览器的报表查询请求,所述报表查询请求包括查询条件、排序条件及分组条件;步骤204,所述网络服务器根据所述查询条件,从数据库中获取对应的报表数据;步骤206,在所述网络服务器建立第一中间表,将所述报表数据导入所述第一中间表;步骤208,在所述第一中间表中添加对应于其中每行报表数据的自增长的第一序号列;步骤210,建立第二中间表,按照所述排序条件将所述第一中间表中的报表数据进行排序后,导入所述第二中间表;步骤212,为所述第二中间表添加对应于其中每行报表数据的自增长的第二序号列;步骤214,建立第三中间表,按照所述分组条件将所述第二中间表中的报表数据进行分组后,导入所述第三中间表;步骤216,获取所述第三中间表中的每行数据对应于所述第二序号列中的关联序号,并将所述关联序号的数值作为依赖数值;步骤218,获取每组数据中的最大依赖数值和最小依赖数值,并按照所述依赖数值、所述第二序号列及所述第一序号列之间的对应关系,将所述最大依赖数值与所述最小依赖数值之间的所有依赖数值在所述报表数据中对应的数据输出至所述浏览器。
在该技术方案中,当服务器根据用户的查询条件,当数据库中获取了对应的数据时,与该条件相关的数据中,包含了很多实际上并不需要的数据,因而当存储至服务器的缓存中时,就可能导致服务器缓存不足、甚至溢出。而通过本发明的技术方案,可以首先确定出用户真正需要的那部分数据,然后仅将该部分数据存储至服务器的缓存中,从而避免了缓存的溢出问题,提高运行效率。此外,这里提及的“自增长”是指,在第一中间表和第二中间表中,分别添加一列,该列的行数不定,而是根据获取的数据的行数的增加而自动增长,保证为每一行数据添加上对应的序号。“依赖数值”是指,对于某一行的数据,与其存在关联关系的数据的范围,从而确定真正需要获取的数据。
在上述技术方案中,优选地,在所述步骤206中,还包括:根据所述报表数据及其对应的项目,为所述第一中间表建立索引。在该技术方案中,通过建立索引,便于数据的查找和对数据范围的确定。
在上述技术方案中,优选地,还包括:在所述第二中间表和所述第三中间表中使用所述索引。在该技术方案中,由于第一中间表、第二中间表和第三中间表之间存在的相互关系,可以将在第一中间表中建立的索引用于第二中间表和第三中间表中,增加通用性的同时,也不必另外生成,节省资源。
在上述技术方案中,优选地,在所述步骤204中,包括:将所述报表数据存储在所述网络服务器的内存中;在所述步骤218中,还包括:删除存储在所述网络服务器的所述内存中的数据。在该技术方案中,通过对内存的及时释放,避免发生内存溢出,影响运行效率。
在上述技术方案中,优选地,在所述步骤218中,还包括:若存在多个所述分组条件,则所述第三中间表中的每行数据属于多个级别的分组,分别获取每个最高级别分组中的最大依赖数值和最小依赖数值,并分别获取对应的报表数据。在该技术方案中,每行数据具有至少一个分组条件的限制,在存在多个分组条件时,比如n个条件,则一行数据最多受到n个条件限制,而多行数据最少受到1个条件限制,那么,对于受到更少条件限制的行数据,设置为最高级别,此时,对于每个条件,都对应存在一部分行数据属于最高级别,分别获取对应的最高级别的依赖数值,用于最后获取数据的范围。
通过以上技术方案,可以准确获取部分数据,避免服务器缓存不足。
附图说明
图1示出了根据本发明的实施例的基于网络报表的取数装置的框图;
图2示出了根据本发明的实施例的基于网络报表的取数方法的流程图;
图3示出了相关技术的获取报表数据的示意图;
图4示出了根据本发明的实施例的获取报表数据的示意图。
具体实施方式
为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行进一步的详细描述。
在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用其他不同于在此描述的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。
图1示出了根据本发明的实施例的基于网络报表的取数装置的框图。
如图1所示,根据本发明的实施例的基于网络报表的取数装置100,包括:请求发送单元102,将来自浏览器的报表查询请求发送至网络服务器,报表查询请求包括查询条件、排序条件及分组条件;数据获取单元104,网络服务器根据查询条件,从数据库中获取对应的报表数据;报表创建单元106,在网络服务器中建立第一中间表、第二中间表和第三中间表;数据导入单元108,将数据获取单元104获取的报表数据导入第一中间表中,将来自排序单元112的报表数据导入第二中间表中,以及将来自分组单元114的报表数据导入第三中间表中;序号添加单元110,在第一中间表中添加对应于其中每行报表数据的自增长的第一序号列,以及为第二中间表添加对应于其中每行报表数据的自增长的第二序号列;排序单元112,按照排序条件将第一中间表中的报表数据进行排序;分组单元114,按照分组条件将第二中间表中的报表数据进行分组;依赖数值确定单元116,获取第三中间表中的每行数据对应于第二序号列中的关联序号,并将关联序号的数值作为依赖数值;数值范围确定单元118,获取每组数据中的最大依赖数值和最小依赖数值,并将最大依赖数值与最小依赖数值之间的所有依赖数值作为数值范围;数据输出单元120,按照依赖数值、第二序号列及第一序号列之间的对应关系,将报表数据中对应于所有依赖数值的数据输出至浏览器。
在该技术方案中,当服务器根据用户的查询条件,当数据库中获取了对应的数据时,与该条件相关的数据中,包含了很多实际上并不需要的数据,因而当存储至服务器的缓存中时,就可能导致服务器缓存不足、甚至溢出。而通过本发明的技术方案,可以首先确定出用户真正需要的那部分数据,然后仅将该部分数据存储至服务器的缓存中,从而避免了缓存的溢出问题,提高运行效率。此外,这里提及的“自增长”是指,在第一中间表和第二中间表中,分别添加一列,该列的行数不定,而是根据获取的数据的行数的增加而自动增长,保证为每一行数据添加上对应的序号。“依赖数值”是指,对于某一行的数据,与其存在关联关系的数据的范围,从而确定真正需要获取的数据。
在上述技术方案中,还包括:索引建立单元122,根据报表数据及其对应的项目,为第一中间表建立索引。在该技术方案中,通过建立索引,便于数据的查找和对数据范围的确定。
在上述技术方案中,还包括:索引复制单元124,在第二中间表和第三中间表中使用索引建立单元122建立的索引。在该技术方案中,由于第一中间表、第二中间表和第三中间表之间存在的相互关系,可以将在第一中间表中建立的索引用于第二中间表和第三中间表中,增加通用性的同时,也不必另外生成,节省资源。
在上述技术方案中,还包括:存储单元126,将数据获取单元104获取的报表数据存储在网络服务器的内存中;以及内存释放单元128,在数据输出单元120将所有依赖数值对应的报表数据输出至浏览器之后,删除存储在网络服务器的内存中的数据。在该技术方案中,通过对内存的及时释放,避免发生内存溢出,影响运行效率。
在上述技术方案中,还包括:分级单元130,在存在多个分组条件的情况下,建立分组的级别,则第三中间表中的每行数据属于多个级别的分组;以及数值范围确定单元118还用于:分别获取每个最高级别分组中的最大依赖数值和最小依赖数值,并将最大依赖数值与最小依赖数值之间的所有依赖数值作为数值范围。在该技术方案中,每行数据具有至少一个分组条件的限制,在存在多个分组条件时,比如n个条件,则一行数据最多受到n个条件限制,而多行数据最少受到1个条件限制,那么,对于受到更少条件限制的行数据,设置为最高级别,此时,对于每个条件,都对应存在一部分行数据属于最高级别,分别获取对应的最高级别的依赖数值,用于最后获取数据的范围。
图2示出了根据本发明的实施例的基于网络报表的取数方法的流程图。
如图2所示,根据本发明的实施例的基于网络报表的取数方法,包括:步骤202,网络服务器接收来自浏览器的报表查询请求,报表查询请求包括查询条件、排序条件及分组条件;步骤204,网络服务器根据查询条件,从数据库中获取对应的报表数据;步骤206,在网络服务器建立第一中间表,将报表数据导入第一中间表;步骤208,在第一中间表中添加对应于其中每行报表数据的自增长的第一序号列;步骤210,建立第二中间表,按照排序条件将第一中间表中的报表数据进行排序后,导入第二中间表;步骤212,为第二中间表添加对应于其中每行报表数据的自增长的第二序号列;步骤214,建立第三中间表,按照分组条件将第二中间表中的报表数据进行分组后,导入第三中间表;步骤216,获取第三中间表中的每行数据对应于第二序号列中的关联序号,并将关联序号的数值作为依赖数值;步骤218,获取每组数据中的最大依赖数值和最小依赖数值,并按照依赖数值、第二序号列及第一序号列之间的对应关系,将最大依赖数值与最小依赖数值之间的所有依赖数值在报表数据中对应的数据输出至浏览器。
在该技术方案中,当服务器根据用户的查询条件,当数据库中获取了对应的数据时,与该条件相关的数据中,包含了很多实际上并不需要的数据,因而当存储至服务器的缓存中时,就可能导致服务器缓存不足、甚至溢出。而通过本发明的技术方案,可以首先确定出用户真正需要的那部分数据,然后仅将该部分数据存储至服务器的缓存中,从而避免了缓存的溢出问题,提高运行效率。此外,这里提及的“自增长”是指,在第一中间表和第二中间表中,分别添加一列,该列的行数不定,而是根据获取的数据的行数的增加而自动增长,保证为每一行数据添加上对应的序号。“依赖数值”是指,对于某一行的数据,与其存在关联关系的数据的范围,从而确定真正需要获取的数据。
在上述技术方案中,在步骤206中,还包括:根据报表数据及其对应的项目,为第一中间表建立索引。在该技术方案中,通过建立索引,便于数据的查找和对数据范围的确定。
在上述技术方案中,还包括:在第二中间表和第三中间表中使用索引。在该技术方案中,由于第一中间表、第二中间表和第三中间表之间存在的相互关系,可以将在第一中间表中建立的索引用于第二中间表和第三中间表中,增加通用性的同时,也不必另外生成,节省资源。
在上述技术方案中,在步骤204中,包括:将报表数据存储在网络服务器的内存中;在步骤218中,还包括:删除存储在网络服务器的内存中的数据。在该技术方案中,通过对内存的及时释放,避免发生内存溢出,影响运行效率。
在上述技术方案中,在步骤218中,还包括:若存在多个分组条件,则第三中间表中的每行数据属于多个级别的分组,分别获取每个最高级别分组中的最大依赖数值和最小依赖数值,并分别获取对应的报表数据。在该技术方案中,每行数据具有至少一个分组条件的限制,在存在多个分组条件时,比如n个条件,则一行数据最多受到n个条件限制,而多行数据最少受到1个条件限制,那么,对于受到更少条件限制的行数据,设置为最高级别,此时,对于每个条件,都对应存在一部分行数据属于最高级别,分别获取对应的最高级别的依赖数值,用于最后获取数据的范围。
图4示出了根据本发明的实施例的获取报表数据的示意图。
如图4所示,为了解决在如图3中的相关技术中出现的报表取数的效率问题和报表运算时的内存溢出问题,对设计方案进行了修改,数据不全部缓存到应用服务器端,而是分数据块进行读取,为了减少数据对缓存的占用,只对块的数据进行缓存,并对第一页进行少量读取,而后再对数据块读取,这样缓存到服务器端的数据会很少,并且第一次读取的数据也比较少,这样,大数据量也不会对应用服务器造成影响。
这种实现方案是先读取数据放入中间表中,然后对中间表的数据进行加工处理,获取到当前页需要进行分组计算的所有数据,对数据计算完成后,把数据返回到页面上,并对当前显示页的数据进行输出。
具体实现步骤如下:
一、中间表数据排序的实现
1、用户申请一个报表查询请求;
2、系统弹出一个查询界面,用户设置报表的查询条件,分组列和排序列;
3、按照设置的查询条件,读取符合条件的数据,并写入到临时表Tab1中,同时增加一列自增长列;
4、根据查询的排序字段,建立临时表索引;
5、按照排序字段对临时表Tab1中的数据进行排序,并取临时表中的自增长列再生成另一张临时表Tab2,并在临时表Tab2中增加一列自增长列;
6、此时,表Tab2是一张排序后的数据表。
二、明细表取数实现
1、根据排序后的Tab2去关联Tab1,可以读取到任何一个分页的数据块;
2、数据块通过表达式引擎解析后,得到报表需要展现的数据块;
3、按照显示列与分页数据,对数据进行组织,准备输出;
3、数据块传递到前端后,显示到页面上,系统从内存中释放数据块。
三、明细小计取数实现
1、根据排序后的临时表Tab2和分组条件,生成一张分组分页的临时数据表Tab3,此表增加了最大依赖列和最小依赖列,级次列和自增长列;
2、Tab3最大依赖列及最小依赖列数据来源于Tab2的自增长列;
3、由于小计行在明细行的下方,因此下一页的小计行的数据需要依赖上页的明细数据。通过最小依赖列,获取当前显示页依赖数据;
4、读取包含依赖数据的数据块,通过表达式解析,得到当前报表需要显示的数据块;
5、数据传递到前端后,显示到页面上,系统从内存中释放数据块。
四、汇总表取数实现
汇总表取数算法实现与小计取数算法实现类似,只是数据倒序排列,实现如下:
1、根据排序后的临时表Tab2和分组条件,生成一张倒排的分组分页的临时数据表Tab4,此表增加了最大依赖列和最小依赖列,级次列和自增长列;
2、Tab4最大依赖列及最小依赖列数据来源于Tab2的自增长列;
3、由于汇总行在汇总明细行的上方,因此上一页的汇总行的数据需要依赖下页的汇总明细数据。通过最大依赖列,获取当前显示页依赖数据;
4、读取包含依赖数据的数据块,通过表达式解析,得到当前报表需要显示的数据块;
5、数据传递到前端后,显示到页面上,系统从内存中释放数据块。
比如在明细小计时,由用户填写查询条件,由服务器根据跟条件获取相关的数据,这些数据都是无排序数据,导入到第一中间表中,并建立索引,具体如表1所示:
Figure BDA0000126056420000111
Figure BDA0000126056420000121
表1
其中,第一列的“行号”,是添加的自增长列,该列的行数不定,随着数据的行数的增加而自动生成对应的单元格和行号。
按单据日期升序、仓库降序后,生成第二中间表,具体如表2所示:
Figure BDA0000126056420000122
表2
在该表中,“自动排序”列也是随表2生成的自增长列,而“原始数据序号”列则是对应于表1中的序号,这样,在表2和表1之间,便通过这两列序号之间,形成了相互关联关系。
把单据日期和仓库作为分组条件,运算后生成的第三中间表如表3:
Figure BDA0000126056420000123
表3
可以看到,在行数据方面,以最后一列的“自动排序ID”对应的序号为准,第二行、第六行、第九行、第十行、第十二行、第十三行为新添的小计数据。而对于具体的其他的数据行,第一行、第三行至第五行、第七行至第八行、第十一行分别为受到“日期”和“仓库”两个条件限制的数据,对应为“3级”,且对应的“最大依赖”和“最小依赖”均为其在第二中间表中对应的“自动排序ID”,第二行、第六行、第九行、第十二行分别为在一个“日期”条件下,仅受到一个“仓库”条件的限制,是一个小计,对应为“2级”,且对应的“最大依赖”和“最小依赖”分别为3级数据对应的依赖数值的最大值和最小值,而第十行、第十三行分别为对应于“日期”条件下的最大的条件限制,相当于更高一级的小计,对应为“1级”,则对应的“最大依赖”和“最小依赖”分别为2级数据对应的依赖数值的最大值和最小值。
根据上述的数据格式,可以定位到每页的数据展现,根据每页数据依赖,取出需要参与运算的数据,对取出的数据通过表达式进行计算后,输出报表查询的数据。
以上结合附图详细说明了本发明的技术方案,考虑到相关技术中,可能导致服务器运行效率低、内存溢出,因此,本发明提供了一种基于网络报表的取数装置和方法,可以准确获取部分数据,避免服务器缓存不足。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种基于网络报表的取数装置,其特征在于,包括:
请求发送单元,将来自浏览器的报表查询请求发送至网络服务器,所述报表查询请求包括查询条件、排序条件及分组条件;
数据获取单元,所述网络服务器根据所述查询条件,从数据库中获取对应的报表数据;
报表创建单元,在所述网络服务器中建立第一中间表、第二中间表和第三中间表;
数据导入单元,将所述数据获取单元获取的所述报表数据导入所述第一中间表中,将来自排序单元的报表数据导入所述第二中间表中,以及将来自分组单元的报表数据导入所述第三中间表中;
序号添加单元,在所述第一中间表中添加对应于其中每行报表数据的自增长的第一序号列,以及为所述第二中间表添加对应于其中每行报表数据的自增长的第二序号列;
所述排序单元,按照所述排序条件将所述第一中间表中的报表数据进行排序;
所述分组单元,按照所述分组条件将所述第二中间表中的报表数据进行分组;
依赖数值确定单元,获取所述第三中间表中的每行数据对应于所述第二序号列中的关联序号,并将所述关联序号的数值作为依赖数值;
数值范围确定单元,获取每组数据中的最大依赖数值和最小依赖数值,并将所述最大依赖数值与所述最小依赖数值之间的所有依赖数值作为数值范围;
数据输出单元,按照所述依赖数值、所述第二序号列及所述第一序号列之间的对应关系,将所述报表数据中对应于所述所有依赖数值的数据输出至所述浏览器。
2.根据权利要求1所述的基于网络报表的取数装置,其特征在于,还包括:
索引建立单元,根据所述报表数据及其对应的项目,为所述第一中间表建立索引。
3.根据权利要求2所述的基于网络报表的取数装置,其特征在于,还包括:
索引复制单元,在所述第二中间表和所述第三中间表中使用所述索引建立单元建立的所述索引。
4.根据权利要求1至3中任一项所述的基于网络报表的取数装置,其特征在于,还包括:
存储单元,将所述数据获取单元获取的所述报表数据存储在所述网络服务器的内存中;以及
内存释放单元,在所述数据输出单元将所述所有依赖数值对应的报表数据输出至所述浏览器之后,删除存储在所述网络服务器的所述内存中的数据。
5.根据权利要求1至3中任一项所述的基于网络报表的取数装置,其特征在于,还包括:
分级单元,在存在多个所述分组条件的情况下,建立分组的级别,则所述第三中间表中的每行数据属于多个级别的分组;以及
所述数值范围确定单元还用于:分别获取每个最高级别分组中的最大依赖数值和最小依赖数值,并将所述最大依赖数值与所述最小依赖数值之间的所有依赖数值作为所述数值范围。
6.一种基于网络报表的取数方法,其特征在于,包括:
步骤202,网络服务器接收来自浏览器的报表查询请求,所述报表查询请求包括查询条件、排序条件及分组条件;
步骤204,所述网络服务器根据所述查询条件,从数据库中获取对应的报表数据;
步骤206,在所述网络服务器建立第一中间表,将所述报表数据导入所述第一中间表;
步骤208,在所述第一中间表中添加对应于其中每行报表数据的自增长的第一序号列;
步骤210,建立第二中间表,按照所述排序条件将所述第一中间表中的报表数据进行排序后,导入所述第二中间表;
步骤212,为所述第二中间表添加对应于其中每行报表数据的自增长的第二序号列;
步骤214,建立第三中间表,按照所述分组条件将所述第二中间表中的报表数据进行分组后,导入所述第三中间表;
步骤216,获取所述第三中间表中的每行数据对应于所述第二序号列中的关联序号,并将所述关联序号的数值作为依赖数值;
步骤218,获取每组数据中的最大依赖数值和最小依赖数值,并按照所述依赖数值、所述第二序号列及所述第一序号列之间的对应关系,将所述最大依赖数值与所述最小依赖数值之间的所有依赖数值在所述报表数据中对应的数据输出至所述浏览器。
7.根据权利要求6所述的基于网络报表的取数方法,其特征在于,在所述步骤206中,还包括:
根据所述报表数据及其对应的项目,为所述第一中间表建立索引。
8.根据权利要求7所述的基于网络报表的取数方法,其特征在于,还包括:
在所述第二中间表和所述第三中间表中使用所述索引。
9.根据权利要求6至8中任一项所述的基于网络报表的取数方法,其特征在于,在所述步骤204中,包括:
将所述报表数据存储在所述网络服务器的内存中;以及
在所述步骤218中,还包括:
删除存储在所述网络服务器的所述内存中的数据。
10.根据权利要求6至8中任一项所述的基于网络报表的取数方法,其特征在于,在所述步骤218中,还包括:
若存在多个所述分组条件,则所述第三中间表中的每行数据属于多个级别的分组,分别获取每个最高级别分组中的最大依赖数值和最小依赖数值,并分别获取对应的报表数据。
CN 201110448080 2011-12-28 2011-12-28 基于网络报表的取数装置和方法 Active CN102521413B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201110448080 CN102521413B (zh) 2011-12-28 2011-12-28 基于网络报表的取数装置和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201110448080 CN102521413B (zh) 2011-12-28 2011-12-28 基于网络报表的取数装置和方法

Publications (2)

Publication Number Publication Date
CN102521413A true CN102521413A (zh) 2012-06-27
CN102521413B CN102521413B (zh) 2013-04-03

Family

ID=46292326

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201110448080 Active CN102521413B (zh) 2011-12-28 2011-12-28 基于网络报表的取数装置和方法

Country Status (1)

Country Link
CN (1) CN102521413B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103488688A (zh) * 2013-09-02 2014-01-01 用友软件股份有限公司 单元格数据缓存系统和单元格数据缓存方法
CN103902718A (zh) * 2014-04-09 2014-07-02 浪潮软件股份有限公司 一种报表控件及其应用
CN104317571A (zh) * 2014-09-30 2015-01-28 浪潮软件股份有限公司 一种通过报表控件缩短浏览器响应时间的方法
CN104699748A (zh) * 2014-12-19 2015-06-10 深圳市燃气集团股份有限公司 一种展示不固定列报表的方法及其系统
CN106682064A (zh) * 2016-11-03 2017-05-17 用友网络科技股份有限公司 企业报表的取数装置和取数方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101110074A (zh) * 2007-01-30 2008-01-23 浪潮乐金信息系统有限公司 基于文件系统缓存的数据加速查询方法
CN101673308A (zh) * 2009-10-21 2010-03-17 上海天卷信息技术有限公司 搜索展示系统
CN102193917A (zh) * 2010-03-01 2011-09-21 中国移动通信集团公司 一种数据处理和查询方法和装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101110074A (zh) * 2007-01-30 2008-01-23 浪潮乐金信息系统有限公司 基于文件系统缓存的数据加速查询方法
CN101673308A (zh) * 2009-10-21 2010-03-17 上海天卷信息技术有限公司 搜索展示系统
CN102193917A (zh) * 2010-03-01 2011-09-21 中国移动通信集团公司 一种数据处理和查询方法和装置

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103488688A (zh) * 2013-09-02 2014-01-01 用友软件股份有限公司 单元格数据缓存系统和单元格数据缓存方法
CN103902718A (zh) * 2014-04-09 2014-07-02 浪潮软件股份有限公司 一种报表控件及其应用
CN104317571A (zh) * 2014-09-30 2015-01-28 浪潮软件股份有限公司 一种通过报表控件缩短浏览器响应时间的方法
CN104699748A (zh) * 2014-12-19 2015-06-10 深圳市燃气集团股份有限公司 一种展示不固定列报表的方法及其系统
CN104699748B (zh) * 2014-12-19 2018-06-12 深圳市燃气集团股份有限公司 一种展示不固定列报表的方法及其系统
CN106682064A (zh) * 2016-11-03 2017-05-17 用友网络科技股份有限公司 企业报表的取数装置和取数方法
CN106682064B (zh) * 2016-11-03 2020-02-11 用友网络科技股份有限公司 企业报表的取数装置和取数方法

Also Published As

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

Similar Documents

Publication Publication Date Title
CN105701216B (zh) 一种信息推送方法及装置
CN103714084B (zh) 推荐信息的方法和装置
CN102521413B (zh) 基于网络报表的取数装置和方法
CN102339296A (zh) 一种查询结果的排序方法和装置
CN102254024A (zh) 海量数据处理系统及方法
CN102426610B (zh) 微博搜索排名方法及微博搜索引擎
CN102193929B (zh) 利用词信息熵的搜索方法及其设备
CN103778148B (zh) Hadoop分布式文件系统数据文件的生命周期管理方法和设备
CN102024062B (zh) 一种实现数据动态缓存处理的装置及方法
CN101572629B (zh) 一种ip数据的处理方法及装置
CN102769781A (zh) 推荐电视节目的方法及装置
CN103488680A (zh) 建立搜索引擎的组合算符
CN103559300B (zh) 数据的查询方法和查询装置
CN102456058A (zh) 类目信息提供方法及装置
CN102982489A (zh) 一种基于海量计量数据的电力客户在线分群方法
CN101459901A (zh) 基于多级切片方式的矢量地图数据传输方法
CN111552885B (zh) 实现自动化实时消息推送运营的系统及其方法
CN113064866A (zh) 一种电力业务数据整合系统
CN102194015A (zh) 检索信息热度统计方法
CN102737123A (zh) 一种多维数据分布方法
CN113987002A (zh) 基于海量数据分析平台的数据交换方法
CN103455619B (zh) 一种基于Lucene分片结构的打分处理方法及系统
CN102521350A (zh) 基于历史点击数据的分布式信息检索集合选择方法
CN107358534A (zh) 社交网络的无偏数据采集系统及采集方法
CN106844320A (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
C14 Grant of patent or utility model
GR01 Patent grant