CN1869982A - 一种报表数据采集系统和方法 - Google Patents
一种报表数据采集系统和方法 Download PDFInfo
- Publication number
- CN1869982A CN1869982A CN 200510115673 CN200510115673A CN1869982A CN 1869982 A CN1869982 A CN 1869982A CN 200510115673 CN200510115673 CN 200510115673 CN 200510115673 A CN200510115673 A CN 200510115673A CN 1869982 A CN1869982 A CN 1869982A
- Authority
- CN
- China
- Prior art keywords
- data
- storing process
- statement
- temporary table
- module
- 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)
Abstract
本发明公开了一种报表数据采集系统,包括:数据库、静态语句存储模块和存储过程动态生成模块;其中,数据库用于创建并运行存储过程,读取存储的原始数据,生成报表数据;静态语句存储模块用于存储预定义的静态语句;存储过程动态生成模块用于读取存储的静态语句,生成存储过程。而且本发明还基于上述系统采取:将数据部分操作和视图部分操作分别由存储过程动态生成模块和数据采集模块进行实现,从而使最终报表用户可以定制操作,并降低了开发和维护的工作量。另外,本发明还公开了相应的报表数据采集方法。避免了现有技术采取预定义存储过程的方式所导致的系统处理负担重和冗余占用系统存储空间的缺陷,优化了报表数据采集过程。
Description
技术领域
本发明涉及数据库技术,特别是指一种报表数据采集系统和方法。
背景技术
报表数据采集系统的功能是:采集业务数据,对数据进行处理,最终获得生成报表所需的报表数据。一个常见的报表数据采集系统主要包括数据采集模块,用于根据数据源的定义从数据库中获取生成报表所需的数据,即报表数据,最终生成可供用户查阅的报表。
一般的报表数据采集系统均支持从数据库,扩展标识语言(XML)文件,企业级JavaBean(EJB)中采集数据。在一般应用场景下,报表数据采集系统仅需通过一条结构化查询语言(SQL)语句,从数据库中查询本次业务所需的原始数据,然后就可以直接利用获得的原始数据生成报表了。然而在电信等复杂环境中,由于业务数据来源比较复杂,因此报表数据在大多数情况下是无法从数据库或XML文件中直接获得的,而是需要对从数据库中查询到的原始数据进一步进行预处理,如:分组聚合,包括横向聚合和纵向聚合等,从而将采集到的原始数据转化为最终生成报表所需的数据,即报表数据。例如:数据库中保存有2005年1月4日这一天每15分钟的话务量数据,但是用户需要查看的是一整天的数据,这时就需要对原始的15分钟的话务量数据做一次汇总,汇总完毕的数据才可以用来生成报表,才是报表数据。
现有的一种报表数据采集系统采取预定义存储过程(Stored Procedure)的方式实现对原始数据的预处理,得到最终的报表数据,该系统结构如图1所示,主要包括:数据采集模块、数据源定义存储模块和数据库,且数据库又进一步包括:原始数据存储模块和存储过程管理模块,其中,数据采集模块用于根据来自外部的报表数据生成指令从数据源定义存储模块读取数据源定义,并将读取的数据源定义和接收到的报表数据生成指令中所包含的用户条件值携带于存储过程调用运行指令中发送至数据库中的存储过程管理模块。存储过程管理模块用于存储预定义的存储过程以及根据数据采集模块的指令调用并运行存储过程,从原始数据存储模块读取原始数据,并对读取的原始数据进行预处理,从而生成报表数据输出至数据采集模块。利用该系统进行报表数据采集的过程如下:首先,在数据库的存储过程管理模块中保存预定义的存储过程;其次,数据采集模块根据来自外部的报表数据生成指令读取保存的数据源定义;其中,数据源定义包括:调用存储过程的查询语句;再次,数据采集模块向数据库中的存储过程管理模块发送存储过程调用运行指令,并在该指令中携带获取的数据源定义和接收到的用户条件值;最后,存储过程管理模块根据接收到的数据源定义和用户条件值调用并运行相应存储过程,从原始数据存储模块中读取保存的原始数据,并对读取的原始数据进行预处理,得到报表数据。下面以数据库中保存的原始数据为以15分钟为单位的CPU性能数据,需要获取的报表数据为按小时汇总的CPU性能数据为例,详细说明采用上述方法进行报表数据采集的过程:
首先,数据采集模块获取数据源定义中的查询语句和用户条件值;其中,
数据源定义为:查询语句——存储过程X;
而用户条件值为:第1天至第5天。
其次,数据采集模块向数据库中的存储过程管理模块发送存储过程调用运行指令,并在指令中携带上述查询语句和用户条件值。
再次,存储过程管理模块接收到指令后,根据查询语句调用保存的用于实现按小时汇总CPU性能数据的存储过程X,并将用户条件值通过存储过程X的相应参数接口输入到存储过程X中。
其中,存储过程X主要包括如下静态语句部分:
a、查询以15分钟为单位的CPU性能数据;
b、将查询到的CPU性能数据存放于数据库临时表中;
c、从数据库临时表中以小时为单位将性能数据汇总输出。
而上述将用户条件值输入到存储过程中具体包括:将用户条件值,即:第1天至第5天插入a语句的相应参数接口,从而使得a语句能够执行从数据库的原始数据中查询第1天至第5天的CPU性能数据的步骤。
最后,存储过程管理模块运行存储过程X,执行相应的从原始数据存储模块中读取保存的原始数据、对原始数据进行预处理以及生成报表数据的过程。
上述过程说明了获取按小时汇总的CPU性能数据的过程,而当要获取按天汇总的CPU性能数据时,则需要调用预定义的用于实现按天汇总的CPU性能数据的存储过程Y,然后同样按照上述过程进行实现。其中,存储过程Y所包含的静态语句为:
A、查询以15分钟为单位的CPU性能数据;
B、将查询到的CPU性能数据存放于数据库临时表中;
C、从数据库临时表中以天为单位将性能数据汇总输出。
可以看出:上述存储过程X的前两个语句a和b与存储过程Y的前两个语句A和B分别相同,因此系统需要对预定义的不同存储过程的相同静态语句进行重复保存和重复维护,造成系统的冗佘处理负担和对系统存储空间的冗余占用。
发明内容
有鉴于此,本发明的一个目的在于提供一种报表数据采集系统,解决现有技术中所存在的保存预定义存储过程的重复静态语句部分造成的系统处理负担重以及冗余占用系统存储空间的问题。
本发明提供的报表数据采集系统主要包括:数据库、静态语句存储模块和存储过程动态生成模块;其中,该数据库用于创建并运行存储过程,读取存储的原始数据,生成报表数据;静态语句存储模块用于存储预定义的静态语句;存储过程动态生成模块用于读取存储的静态语句,生成存储过程。
在上述系统中,进一步包括:数据源定义存储模块和数据采集模块;其中,
所述数据源定义存储模块用于存储预定义的数据源参数;
所述数据采集模块用于读取存储的数据源参数,向存储过程动态生成模块发送该数据源参数和接收自外部的用户条件值;并向数据库发送生成的存储过程,以及输出数据库返回的报表数据;
所述存储过程动态生成模块用于根据接收到的数据源参数读取存储的静态语句,并基于该静态语句、数据源参数和用户条件值生成存储过程。
在上述系统中,所述数据库包括:原始数据存储模块和存储过程管理模块;其中,
所述原始数据存储模块用于存储原始数据;
所述存储过程管理模块用于创建并运行存储过程,执行读取存储的原始数据,生成报表数据的操作。
在上述系统中,进一步包括:数据源定义存储模块;其中,
所述数据源定义存储模块用于存储预定义的视图部分操作语句;
所述存储过程动态生成模块用于生成实现数据部分操作的存储过程;
所述数据库用于通过运行生成的实现数据部分操作的存储过程对原始数据执行数据部分操作,并通过运行视图部分操作语句对执行上述数据部分操作得到的结果数据执行视图部分操作,生成报表数据。
在上述系统中,所述数据源定义存储模块进一步用于存储预定义的数据源参数;且
该系统进一步包括:数据采集模块;其中,
所述数据采集模块用于从数据源定义存储模块读取数据源参数和视图部分操作语句,该视图部分操作语句为临时表查询语句;以及向存储过程动态生成模块发送数据源参数和接收自外部的用户条件值;并向数据库发送生成的存储过程和所述临时表查询语句,输出数据库返回的报表数据;
所述存储过程动态生成模块用于读取静态语句存储模块中存储的静态语句,并基于接收到的数据源参数、用户条件值生成实现数据部分操作的存储过程;
所述数据库用于创建接收到的实现数据部分操作的存储过程,并通过运行创建的存储过程实现创建空临时表、读取存储的原始数据,向创建的空临时表中插入原始数据的操作;以及通过运行接收到的临时表查询语句对该临时表中的数据进行操作,生成报表数据,并返回生成的报表数据。
在上述系统中,所述数据库包括:原始数据存储模块、存储过程管理模块和临时表管理模块;其中,
所述原始数据存储模块用于存储原始数据;
所述存储过程管理模块用于创建接收到的存储过程,并通过运行创建的存储过程实现从原始数据存储模块中读取原始数据,并向临时表管理模块发送空临时表创建指令、原始数据和原始数据插入指令;
所述临时表管理模块用于创建空临时表,并向该空临时表中插入原始数据;以及通过运行临时表查询语句,对该临时表中的数据进行操作,生成报表数据,并返回生成的报表数据。
本发明的另一个目的在于提供一种报表数据采集方法,该方法包括如下步骤:
a、读取存储的静态语句,生成存储过程;
b、创建并运行生成的存储过程,读取存储的原始数据,生成报表数据。
在上述方法中,所述步骤a之前进一步包括:
a0、接收来自外部的用户条件值,读取预定义并存储的数据源参数;
所述步骤a包括:根据读取的数据源参数读取存储的相应静态语句,并将数据源参数和用户条件值通过参数接口传入读取的静态语句中,然后将静态语句拼装成存储过程。
在上述方法中,进一步包括:预定义并存储视图部分操作语句;
所述步骤a0进一步包括:读取存储的视图部分操作语句;
所述步骤a包括:生成实现数据部分操作的存储过程;
所述步骤b包括:创建生成的实现数据部分操作的存储过程,并通过运行该存储过程对原始数据执行数据部分操作,以及通过运行视图部分操作语句对执行上述数据部分操作得到的结果数据执行视图部分操作,生成报表数据。
在上述方法中,所述视图部分操作语句为临时表查询语句;
步骤a中,所述生成实现数据部分操作的存储过程的步骤包括:基于接收到的数据源参数、用户条件值生成实现数据部分操作的存储过程;
所述步骤b包括:
b1、创建并运行所述实现数据部分操作的存储过程,实现创建空临时表,读取原始数据,并向创建的空临时表中插入原始数据;
b2、运行所述临时表查询语句,对所述临时表中的数据进行操作,生成报表数据。
在上述方法中,步骤b2中所述的操作包括:对临时表中的原始数据进行竖向整合、横向整合以及字符串运算。
在上述方法中,所述步骤b之后进一步包括:删除创建的存储过程。
综上所述,本发明采取在数据采集系统中包括:数据库、静态语句存储模块和存储过程动态生成模块;其中,数据库用于创建并运行存储过程,读取存储的原始数据,生成报表数据;静态语句存储模块用于存储预定义的静态语句;存储过程动态生成模块用于读取存储的静态语句,生成存储过程。而且本发明还基于上述系统采取:将数据部分操作和视图部分操作分别由存储过程动态生成模块和数据采集模块进行实现,从而使最终报表用户可以定制操作,并降低了开发和维护的工作量。另外,本发明还公开了相应的报表数据采集方法。避免了现有技术采取预定义存储过程的方式所导致的系统处理负担重和冗余占用系统存储空间的缺陷,优化了报表数据采集过程。
附图说明
图1为现有技术的报表数据采集系统结构示意图。
图2为根据本发明一实施例的报表数据采集系统结构示意图。
图3为根据本发明另一实施例的报表数据采集系统结构示意图。
图4为根据本发明一实施例的报表数据采集方法流程图。
图5为根据本发明另一实施例的报表数据采集方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
本发明的核心思想是:在数据采集系统中包括:数据库、静态语句存储模块和存储过程动态生成模块;其中,数据库用于创建并运行存储过程,读取存储的原始数据,生成报表数据;静态语句存储模块用于存储预定义的静态语句;存储过程动态生成模块用于读取存储的静态语句,生成存储过程。从而避免现有技术中采取预定义存储过程的方式所导致的系统处理负担重和冗余占用系统存储空间的缺陷,优化报表数据采集过程。
下面通过具体实施例并结合附图详细说明本发明。
如图2所示,根据本发明一实施例的报表数据采集系统包括:数据源定义存储模块、数据采集模块和数据库,且数据库包括:原始数据存储模块和存储过程管理模块;另外,本发明系统还进一步包括:静态语句存储模块和存储过程动态生成模块。其中,
数据源定义存储模块用于保存数据源定义;其中,数据源定义包括:数据源参数,数据源参数定义了:返回字段属性,如背景技术例子中所述的业务类型(business type)属性和汇总类型属性等。
数据采集模块用于根据接收自外部的报表数据生成指令从数据源定义存储模块中读取数据源定义,并将读取的数据源定义和接收到的报表数据生成指令中所包含的用户条件值携带于存储过程生成指令中发送至存储过程动态生成模块;以及从存储过程动态生成模块获取生成的存储过程,并向数据库中的存储过程管理模块发送存储过程创建运行指令和存储过程;以及在接收到来自存储过程管理模块的报表数据后,输出报表数据,并向存储过程管理模块发送存储过程删除指令。其中,所述用户条件值与现有技术的用户条件值完全相同,即用于传输用户的指定信息,如:第1天至第5天等。
静态语句存储模块用于存储用来生成存储过程的静态语句。
存储过程动态生成模块用于在接收到数据采集模块的存储过程生成指令后,根据指令中携带的数据源定义从静态语句存储模块读取相应的静态语句,然后基于读取的静态语句、数据源定义以及用户条件值生成存储过程。
其中,上述生成存储过程的具体过程为:存储过程动态生成模块将用户条件值通过参数接口传入读取的相应静态语句中,然后将读取的静态语句拼装成存储过程。
原始数据存储模块用于存储原始数据。
存储过程管理模块用于根据数据采集模块的存储过程创建运行指令在数据库中创建并运行接收到的存储过程,从原始数据存储模块读取原始数据,对读取的原始数据进行预处理,生成报表数据输出至数据采集模块;以及在接收到数据采集模块的存储过程删除指令后,从数据库中删除相应存储过程。
以上说明了根据本发明一实施例的报表数据采集系统的组成结构,即采取由存储过程动态生成模块生成能够获取到最终报表数据的存储过程,最终通过运行该存储过程而得到报表数据。然而,通常生成的存储过程主要包括以下几个组成部分:
(1)创建临时表;
(2)查询原始数据,并将查询到的原始数据存放在临时表中;
(3)对临时表中的数据进行竖向整合,即汇总,平均等
(4)对临时表中的数据进行横向整合,即进行字段之间的计算。
(5)对临时表中的数据进行字符串运算,如保留两位小数等。
(6)使用查询语句从临时表中返回最终用于报表生成的数据。
在上述组成部分中,第(1)和(2)部分,即创建和填充临时表的操作可以作为数据部分操作,数据部分操作不考虑数据的输出格式,在不同报表中的处理过程相对比较固定,维护量不大,因此可以采取用存储过程生成模块实现数据部分。而第(3)、(4)、(5)和(6)部分,即对临时表中的数据进行整合的操作可以作为视图部分操作,视图部分操作侧重于根据报表需要对临时表中的数据进行各种各样的格式调整,在不同报表中的处理过程通常不固定,因此可以根据需要调整数据源存储模块中的数据源定义,然后由数据采集模块根据数据源定义来实现。而且调整数据源定义无需重新编译代码,因此可以实现最终用户的定制操作,降低开发和维护的工作量。
下面通过本发明另一实施例说明上述数据部分与视图部分分离的报表数据采集系统,该系统组成结构如图3所示,主要包括:数据源定义存储模块、数据采集模块、静态语句存储模块、存储过程动态生成模块和数据库,且数据库包括:原始数据存储模块和存储过程管理模块;与上述实施例中系统不同的是,该系统还进一步包括:临时表生成模块;且在数据库中进一步包括临时表管理模块。其中,
数据源定义存储模块用于保存数据源定义;
其中,数据源定义包括:数据源参数和临时表查询语句,数据源参数定义了:返回字段属性,如背景技术例子中所述的业务类型(business type)属性和汇总类型属性等。临时表查询语句是由开发人员根据所需临时表结构预定义的,通过该临时表查询语句实现对临时表中数据的各视图部分操作处理,主要包括:竖向聚合、横向聚合和字符串运算等。临时表查询语句可以是SQL语句,且该临时表查询语句中可以使用固定字符串,如:@Temp Table等作为缺省临时表名。
数据采集模块用于根据接收自外部的报表数据生成指令从数据源定义存储模块中读取数据源参数和临时表生成语句,并向临时表生成模块发送临时表生成指令、读取的数据源参数和接收到的报表数据生成指令中包含的用户条件值;以及从临时表生成模块接收临时表名,并用接收到的临时表名替换获取的临时表查询语句中的缺省临时表名,然后向临时表管理模块发送包含相应临时表名的临时表查询语句。
其中,用户条件值与现有技术的用户条件值完全相同,用于传输用户的指定信息,如:第1天至第5天等。
临时表生成模块用于接收数据采集模块发送的临时表生成指令、数据源定义和用户条件值,动态分配一个临时表名,并向存储过程动态生成模块发送存储过程生成指令、数据源定义、用户条件值和分配的临时表名;以及从存储过程动态生成模块获取生成的存储过程,并向数据库中的存储过程管理模块发送存储过程创建运行指令和该存储过程;以及在接收到存储过程管理模块返回的确认消息后,向数据采集模块发送分配的临时表名;以及向存储过程管理模块发送存储过程删除指令。
静态语句存储模块用于存储静态语句。
存储过程动态生成模块用于在接收到临时表生成模块发送的存储过程生成指令、数据源定义、用户条件值和临时表名后,从静态语句存储模块中获取相应静态语句,然后基于获取的静态语句、接收到的数据源定义、用户条件值和临时表名生成实现数据部分操作的存储过程。其中,
实现数据部分操作的存储过程主要包括如下部分:
A、以接收到的临时表名创建一个空临时表;
B、读取原始数据;
C、将读取的原始数据插入创建的空临时表中。
原始数据存储模块用于存储原始数据。
存储过程管理模块用于接收存储过程创建运行指令和存储过程,创建存储过程,并通过运行创建的存储过程实现向临时表管理模块发送包含相应临时表名的临时表创建指令、从原始数据存储模块中读取存储的原始数据,并向临时表管理模块发送原始数据插入指令和原始数据;以及向临时表生成模块转发接收到的确认消息,并在接收到存储过程删除指令后,删除创建的存储过程。
临时表管理模块用于根据临时表创建指令创建具有相应临时表名的空临时表,以及根据原始数据插入指令将接收到的原始数据插入创建的空临时表中,并存储该临时表;以及通过运行接收到的临时表查询语句,实现从存储的临时表中查找临时表名与临时表查询语句中的临时表名相同的临时表,并对查找到的临时表中的数据进行变换或运算操作,生成报表数据;以及向数据采集模块返回生成的报表数据。
以上说明了本发明报表数据采集系统的组成结构,下面说明根据本发明的报表数据采集方法,该方法包括:预先保存数据源定义和静态语句,该方法流程如图4所示,具体包括如下步骤:
步骤401:当数据采集模块接收到来自外部的携带用户条件值的报表数据生成指令后,根据该指令从数据源定义存储模块中读取保存的相应数据源定义,然后向存储过程动态生成模块发送存储过程生成指令,并在指令中携带读取的数据源定义和接收到的用户条件值。
本步骤中,数据源定义包括:数据源参数——返回字段属性,如背景技术的例子中所述,返回字段属性包括:业务类型属性和汇总类型属性等。用户条件值则与现有技术的用户条件值完全相同,用于传输用户的指定信息,如:第1天至第5天等。
步骤402:存储过程动态生成模块接收到数据采集模块的存储过程生成指令后,根据指令中携带的数据源定义从静态语句存储模块读取相应的静态语句,然后基于接收到的数据源定义、用户条件值和静态语句生成存储过程。
其中,上述生成存储过程的具体过程为:存储过程动态生成模块将用户条件值通过参数接口传入读取的相应静态语句,然后将读取的静态语句拼装成存储过程。
步骤403:数据采集模块通过相应接口,如getSPScript接口从存储过程动态生成模块获取生成的存储过程,然后向数据库中的存储过程管理模块发送存储过程创建运行指令和该存储过程。
步骤404:存储过程管理模块根据数据采集模块的存储过程创建运行指令在数据库中创建并运行接收到的存储过程,从原始数据存储模块读取原始数据,并对读取的原始数据进行预处理,最后生成报表数据输出至数据采集模块。
步骤405:数据采集模块接收到来自存储过程管理模块的报表数据后,输出报表数据,并向存储过程管理模块发送删除存储过程指令;存储过程管理模块接收到数据采集模块的存储过程删除指令后,从数据库中删除创建的存储过程。
以上说明了根据本发明一实施例的报表数据采集方法,下面以获取按小时汇总的CPU性能数据为例详细说明上述报表数据采集过程:
首先,根据上述步骤401,数据采集模块获取数据源定义和用户条件值,然后将获取的数据源定义和用户条件值发送至存储过程动态生成模块。
其中,数据源定义包括:数据源参数——返回字段属性;
返回字段属性包括:业务类型=获取汇总的CPU性能数据;汇总类型=小时。
用户条件值为:第1天至第5天。
其次,根据上述步骤402,存储过程动态生成模块接收到数据源定义和用户条件值后,根据数据源定义中的数据源参数,即:返回字段属性中的业务类型——获取汇总的CPU性能数据读取静态语句存储模块中的保存的相应静态语句,然后向读取的静态语句传入参数,最后将静态语句拼装成存储过程。
其中,读取静态语句、传入参数以及拼装静态语句的具体步骤包括:
(一)、存储过程动态生成模块初始化一个字符串,并根据业务类型查询静态语句存储模块中保存的静态语句,查询到的静态语句具体包括:
a、查询以15分钟为单位的CPU性能数据;
b、将查询到的CPU性能数据存放于数据库临时表中;
c、从数据库临时表中将性能数据汇总输出。
(二)、存储过程动态生成模块将用户条件值——第1天至第5天通过参数接口传入上述静态语句a中,从而使静态语句a能够执行查询从第1天至第5天的CPU性能数据的操作,最后将静态语句a置于上述初始化的字符串之后。
(三)、存储过程动态生成模块将查询到的静态语句b直接置于上述静态语句a之后。
(四)、存储过程动态生成模块将数据源参数中的汇总类型——小时通过参数接口传入查询到的上述静态语句c中,从而使静态语句c能够执行按小时汇总查询到的CPU性能数据的操作,最后将静态语句c置于上述静态语句b之后,生成所需存储过程。
最后,执行上述步骤403至步骤405,最终获得第1天至第5天按小时汇总的CPU性能数据。
以上说明了根据本发明一具体实施例的报表数据采集方法,下面说明数据部分与视图部分分离的报表数据采集方法,该方法包括:由报表开发人员根据所需临时表结构预先定义并在数据源定义模块中保存实现数据视图部分操作,即竖向整合,横向整合以及字符串运算的临时表查询语句,即SQL语句。并在该临时表查询语句中使用固定字符串,如@Temp Table作为缺省临时表名。该方法流程如图5所示,具体包括如下步骤:
步骤501:当数据采集模块接收到来自外部的携带用户条件值的报表数据生成指令后,根据该指令从数据源定义存储模块中读取保存的数据源参数和临时表查询语句,然后向临时表生成模块发送临时表生成指令、数据源参数和用户条件值。
步骤502:临时表生成模块接收到临时表生成指令、数据源定义和用户条件值后,动态分配一个临时表名,然后向存储过程动态生成模块发送存储过程生成指令、数据源参数、用户条件值和分配的临时表名。
其中,分配临时表名的方式可以为任意选取一个字符串。
步骤503:存储过程动态生成模块接收到该存储过程生成指令、数据源参数、用户条件值和临时表名后,根据数据源参数从静态语句存储模块读取相应的静态语句,然后基于读取的静态语句、接收到的数据源参数、用户条件值和临时表名生成存储过程。
其中,生成的存储过程具体如下:
A、以临时表名创建一个空临时表;
B、查询原始数据;
C、将原始数据插入创建的空临时表中。
上述生成存储过程的具体过程为:将临时表名和用户条件值分别通过相应参数接口传入读取的相应静态语句中,然后将读取的静态语句拼装成存储过程。
步骤504:临时表生成模块从存储过程动态生成模块获取生成的存储过程,并向数据库中的存储过程管理模块发送存储过程创建运行指令和该存储过程。
步骤505:存储过程管理模块接收到存储过程创建运行指令和存储过程后,首先创建存储过程,然后运行创建的存储过程,即执行向临时表管理模块发送以相应临时表名创建一个空临时表,接着从原始数据存储模块中读取原始数据,然后向临时表管理模块发送原始数据插入指令和读取的原始数据的操作。
步骤506:临时表管理模块接收到临时表创建指令后,执行以相应临时表名创建一个空临时表,并在接收到原始数据插入指令和原始数据后,执行向创建的空临时表中插入相应原始数据的操作,然后保存该临时表,并向存储过程管理模块返回确认消息。
步骤507:存储过程管理模块向临时表生成模块转发接收到的确认消息;临时表生成模块接到确认消息后,向数据采集模块发送分配的相应临时表名。
步骤508:数据采集模块用接收到的临时表名替换所获取临时表查询语句中的固定字符串,然后向临时表管理模块发送相应临时表查询语句。
步骤509:临时表管理模块运行相应临时表查询语句,即查询保存的相应临时表,并根据临时表查询语句对查找到的临时表中的数据进行运算或变换操作,然后向数据采集模块返回最终得到的数据,即报表数据,结束本流程。
其中,查询临时表具体是指:查找所保存临时表的临时表名中与临时表查询语句中的临时表名相同的临时表。而对查找到的临时表进行运算或变换操作则具体是指对临时表中数据进行竖向整合、横向整合以及字符串运算等。
其中的竖向整合是指对临时表中的数据进行分组(Group by)、分类(Order by)、求和(Sum)以及取平均值(Avg)等操作。而横向整合则是指对临时表中的数据进行加、减、乘、除等运算。字符串运算是指对临时表中的数据进行取整和四舍五入等运算。
以上说明了根据本发明另一实施例的报表数据采集方法,下面以获取不同型号交换机的呼叫成功率为例详细说明上述报表数据采集方法:
首先,根据上述步骤501,数据采集模块接收来自用户的报表数据生成指令,并从数据源定义存储模块读取数据源定义,然后向临时表生成模块发送临时表生成指令、数据源参数和用户条件值。
其中,用户条件值为:第1天至第5天。
数据源参数为:汇总类型——小时。临时表查询语句为:Select交换机ID,Sum(试占次数),Sum(接通次数);Round(Sum(试占次数)/Sum(接通次数),2)AS呼叫成功率;From@Temp Table;Groupby交换机ID。
其次,执行上述步骤502至步骤505,即分配临时表名,生成存储过程以及创建运行存储过程的步骤,其中,在本实施例中分配的临时表名为:“#tmp_98723411”。
再次,根据上述步骤506,执行由临时表管理模块创建一个空临时表,并向创建的空临时表中插入原始数据的操作。其中,插入原始数据之后的临时表结构如表1所示。
呼叫类型 | 交换机ID | 试占次数 | 接通次数 |
Internal Call | 2341 | 231 | 234 |
External Call | 2341 | 53 | 541 |
Internal Call | 2342 | 345 | 44 |
External Call | 2342 | 234 | 86 |
表1
接着,执行上述步骤507至509,而且在上述步骤508中所述的用临时表名替换临时表查询语句中的缺省临时表名,在本例中就是用临时表名“#tmp_98723411”替换临时表查询语句中的“@Temp Table”。
另外,根据上述步骤509,临时表管理模块根据临时表查询语句中携带的临时表名查找到表1为目标临时表,然后根据上述临时表查询语句对表1中的数据进行竖向整合为:按照交换机ID进行分组汇总,得到各型号交换机进行内、外部呼叫之和,其结果如下表2所示:
交换机ID | 试占次数 | 接通次数 |
2341 | 284 | 775 |
2342 | 579 | 130 |
表2
根据上述临时表查询语句对表2中的数据进行横向整合为:增加一个呼叫成功率字段,而且呼叫成功率=接通次数/试占次数,得到的结果如下表3所示:
交换机ID | 试占次数 | 接通次数 | 呼叫成功率 |
2341 | 284 | 775 | 0.366666 |
2342 | 579 | 130 | 4.459999 |
表3
根据上述临时表查询语句,将表3中的呼叫成功率只保留前两位小数,即生成最终的报表数据,所得结果如下表4所示:
交换机ID | 试占次数 | 接通次数 | 呼叫成功率 |
2341 | 284 | 775 | 0.36 |
2342 | 579 | 130 | 4.45 |
表4
由此可见,如果在另一张报表中想要对呼叫成功率取整,只需将数据源定义存储模块中存储的临时表查询语句修改为“Select交换机ID,Sum(试占次数),Sum(接通次数),Round(Sum(试占次数)/Sum(接通次数)),AS呼叫成功率from@Temp Table Groupby交换机ID”,即只需修改Round函数的参数即可,而无需重新修改编译存储过程动态生成模块,从而减轻开发维护的工作量。
总之,以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。
Claims (12)
1、一种报表数据采集系统,该系统包括数据库,该数据库用于创建并运行存储过程,读取存储的原始数据,生成报表数据;
其特征在于,该系统进一步包括:静态语句存储模块和存储过程动态生成模块;其中,
静态语句存储模块用于存储预定义的静态语句;
存储过程动态生成模块用于读取存储的静态语句,生成存储过程。
2、根据权利要求1所述的系统,其特征在于,该系统进一步包括:数据源定义存储模块和数据采集模块;其中,
所述数据源定义存储模块用于存储预定义的数据源参数;
所述数据采集模块用于读取存储的数据源参数,向存储过程动态生成模块发送该数据源参数和接收自外部的用户条件值;并向数据库发送生成的存储过程,以及输出数据库返回的报表数据;
所述存储过程动态生成模块用于根据接收到的数据源参数读取存储的静态语句,并基于该静态语句、数据源参数和用户条件值生成存储过程。
3、根据权利要求1所述的系统,其特征在于,所述数据库包括:原始数据存储模块和存储过程管理模块;其中,
所述原始数据存储模块用于存储原始数据;
所述存储过程管理模块用于创建并运行存储过程,执行读取存储的原始数据,生成报表数据的操作。
4、根据权利要求1所述的系统,其特征在于,该系统进一步包括:数据源定义存储模块;其中,
所述数据源定义存储模块用于存储预定义的视图部分操作语句;
所述存储过程动态生成模块用于生成实现数据部分操作的存储过程;
所述数据库用于通过运行生成的实现数据部分操作的存储过程对原始数据执行数据部分操作,并通过运行视图部分操作语句对执行上述数据部分操作得到的结果数据执行视图部分操作,生成报表数据。
5、根据权利要求4所述的系统,其特征在于,所述数据源定义存储模块进一步用于存储预定义的数据源参数;且
该系统进一步包括:数据采集模块;其中,
所述数据采集模块用于从数据源定义存储模块读取数据源参数和视图部分操作语句,该视图部分操作语句为临时表查询语句;以及向存储过程动态生成模块发送数据源参数和接收自外部的用户条件值;并向数据库发送生成的存储过程和所述临时表查询语句,输出数据库返回的报表数据;
所述存储过程动态生成模块用于读取静态语句存储模块中存储的静态语句,并基于接收到的数据源参数、用户条件值生成实现数据部分操作的存储过程;
所述数据库用于创建接收到的实现数据部分操作的存储过程,并通过运行创建的存储过程实现创建空临时表、读取存储的原始数据,向创建的空临时表中插入原始数据的操作;以及通过运行接收到的临时表查询语句对该临时表中的数据进行操作,生成报表数据,并返回生成的报表数据。
6、根据权利要求5所述的系统,其特征在于,所述数据库包括:原始数据存储模块、存储过程管理模块和临时表管理模块;其中,
所述原始数据存储模块用于存储原始数据;
所述存储过程管理模块用于创建接收到的存储过程,并通过运行创建的存储过程实现从原始数据存储模块中读取原始数据,并向临时表管理模块发送空临时表创建指令、原始数据和原始数据插入指令;
所述临时表管理模块用于创建空临时表,并向该空临时表中插入原始数据;以及通过运行临时表查询语句,对该临时表中的数据进行操作,生成报表数据,并返回生成的报表数据。
7、一种报表数据采集方法,其特征在于,该方法包括步骤:
a、读取存储的静态语句,生成存储过程;
b、创建并运行生成的存储过程,读取存储的原始数据,生成报表数据。
8、根据权利要求7所述的方法,其特征在于,所述步骤a之前进一步包括:
a0、接收来自外部的用户条件值,读取预定义并存储的数据源参数;
所述步骤a包括:根据读取的数据源参数读取存储的相应静态语句,并将数据源参数和用户条件值通过参数接口传入读取的静态语句中,然后将静态语句拼装成存储过程。
9、根据权利要求7所述的方法,其特征在于,该方法进一步包括:预定义并存储视图部分操作语句;
所述步骤a0进一步包括:读取存储的视图部分操作语句;
所述步骤a包括:生成实现数据部分操作的存储过程;
所述步骤b包括:创建生成的实现数据部分操作的存储过程,并通过运行该存储过程对原始数据执行数据部分操作,以及通过运行视图部分操作语句对执行上述数据部分操作得到的结果数据执行视图部分操作,生成报表数据。
10、根据权利要求9所述的方法,其特征在于,所述视图部分操作语句为临时表查询语句;
步骤a中,所述生成实现数据部分操作的存储过程的步骤包括:基于接收到的数据源参数、用户条件值生成实现数据部分操作的存储过程;
所述步骤b包括:
b1、创建并运行所述实现数据部分操作的存储过程,实现创建空临时表,读取原始数据,并向创建的空临时表中插入原始数据;
b2、运行所述临时表查询语句,对所述临时表中的数据进行操作,生成报表数据。
11、根据权利要求10所述的方法,其特征在于,步骤b2中所述的操作包括:对临时表中的原始数据进行竖向整合、横向整合以及字符串运算。
12、根据权利要求7至11中任意一项所述的方法,其特征在于,所述步骤b之后进一步包括:删除创建的存储过程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101156732A CN100395752C (zh) | 2005-11-08 | 2005-11-08 | 一种报表数据采集系统和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2005101156732A CN100395752C (zh) | 2005-11-08 | 2005-11-08 | 一种报表数据采集系统和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1869982A true CN1869982A (zh) | 2006-11-29 |
CN100395752C CN100395752C (zh) | 2008-06-18 |
Family
ID=37443647
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2005101156732A Expired - Fee Related CN100395752C (zh) | 2005-11-08 | 2005-11-08 | 一种报表数据采集系统和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100395752C (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2010148865A1 (zh) * | 2009-11-20 | 2010-12-29 | 中兴通讯股份有限公司 | 一种基于报表订阅的配置报表参数值的方法及系统 |
CN101661460B (zh) * | 2009-09-18 | 2014-09-03 | 上海宝信软件股份有限公司 | 管理系统报表生成方法和装置 |
CN105740286A (zh) * | 2014-12-11 | 2016-07-06 | 华为技术有限公司 | 一种存储过程处理方法和装置 |
CN109255065A (zh) * | 2018-09-18 | 2019-01-22 | 郑州云海信息技术有限公司 | 一种报表处理的方法及报表系统 |
CN109814856A (zh) * | 2019-01-17 | 2019-05-28 | 平安科技(深圳)有限公司 | 数据录入方法、装置、终端及计算机可读存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050192777A1 (en) * | 2003-02-27 | 2005-09-01 | Banfer Andrew P. | Materials analytical review and reporting system |
CN1189835C (zh) * | 2002-02-10 | 2005-02-16 | 华为技术有限公司 | 报表的实现方法 |
CN100372290C (zh) * | 2002-09-13 | 2008-02-27 | 华为技术有限公司 | 一种自动产生网管报表的方法 |
CN100412858C (zh) * | 2003-11-08 | 2008-08-20 | 鸿富锦精密工业(深圳)有限公司 | 报表生成系统及方法 |
-
2005
- 2005-11-08 CN CNB2005101156732A patent/CN100395752C/zh not_active Expired - Fee Related
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101661460B (zh) * | 2009-09-18 | 2014-09-03 | 上海宝信软件股份有限公司 | 管理系统报表生成方法和装置 |
WO2010148865A1 (zh) * | 2009-11-20 | 2010-12-29 | 中兴通讯股份有限公司 | 一种基于报表订阅的配置报表参数值的方法及系统 |
CN105740286A (zh) * | 2014-12-11 | 2016-07-06 | 华为技术有限公司 | 一种存储过程处理方法和装置 |
CN105740286B (zh) * | 2014-12-11 | 2019-06-21 | 华为技术有限公司 | 一种存储过程处理方法和装置 |
CN109255065A (zh) * | 2018-09-18 | 2019-01-22 | 郑州云海信息技术有限公司 | 一种报表处理的方法及报表系统 |
CN109814856A (zh) * | 2019-01-17 | 2019-05-28 | 平安科技(深圳)有限公司 | 数据录入方法、装置、终端及计算机可读存储介质 |
WO2020147385A1 (zh) * | 2019-01-17 | 2020-07-23 | 平安科技(深圳)有限公司 | 数据录入方法、装置、终端及计算机可读存储介质 |
CN109814856B (zh) * | 2019-01-17 | 2022-04-15 | 平安科技(深圳)有限公司 | 数据录入方法、装置、终端及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN100395752C (zh) | 2008-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1134730C (zh) | 用于减少预装类的脚印的系统和方法 | |
CN1280716C (zh) | 计算机处理方法、分布式计算方法和网络计算方法 | |
CN1862543A (zh) | 一种浏览器/服务器系统中的数据导入与导出方法 | |
CN101030157A (zh) | 一种用户词库同步更新的方法和系统 | |
CN1684464A (zh) | 用于远程差分压缩的有效算法和协议 | |
CN101042649A (zh) | 一种配置信息处理方法及装置以及平台系统 | |
CN101047610A (zh) | 数据存储、读取、传输方法和管理服务器及网络节点 | |
CN1379350A (zh) | 分布式文件检索方法、装置、程序及记录该程序的记录介质 | |
CN1556482A (zh) | 一种用于实现数据库多表查询的数据处理方法 | |
CN1873690A (zh) | 图像处理设备、方法和存储有程序的存储介质 | |
CN1300389A (zh) | 用于消息转换的装置和方法 | |
CN101046812A (zh) | 一种数据库表记录构造与检查的方法及其装置 | |
CN1873687A (zh) | 图像处理装置、方法以及存储程序的存储介质 | |
CN1518304A (zh) | 在服务器和用户之间形成数据流的方法 | |
CN1869982A (zh) | 一种报表数据采集系统和方法 | |
CN101038640A (zh) | 工单优先级管理方法和系统、及工单处理方法和系统 | |
CN1173933A (zh) | 建立通信网络数据库的一种方法和设备 | |
CN1578219A (zh) | 复合内容传递方法和传递系统 | |
CN1942854A (zh) | 屏幕转换控制装置 | |
CN101055569A (zh) | 一种电子数据表的函数收集方法和装置 | |
CN1851737A (zh) | 一种用户个性化业务的实现系统及方法 | |
CN1851700A (zh) | 一种查询方法和系统以及一种查询转换装置 | |
CN1873691A (zh) | 图像处理装置、方法以及存储程序的存储介质 | |
CN101055566A (zh) | 一种电子数据表的函数收集方法和装置 | |
CN1228728C (zh) | 在web应用中产生定制商业报表的系统和方法 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20080618 Termination date: 20161108 |
|
CF01 | Termination of patent right due to non-payment of annual fee |