CN101916254A - 表单统计方法和装置 - Google Patents
表单统计方法和装置 Download PDFInfo
- Publication number
- CN101916254A CN101916254A CN2010102213362A CN201010221336A CN101916254A CN 101916254 A CN101916254 A CN 101916254A CN 2010102213362 A CN2010102213362 A CN 2010102213362A CN 201010221336 A CN201010221336 A CN 201010221336A CN 101916254 A CN101916254 A CN 101916254A
- Authority
- CN
- China
- Prior art keywords
- row
- line data
- list
- column data
- data
- 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
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Complex Calculations (AREA)
Abstract
本发明提供了一种表单统计方法,包括:步骤102,输入表单;步骤104,根据全局条件和表单的每行的行条件,对每行进行统计,获得对应每行的行数据,根据全局条件和表单的每列的列条件,对每列进行统计,获得对应每列的列数据;步骤106,从行数据和列数据中找到类型相同的行数据和列数据,对所找到的行数据或列数据进行统计处理。本发明还提供了一种表单统计装置。根据本发明的技术方案,可以表单统计时的查询次数大幅降低,并能减少对实际业务表的竞争,有利于提高并发度。
Description
技术领域
本发明涉及一种表单统计方法和装置。
背景技术
对于一般的表单而言,一个维度内属性值是数据库一个字段的枚举,例如表1是学历和人员类别的投影分析,学历维度的值就是学历字段值的枚举,同样人员类别维度的值是人员类别字段值的枚举,对这样的表单进行统计可以通过sql语法的group by或者在内存中分组的方式实现。
在职人员 | 离退人员 | 临时人员 | 兼职人员 | |
大学本科 | ||||
硕士 | ||||
博士 | ||||
博士后 |
表1
而有一些表单的一个维度的取值范围来源是通过复杂条件定义的来源于不同的表、字段的值,由于条件无规律,不能通过sql语法的group by统计,例如表2中列表头混合了性别、民族、政治面貌、学历等多个维度。由于篇幅限制,隐掉了部分列表头、行表体,实际的表样的行、列的数量很大,均可以达到60至70。由于涉及的表和字段条件较大,加载到内存分析统计非常消耗内存资源,一般的统计方式就是逐个单元格进行计算,效率很低。
表2
对于M×N的二维统计分析报表,通过M×N次数据库sql查询,每条查询语句的格式如下:
查询mn=Select统计类型(统计主体)from表连接树where全局条件and行条件m and列条件n
统计类型可以是:
统计类型 | Sql关键字 |
计数 | count |
求和 | sum |
求最大 | max |
求平均 | avg |
统计主体可以是数据字典中人员,组织或薪酬的任何有意义字段;
表连接树是由根据数据字典生成的物理表间的连接关系,一般会形成一个树状结构;
全局条件是用来限定统计分析的范围;
行条件m是第m行的限定条件;
列条件n是第n行的限定条件。
以表2为例,表样中有11列15行,根据上面的算法,要逐个遍历单元格执行11×15=161次查询:
第1次查询:select count(人员主键)from业务表连接树where内部董事的条件集合and性别等于女的条件集合;
第2次查询:select count(人员主键)from业务表连接树where内部董事的条件集合and少数民族的条件集合;
第3次查询:select count(人员主键)from业务表连接树where内部董事的条件集合and政治面貌为党员的的条件集合;
......................................................
第159次查询:select count(人员主键)from业务表连接树where其他党群工作者的条件集合and学历为大学本科的条件集合;
第160次查询:select count(人员主键)from业务表连接树where其他党群工作者的条件集合and学历为大学专科的条件集合;
第161次查询:select count(人员主键)from业务表连接树where其他党群工作者的条件集合and学历为中专的条件集合。
由于企业统计分析应用不断深化、细化,采用上述方法会使得效率问题凸显。用户的希望报表详尽细致,统计维度的长度不断增加(即m或n的值),传统的计算方法,已经无法满足如此巨大的统计区域,计算效率极低,有时一张表甚至要算几个小时。
因此,需要一种新的表单统计方式,能够快速有效地对维度长度大、内容复杂的表单进行统计。
发明内容
本发明所要解决的技术问题在于,需要一种新的表单统计方式,能够快速有效地对维度长度大、内容复杂的表单进行统计。
有鉴于此,本发明公开了一种表单统计方法,包括:步骤102,输入表单;步骤104,根据全局条件和所述表单的每行的行条件,对所述每行进行统计,获得对应所述每行的行数据,根据全局条件和所述表单的每列的列条件,对所述每列进行统计,获得对应所述每列的列数据;步骤106,从所述行数据和所述列数据中找到类型相同的行数据和列数据,对所找到的行数据或列数据进行统计处理。
在上述技术方案中,优选地,所述步骤104还包括:将所述行数据记录在行临时表中,将所述列数据记录在列临时表中。
在上述技术方案中,优选地,所述步骤104包括:通过行数据库命令,按所述全局条件和所述每行的行条件对所述每行进行统计,得到所述行数据,通过列数据库命令,按所述全局条件和所述每列的列条件对所述每列进行统计,得到所述列数据。
在上述技术方案中,优选地,所述步骤104还包括:将所有的所述行数据库命令和所有的所述列数据库命令都存储于存储器中,以对所述表单的所有行和所有列进行批量统计。
在上述技术方案中,优选地,所述行临时表和所述列临时表均从缓冲池中获取。
本发明还提供了一种表单统计装置,包括:输入模块,输入表单;行列统计模块,根据全局条件和所述表单的每行的行条件,对所述每行进行统计,获得对应所述每行的行数据,根据全局条件和所述表单的每列的列条件,对所述每列进行统计,获得对应所述每列的列数据;汇总统计模块,从所述行数据和所述列数据中找到类型相同的行数据和列数据,对所找到的行数据或列数据进行统计处理。
在上述技术方案中,优选地,所述行列统计模块将所述行数据记录在行临时表中,将所述列数据记录在列临时表中。
在上述技术方案中,优选地,所述行列统计模块通过行数据库命令,按所述全局条件和所述每行的行条件对所述每行进行统计,得到所述行数据,通过列数据库命令,按所述全局条件和所述每列的列条件对所述每列进行统计,得到所述列数据。
在上述技术方案中,优选地,还包括:存储器模块,存储所有的所述行数据库命令和所有的所述列数据库命令,以对所述表单的所有行和所有列进行批量统计。
在上述技术方案中,优选地,还包括:缓冲池模块,为所述行统计模块提供所述行临时表,为所述列统计模块提供所述列临时表。
根据本发明的技术方案,可以实现一种表单统计方法和装置,能够快速有效地对表单进行统计。
附图说明
图1是根据本发明的表单统计方法的流程图;
图2是根据本发明的表单统计装置的框图;
图3是根据本发明的一个实施例的表单统计方法的流程图。
具体实施方式
以下将参考附图详细描述根据本发明的实施例。
图1是根据本发明的表单统计方法的流程图。
如图1所示,本发明提供了一种表单统计方法,包括:步骤102,输入表单;步骤104,根据全局条件和所述表单的每行的行条件,对所述每行进行统计,获得对应所述每行的行数据,根据全局条件和所述表单的每列的列条件,对所述每列进行统计,获得对应所述每列的列数据;步骤106,从所述行数据和所述列数据中找到类型相同的行数据和列数据,对所找到的行数据或列数据进行统计处理。
在上述技术方案中,所述步骤104还包括:将所述行数据记录在行临时表中,将所述列数据记录在列临时表中。
在上述技术方案中,所述步骤104包括:通过行数据库命令,按所述全局条件和所述每行的行条件对所述每行进行统计,得到所述行数据,通过列数据库命令,按所述全局条件和所述每列的列条件对所述每列进行统计,得到所述列数据。
在上述技术方案中,所述步骤104还包括:将所有的所述行数据库命令和所有的所述列数据库命令都存储于存储器中,以对所述表单的所有行和所有列进行批量统计。
在上述技术方案中,所述行临时表和所述列临时表均从缓冲池中获取。
图2是根据本发明的表单统计装置的框图。
如图2所示,本发明还提供了一种表单统计装置200,包括:输入模块202,输入表单;行列统计模块204,根据全局条件和所述表单的每行的行条件,对所述每行进行统计,获得对应所述每行的行数据,根据全局条件和所述表单的每列的列条件,对所述每列进行统计,获得对应所述每列的列数据;汇总统计模块206,从所述行数据和所述列数据中找到类型相同的行数据和列数据,对所找到的行数据或列数据进行统计处理。
在上述技术方案中,所述行列统计模块204将所述行数据记录在行临时表中,将所述列数据记录在列临时表中。
在上述技术方案中,所述行列统计模块204通过行数据库命令,按所述全局条件和所述每行的行条件对所述每行进行统计,得到所述行数据,通过列数据库命令,按所述全局条件和所述每列的列条件对所述每列进行统计,得到所述列数据。
在上述技术方案中,还包括:存储器模块,存储所有的所述行数据库命令和所有的所述列数据库命令,以对所述表单的所有行和所有列进行批量统计。
在上述技术方案中,还包括:缓冲池模块,为所述行统计模块提供所述行临时表,为所述列统计模块提供所述列临时表。
图3是根据本发明的一个实施例的表单统计方法的流程图。
如图3所示,步骤302:生成随机流水号,用于为临时表命名,考虑到多用户并发进行二维统计,为隔离不同用户的中间数据,每个正在进行二维统计分析的用户线程使用的临时表不应重名。
步骤304:创建两张临时表,分别为行临时表(主键,行号,值)和列临时表(主键,列号,值),可以直接创建新的临时表,也可以从临时表缓冲池中获取,其中,临时表名称以上一步生成的流水号为后缀,“主键”为统计主体的主键,依据统计主体的不同而变化,如统计主体是人员,则“主键”是人员主键,“值”是统计主体的值。
步骤306:为了提高效率,实现批量向临时表导入数据,创建向临时表导入数据的sql命令的容器。容器长度为:二维区域的行数(M)+二维区域的列数(N)。
步骤308:为每个行条件生成sql命令,这个sql命令是将符合这个行条件和全局条件的统计数据导入到行临时表中,sql命令的格式为:对于第m行,
Insert into行临时表(主键,行号,值)select统计主体主键,m,统计类型(统计主体)from表连接树where全局条件and行条件m
将每个sql命令放入创建好的sql命令容器缓存起来。
步骤310:为每个列条件生成sql命令,这个sql命令是将符合这个列条件和全局条件的统计数据导入到列临时表中,sql命令的格式为:
对于第n列,
Insert into列临时表(主键,列号,值)select统计主体主键,n,统计类型(统计主体)from表连接树where全局条件and列条件n
将每个sql命令放入创建好的sql命令容器缓存起来。
步骤312:通过一次批量提交,把sql命令容器中的sql命令提交到数据执行。
步骤314:汇总统计,执行以下查询语句
Select行临时表.行号,列临时表.列号,count(行临时表.值)from行临时表,列临时表where行临时表.主键=列临时表.主键group by行临时表.行号,列临时表.列号
得到结果集为行,列,统计结果。
步骤312执行完成后形成的行列临时表中数据如下:
列临时表:
主键 | 列号 | 值 |
人员A的主键 | 1 | 1 |
人员B的主键 | 1 | 1 |
人员D的主键 | 1 | 1 |
人员A的主键 | 2 | 1 |
人员C的主键 | 2 | 1 |
人员F的主键 | 2 | 1 |
人员B的主键 | 3 | 1 |
人员F的主键 | 3 | 1 |
.................. | ............................ | ............................. |
行临时表:
主键 | 行号 | 值 |
人员A的主键 | 1 | 1 |
人员D的主键 | 1 | 1 |
人员C的主键 | 1 | 1 |
人员C的主键 | 2 | 1 |
人员D的主键 | 2 | 1 |
人员A的主键 | 3 | 1 |
人员B的主键 | 3 | 1 |
人员F的主键 | 3 | 1 |
.............................. | ....................... | ........................ |
执行步骤314后最终结果集示例为:
列 | 行 | 值 |
1 | 1 | 2 |
1 | 2 | 1 |
1 | 3 | 2 |
2 | 1 | 2 |
2 | 2 | 1 |
2 | 3 | 2 |
3 | 1 | 0 |
3 | 2 | 0 |
3 | 3 | 2 |
................... | ...................... | …………………… |
步骤316:如果步骤304创建了临时表则销毁这两张临时表,如果是从缓冲池中获取的临时表,则释放回缓冲池。其中,临时表生命周期管理:
用户一般是月末、季末或年底统一出报表,并发度很高,为了保证用户计算线程实例间互不影响,临时表对于计算线程应是私有的。有以下两种实现方案:
1.每次计算时创建临时表,计算结束后销毁临时表。
2.通过“临时表池”管理,“临时表池”的实现原理和“连接池”很相似,可以减少创建临时表的系统开销。
根据本发明的技术方案,可以表单统计时的查询次数大幅降低,从M×N次降低到了M+N+1次,使用私有的临时表,减少了对实际业务表的竞争,有利于提高并发度。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种表单统计方法,其特征在于,包括:
步骤102,输入表单;
步骤104,根据全局条件和所述表单的每行的行条件,对所述每行进行统计,获得对应所述每行的行数据,以及根据全局条件和所述表单的每列的列条件,对所述每列进行统计,获得对应所述每列的列数据;
步骤106,从所述行数据和所述列数据中找到类型相同的行数据和列数据,对所找到的行数据或列数据进行统计处理。
2.根据权利要求1所述的表单统计方法,其特征在于,所述步骤104还包括:将所述行数据记录在行临时表中,将所述列数据记录在列临时表中。
3.根据权利要求2所述的表单统计方法,其特征在于,所述步骤104包括:
通过行数据库命令,按所述全局条件和所述每行的行条件对所述每行进行统计,得到所述行数据,以及通过列数据库命令,按所述全局条件和所述每列的列条件对所述每列进行统计,得到所述列数据。
4.根据权利要求2所述的表单统计方法,其特征在于,所述步骤104还包括:将所有的所述行数据库命令和所有的所述列数据库命令都存储于存储器中,以对所述表单的所有行和所有列进行批量统计。
5.根据权利要求2所述的表单统计方法,其特征在于,所述行临时表和所述列临时表均从缓冲池中获取。
6.一种表单统计装置,其特征在于,包括:
输入模块,输入表单;
行列统计模块,根据全局条件和所述表单的每行的行条件,对所述每行进行统计,获得对应所述每行的行数据,以及根据全局条件和所述表单的每列的列条件,对所述每列进行统计,获得对应所述每列的列数据;
汇总统计模块,从所述行数据和所述列数据中找到类型相同的行数据和列数据,对所找到的行数据或列数据进行统计处理。
7.根据权利要求6所述的表单统计装置,其特征在于,所述行列统计模块将所述行数据记录在行临时表中,将所述列数据记录在列临时表中。
8.根据权利要求7所述的表单统计装置,其特征在于,所述行列统计模块通过行数据库命令,按所述全局条件和所述每行的行条件对所述每行进行统计,得到所述行数据,以及通过列数据库命令,按所述全局条件和所述每列的列条件对所述每列进行统计,得到所述列数据。
9.根据权利要求7所述的表单统计装置,其特征在于,还包括:
存储器模块,存储所有的所述行数据库命令和所有的所述列数据库命令,以对所述表单的所有行和所有列进行批量统计。
10.根据权利要求7所述的表单统计装置,其特征在于,还包括:
缓冲池模块,为所述行统计模块提供所述行临时表,为所述列统计模块提供所述列临时表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010221336.2A CN101916254B (zh) | 2010-06-29 | 2010-06-29 | 表单统计方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010221336.2A CN101916254B (zh) | 2010-06-29 | 2010-06-29 | 表单统计方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101916254A true CN101916254A (zh) | 2010-12-15 |
CN101916254B CN101916254B (zh) | 2016-07-06 |
Family
ID=43323766
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010221336.2A Active CN101916254B (zh) | 2010-06-29 | 2010-06-29 | 表单统计方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101916254B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102360371A (zh) * | 2011-09-29 | 2012-02-22 | 畅捷通信息技术股份有限公司 | 数据处理装置和数据处理方法 |
CN102436475A (zh) * | 2011-09-29 | 2012-05-02 | 用友软件股份有限公司 | 数据表汇总装置和数据表汇总方法 |
CN103186560A (zh) * | 2011-12-28 | 2013-07-03 | 金蝶软件(中国)有限公司 | 一种数据排序方法以及相关装置 |
CN103544006A (zh) * | 2013-09-16 | 2014-01-29 | 青岛英网资讯股份有限公司 | 自定义表单的方法及表单绘制方法 |
CN108345646A (zh) * | 2018-01-16 | 2018-07-31 | 广东电网有限责任公司信息中心 | 一种运用拦截技术快速自动构建多维度报表的方法 |
CN113168413A (zh) * | 2018-10-09 | 2021-07-23 | 塔谱软件公司 | 用于交互式数据准备应用的多个数据集的相关增量加载 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101533406A (zh) * | 2009-04-10 | 2009-09-16 | 北京锐安科技有限公司 | 一种海量数据查询方法 |
US20090292711A1 (en) * | 2008-05-20 | 2009-11-26 | Konik Rafal P | Constraints With Hidden Rows in a Database |
-
2010
- 2010-06-29 CN CN201010221336.2A patent/CN101916254B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090292711A1 (en) * | 2008-05-20 | 2009-11-26 | Konik Rafal P | Constraints With Hidden Rows in a Database |
CN101533406A (zh) * | 2009-04-10 | 2009-09-16 | 北京锐安科技有限公司 | 一种海量数据查询方法 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102360371A (zh) * | 2011-09-29 | 2012-02-22 | 畅捷通信息技术股份有限公司 | 数据处理装置和数据处理方法 |
CN102436475A (zh) * | 2011-09-29 | 2012-05-02 | 用友软件股份有限公司 | 数据表汇总装置和数据表汇总方法 |
CN102436475B (zh) * | 2011-09-29 | 2013-12-25 | 用友软件股份有限公司 | 数据表汇总装置和数据表汇总方法 |
CN102360371B (zh) * | 2011-09-29 | 2016-07-20 | 畅捷通信息技术股份有限公司 | 数据处理装置和数据处理方法 |
CN103186560A (zh) * | 2011-12-28 | 2013-07-03 | 金蝶软件(中国)有限公司 | 一种数据排序方法以及相关装置 |
CN103186560B (zh) * | 2011-12-28 | 2017-04-05 | 金蝶软件(中国)有限公司 | 一种数据排序方法以及相关装置 |
CN103544006A (zh) * | 2013-09-16 | 2014-01-29 | 青岛英网资讯股份有限公司 | 自定义表单的方法及表单绘制方法 |
CN103544006B (zh) * | 2013-09-16 | 2016-08-17 | 青岛英网资讯股份有限公司 | 自定义表单的方法及表单绘制方法 |
CN108345646A (zh) * | 2018-01-16 | 2018-07-31 | 广东电网有限责任公司信息中心 | 一种运用拦截技术快速自动构建多维度报表的方法 |
CN113168413A (zh) * | 2018-10-09 | 2021-07-23 | 塔谱软件公司 | 用于交互式数据准备应用的多个数据集的相关增量加载 |
CN113168413B (zh) * | 2018-10-09 | 2022-07-01 | 塔谱软件公司 | 用于交互式数据准备应用的多个数据集的相关增量加载 |
Also Published As
Publication number | Publication date |
---|---|
CN101916254B (zh) | 2016-07-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10691646B2 (en) | Split elimination in mapreduce systems | |
US8359316B2 (en) | Database table look-up | |
Bonnet et al. | Reduce, you say: What nosql can do for data aggregation and bi in large repositories | |
US10152502B2 (en) | Systems, apparatuses, methods, and computer readable media for processing and analyzing big data using columnar index data format | |
CN101916254A (zh) | 表单统计方法和装置 | |
CN103577590A (zh) | 一种数据查询方法和系统 | |
CN104731814A (zh) | 数据灵活比对分析系统及方法 | |
CN105426434A (zh) | 基于多维度的人口信息统计分析系统 | |
CN102819589B (zh) | 一种基于etl的数据优化方法及设备 | |
US20100235344A1 (en) | Mechanism for utilizing partitioning pruning techniques for xml indexes | |
CN103646079A (zh) | 一种用于图数据库搜索的分布式索引及其并行生成方法 | |
US10726005B2 (en) | Virtual split dictionary for search optimization | |
Sahal et al. | Exploiting coarse-grained reused-based opportunities in Big Data multi-query optimization | |
US8880485B2 (en) | Systems and methods to facilitate multi-threaded data retrieval | |
US20140046975A1 (en) | Aggregate data streams in relational database systems | |
Sidi et al. | Star schema advantages on data warehouse: using bitmap index and partitioned fact tables | |
Svyatkovskiy et al. | Large-scale text processing pipeline with Apache Spark | |
Ranawade et al. | Online analytical processing on hadoop using apache kylin | |
CN101639851A (zh) | 一种数据存储、查询的方法和装置 | |
Ray et al. | Parallel in-memory trajectory-based spatiotemporal topological join | |
US20080301085A1 (en) | Dynamic Database File Column Statistics for Arbitrary Union Combination | |
Anusha et al. | Big data techniques for efficient storage and processing of weather data | |
US10877998B2 (en) | Highly atomized segmented and interrogatable data systems (HASIDS) | |
US9626397B2 (en) | Discounted future value operations on a massively parallel processing system and methods thereof | |
US9239867B2 (en) | System and method for fast identification of variable roles during initial data exploration |
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 |