《一种高效率低维护的数据统计方法.pdf》由会员分享,可在线阅读,更多相关《一种高效率低维护的数据统计方法.pdf(15页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN101963970A43申请公布日20110202CN101963970ACN101963970A21申请号201010011850322申请日20100112G06F17/3020060171申请人浪潮山东电子信息有限公司地址250014山东省济南市历下区山大路224号72发明人张家重王世建李衍珠孙成通王红娟54发明名称一种高效率低维护的数据统计方法57摘要本发明公开了一种高效率低维护的数据统计方法,属于一种数据统计方法,将数据库中的IO操作转换为内存操作,步骤为1、统计设置设置统计内容和统计条件;2、数据准备将数据库中的数据按照设置中的要求抽取并整理,处理成系统可识别的格。
2、式;3、累加器按照设置中的要求,计算结果;4、数据输出将统计结果提供给用户,支持多种方式。本发明的一种高效率低维护的数据统计方法和现有技术相比,通过配置,经过数据整理、一次统计计算即可以得到复杂结果的数据统计方法,避免了多次操作数据库带来的IO操作,而且只需要修改配置文件即可实现不同的统计结果,方便了应用系统的版本管理,降低了实施难度。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书10页附图2页CN101963971A1/2页21一种高效率低维护的数据统计方法,其特征在于将数据库中的IO操作转换为内存操作,步骤为1、统计设置设置统计内容和统计条件;该统计引擎。
3、中,使用XML格式文件来设置;在配置文件中设置数据源、统计维度、统计条件等要素,可以配置多个结果集;2、数据准备将数据库中的数据按照统计设置中的要求抽取并整理,处理成系统可识别的格式,实现统计计算前的数据准备工作;首先,根据统计设置的数据源,获得对应的数据集;其次,根据需要,进行多个数据源的数据整理;最后,按照统计维度进行排序;3、累加器按照统计设置中的要求,计算结果;A、解析统计公式;B、初始化统计所需的数组;每个统计结果集都需要三个中间数组,用来实现数据计算;三个中间数组分别通过触发器、加法器和结果器存储;触发器存储当前正在处理的统计维度值;加法器存储当前维度值对应的统计结果值;结果器存储。
4、所有计算过的维度对应的结果值;C、遍历数据源,逐条计算;针对每个数据集中的每个结果集进行计算;D、整理分发数据集;4、数据输出将统计计算结果提供给用户,支持多种方式。2根据权利要求1所述的一种高效率低维护的数据统计方法,其特征在于数据准备中进行多个数据源的数据整理原则是1、针对单一数据集A、如果是同一个表中的数据统计,不需要数据整理;B、如果是SELECT语句,执行SELECT操作,将获得的数据集保存;2、针对多个数据集A、分析多个数据集中的数据源,看是否有从同一个单一表中获取数据的,如果有,记录;B、分析多个数据集中的数据源,看是否有相同SELECT语句的,如果有,获取;C、分析多个数据集中。
5、的数据源,如果是SELECT类型,看是从相同的表中获取的,如果是,获取。3根据权利要求1所述的一种高效率低维护的数据统计方法,其特征在于累加器中解析统计公式1、数学计算公式,包括A、计算数量COUNT,如果字段不是数字,则为0;B、获取最大值MAX;C、获取最小值MIN;D、获取平均值ARG;E、加和SUM,即可以实现多个字段加和;F、不重复计数SINGLECOUNT,可以实现不重复计数;2、逻辑操作,包括与、或、非;3、字符串操作,包括A、计算长度LENGTH;权利要求书CN101963970ACN101963971A2/2页3B、截取SUBSTRING;C、替换REPLACE;4、映射函数。
6、,包括A、数值映射MAPINT;B、字符串映射MAPSTRING;C、通用映射MAP。4根据权利要求1所述的一种高效率低维护的数据统计方法,其特征在于触发器存储当前正在处理的统计维度值,即GROUPBY后面的值;初始化时根据统计维度数量N不同,设置一个维度为N的数组,并清空数据;加法器存储当前维度值对应的统计结果值;初始化为一个可变长数组,当维度为N时,该数组的维度为N1;初始长度为0;结果器存储所有计算过的维度对应的结果值;初始化为一个可变长的数组,当维度为N时,该数组的维度为N1;初始长度为0。5根据权利要求1所述的一种高效率低维护的数据统计方法,其特征在于遍历数据,针对每个数据集中的每个。
7、结果集进行计算;具体步骤为1、获取其中一个数据源;2、将所有与该数据源相关的结果集及计算公式提取出来;3、获取数据源中的一条记录;4、获取所有结果集计算公式,逐个计算,分别将结果保存到结果集中;A、获取该条的维度数据,检查与触发器中的是否一致,如果一致,按照公式将结果与加法器中的数据进行计算;B、如果与触发器中的维度不一致,将加法器中的数据转移到结果器中;并清空加法器;结果器中的数据就是所要的结果;5、检查是否已经是最后一条记录,如果不是,继续第3步操作;如果是,继续下一个数据源。6根据权利要求1所述的一种高效率低维护的数据统计方法,其特征在于将统计计算结果提供给用户,提供API、中间表、内存。
8、数据、文件多种方法将计算结果提供给应用程序使用。权利要求书CN101963970ACN101963971A1/10页4一种高效率低维护的数据统计方法技术领域0001本发明涉及一种数据统计方法,具体地说是一种高效率低维护的数据统计方法。背景技术0002大部分的业务系统都有统计报表功能,统计报表的数据来源可能是一个表,也可能是来源于同一个数据库的多个表。而报表结果可能是某个字段的数学逻辑计算,也可能是统计个数。针对报表,目前常用的方法是,首先从各个数据源中抽取数据,集中到一个或多个表中,然后针对需要的报表中每列分别用SQL语句计算。这种计算方法有以下缺点1、如果报表很复杂,或者数据量很大,系统会多。
9、次查询数据库,效率比较低。2、一些特殊要求很难实现,例如不重复计数。3、当数据结构或报表发生变化时,需要修改源代码,不方便系统维护和版本管理。0003SQLSTRUCTUREDQUERYLANGUAGE结构化查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。发明内容0004本发明的技术任务是提供一种适用于大数据量统计方法,使用触发器、累加器、结果器实现统计报表所需的数据计算,尤其适合银行数据管理的应用的一种高效率低维护的数据统计方法。0005本发明的技术任务是按以下方式实现的,将数据库中的IO操作转换为内存操作,步骤为0006一、统计设置设置统计内容和统。
10、计条件;该统计引擎中,使用XML格式文件来设置;在配置文件中设置数据源、统计维度、统计条件等要素,可以配置多个结果集;0007下面是一个配置文件的例子0008000900100011TABLE00120013001400150016COUNTA0017A30018A00190020说明书CN101963970ACN101963971A2/10页50021SUMAB0022A30023C00240025002600270028002900300031其中,0032DATASET1表示该统计器的第一个数据集,在一个统计中可能有多个数据集。0033DATASOURCE指该数据集所用到的数据源,可以是。
11、一个表,也可以是一个SELECT语句,表示需要统计数据的来源。0034RESULTS指统计结果集,通过一次统计计算,可以统计出多个统计结果。0035CACULATE指统计所使用的公式,可以是计算数量COUNT、和SUM等0036数学计算,也可以是与、或|、非逻辑计算。该公式中,除了关键字外,需要添加所需的字段名。0037GROUP指统计分类要素。0038二、数据准备将数据库中的数据按照统计设置中的要求抽取并整理,处0039理成系统可识别的格式,实现统计计算前的数据准备工作;首先,根据统计设置的数据源,获得对应的数据集;其次,根据需要,进行多个数据源的数据整理;最后,按照统计维度进行排序;004。
12、0数据准备中进行多个数据源的数据整理原则是0041A、针对单一数据集0042A、如果是同一个表中的数据统计,不需要数据整理;0043B、如果是SELECT语句,执行SELECT操作,将获得的数据集保存;0044B、针对多个数据集0045A、分析多个数据集中的数据源,看是否有从同一个单一表中获取数据的,如果有,记录;0046B、分析多个数据集中的数据源,看是否有相同SELECT语句的,如果有,获取;0047C、分析多个数据集中的数据源,如果是SELECT类型,看是从相同的表中获取的,如果是,获取。0048经过数据整理后,获得的结果如下表1所示。0049数据集1数据集2数据集3数据源DSADSAD。
13、SB结果公式1COUNTASUMBSUMB结果GROUP1AC结果公式2SUMASUMCSUMD说明书CN101963970ACN101963971A3/10页6结果GROUP2BAC0050表10051即,可能有多个数据集使用相同的数据集,通过数据整理,分析出具有相同数据集的数据源;同时,获取这些数据源,为统计做好准备。0052三、累加器按照统计设置中的要求,计算结果;0053I、解析统计公式;0054、数学计算公式,包括0055A、计算数量COUNT字段名,如果字段不是数字,则为0;0056B、获取最大值MAX字段名;0057C、获取最小值MIN字段名;0058D、获取平均值ARG字段名;。
14、0059E、加和SUM字段名1,即可以实现多个字段加和;0060F、不重复计数SINGLECOUNT字段名,可以实现不重复计数;0061、逻辑操作,包括与、或|、非;0062、字符串操作,包括0063A、计算长度LENGTH字段名;0064B、截取SUBSTRING字段名,开始位置,长度;0065C、替换REPLACE字段名,源字符串,目标字符串;0066、在实际应用中,可能会有很多字段需要映射处理;例如,在一个数据库中,可能会有类似于下表2的一些数据0067品名消费数量周期苹果10周香蕉20旬桃子30日0068表20069如果需要计算每天平均的数量时,可能无法直接计算,因为周代表7天,旬代表。
15、10天。在该统计器中,可以通过映射函数来实现。0070映射函数,包括0071A、数值映射MAPINT源数值,目标数值;0072B、字符串映射MAPSTRING源数值,目标数值;0073C、通用映射MAP源数值,目标数值。0074II、初始化统计所需的数组;每个统计结果集都需要三个中间数组,用来实现数据计算;三个中间数组分别通过触发器、加法器和结果器存储;0075触发器存储当前正在处理的统计维度值;即GROUPBY后面的值;初始化时根据统计维度数量N不同,设置一个维度为N的数组,并清空数据;0076加法器存储当前维度值对应的统计结果值;初始化为一个可变长数组,当维度为N时,该数组的维度为N1;初。
16、始长度为0;0077结果器存储所有计算过的维度对应的结果值;初始化为一个可变长的数组,当维度为N时,该数组的维度为N1;初始长度为0。说明书CN101963970ACN101963971A4/10页70078III、遍历数据源,逐条计算;针对每个数据集中的每个结果集进行计算;具体步骤为0079、获取其中一个数据源;0080、根据表1中的分析,将所有与该数据源相关的结果集及计算公式提取出来;0081、获取数据源中的一条记录;0082、获取所有结果集计算公式,逐个计算,分别将结果保存到结果集中;0083A、获取该条的维度数据,检查与触发器中的是否一致,如果一致,按照公式将结果与加法器中的数据进行计。
17、算;0084B、如果与触发器中的维度不一致,将加法器中的数据转移到结果器中;并清空加法器;0085结果器中的数据就是所要的结果;0086、检查是否已经是最后一条记录,如果不是,继续第步操作;0087如果是,继续下一个数据源。0088经过数据遍历及计算,所需要的结果已经全部保存到数据集中。0089类别数量A2A3B40090表30091触发器、累加器、结果器的初始状态均为空,内部没有任何数据00920093获取第一条记录后,触发器中保存类别,累加器中保存类别和数量,00940095获取第二条记录后,由于触发的条件没有变化,触发器中仍为A,而我们所做的操作为合计加法,那么累加器中的数据为235,0。
18、0960097获取第三条记录后,触发条件发生变化,触发器中数据变为B,需要将累加器中的数据传递到结果器中,00980099当无数据后,将累加器中的数据转移到结果器中,清空累加器和触发器。01000101IV、整理分发数据集;0102四、数据输出将统计计算结果提供给用户,支持多种方式。0103提供API、中间表、内存数据、文件多种方法将计算结果提供给应用程序使用。0104本发明的一种高效率低维护的数据统计方法具有以下优点01051、通过在配置文件中设置需要统计的数据项、统计内容等,经过数据整理,只需要一次读取数据库,一次统计计算即可以得到复杂的所需统计的结果;避免了多次操作数据库带来的IO操作;。
19、01062、同时,在需求变更后,只需要修改配置文件即可实现不同的统计结果,无需更说明书CN101963970ACN101963971A5/10页8改代码,方便了应用系统的版本管理,降低了实施难度;01073、通过将数据库中的IO操作转换为内存操作提高计算效率,通过配置提供灵活性,是一种高效率低成本的统计方法,适合于经常需求经常变动的统计报表开发;01084、设计合理、使用方便,因而,具有很好的推广使用价值。附图说明0109下面结合附图对本发明进一步说明。0110附图1为一种高效率低维护的数据统计方法的计算流程图。附图2为触发器、累加器、结果器的初始状态均为空,内部没有任何数据时的状态框图;附图。
20、3为获取第一条记录后结果状态框图;附图4为获取第二条记录后结果状态框图;附图5为获取第三条记录后结果状态框图;附图6为无数据后最终结果状态框图。具体实施方式0111参照说明书附图和具体实施例对本发明的一种高效率低维护的数据统计方法作以下详细地说明。0112实施例10113本发明的一种高效率低维护的数据统计方法,如图1所示,将数据库中的IO操作转换为内存操作,步骤为0114一、统计设置设置统计内容和统计条件;该统计引擎中,使用XML格式文件来设置;在配置文件中设置数据源、统计维度、统计条件等要素,可以配置多个结果集;0115下面是一个配置文件的例子0116011701180119TABLE012。
21、00121012201230124COUNTA0125A30126A012701280129SUMAB0130A30131C说明书CN101963970ACN101963971A6/10页901320133013401350136013701380139其中,0140DATASET1表示该统计器的第一个数据集,在一个统计中可能有多个数据集。0141DATASOURCE指该数据集所用到的数据源,可以是一个表,也可以是一个SELECT语句,表示需要统计数据的来源。0142RESULTS指统计结果集,通过一次统计计算,可以统计出多个统计结果。0143CACULATE指统计所使用的公式,可以是计算数量。
22、COUNT、和SUM等数学计算,也可以是与、或|、非逻辑计算。该公式中,除了关键字外,需要添加所需的字段名。0144GROUP指统计分类要素。0145二、数据准备将数据库中的数据按照统计设置中的要求抽取并整理,处理成系统可识别的格式,实现统计计算前的数据准备工作;首先,根据统计设置的数据源,获得对应的数据集;其次,根据需要,进行多个数据源的数据整理;最后,按照统计维度进行排序;0146数据准备中进行多个数据源的数据整理原则是0147A、针对单一数据集0148A、如果是同一个表中的数据统计,不需要数据整理;0149B、如果是SELECT语句,执行SELECT操作,将获得的数据集保存;0150B、。
23、针对多个数据集0151A、分析多个数据集中的数据源,看是否有从同一个单一表中获取数据的,如果有,记录;0152B、分析多个数据集中的数据源,看是否有相同SELECT语句的,如果有,获取;0153C、分析多个数据集中的数据源,如果是SELECT类型,看是从相同的表中获取的,如果是,获取。0154经过数据整理后,获得的结果如下表1所示。0155数据集1数据集2数据集3数据源DSADSADSB结果公式1COUNTASUMBSUMB结果GROUP1AC结果公式2SUMASUMCSUMD结果GROUP2BAC0156表10157即,可能有多个数据集使用相同的数据集,通过数据整理,分析出具有相同数据集的数。
24、据源;同时,获取这些数据源,为统计做好准备。说明书CN101963970ACN101963971A7/10页100158三、累加器按照统计设置中的要求,计算结果;0159I、解析统计公式;0160、数学计算公式,包括0161A、计算数量COUNT字段名,如果字段不是数字,则为0;0162B、获取最大值MAX字段名;0163C、获取最小值MIN字段名;0164D、获取平均值ARG字段名;0165E、加和SUM字段名1,即可以实现多个字段加和;0166F、不重复计数SINGLECOUNT字段名,可以实现不重复计数;0167、逻辑操作,包括与、或|、非;0168、字符串操作,包括0169A、计算长度。
25、LENGTH字段名;0170B、截取SUBSTRING字段名,开始位置,长度;0171C、替换REPLACE字段名,源字符串,目标字符串;0172、在实际应用中,可能会有很多字段需要映射处理;例如,在一个数据库中,可能会有类似于下表2的一些数据0173品名消费数量周期苹果10周香蕉20旬桃子30日0174表20175如果需要计算每天平均的数量时,可能无法直接计算,因为周代表7天,旬代表10天。在该统计器中,可以通过映射函数来实现。0176映射函数,包括0177A、数值映射MAPINT源数值,目标数值;0178B、字符串映射MAPSTRING源数值,目标数值;0179C、通用映射MAP源数值,目。
26、标数值。0180II、初始化统计所需的数组;每个统计结果集都需要三个中间数组,用来实现数据计算;三个中间数组分别通过触发器、加法器和结果器存储;0181触发器存储当前正在处理的统计维度值;即GROUPBY后面的值;初始化时根据统计维度数量N不同,设置一个维度为N的数组,并清空数据;0182加法器存储当前维度值对应的统计结果值;初始化为一个可变长数组,当维度为N时,该数组的维度为N1;初始长度为0;0183结果器存储所有计算过的维度对应的结果值;初始化为一个可变长的数组,当维度为N时,该数组的维度为N1;初始长度为0。0184III、遍历数据源,逐条计算;针对每个数据集中的每个结果集进行计算;具。
27、体步骤为0185、获取其中一个数据源;0186、根据表1中的分析,将所有与该数据源相关的结果集及计算公式提取出来;说明书CN101963970ACN101963971A8/10页110187、获取数据源中的一条记录;0188、获取所有结果集计算公式,逐个计算,分别将结果保存到结果集中;0189A、获取该条的维度数据,检查与触发器中的是否一致,如果一致,按照公式将结果与加法器中的数据进行计算;0190B、如果与触发器中的维度不一致,将加法器中的数据转移到结果器中;并清空加法器;0191结果器中的数据就是所要的结果;0192、检查是否已经是最后一条记录,如果不是,继续第步操作;0193如果是,继续。
28、下一个数据源。0194经过数据遍历及计算,所需要的结果已经全部保存到数据集中。0195类别数量A2A3B40196表30197触发器、累加器、结果器的初始状态均为空,内部没有任何数据01980199获取第一条记录后,触发器中保存类别,累加器中保存类别和数量,02000201获取第二条记录后,由于触发的条件没有变化,触发器中仍为A,而我们所做的操作为合计加法,那么累加器中的数据为235,02020203获取第三条记录后,触发条件发生变化,触发器中数据变为B,需要将累加器中的数据传递到结果器中,0204当无数据后,将累加器中的数据转移到结果器中,清空累加器和触发器。02050206IV、整理分发数。
29、据集;0207四、数据输出将统计计算结果提供给用户,支持多种方式。0208提供API、中间表、内存数据、文件多种方法将计算结果提供给应用程序使用。0209实施例20210下面以一个例子来展示本发明的一种高效率低维护的数据统计方法。0211某银行想统计每个网点1月份和2月份的开户人数、存款总额和贷款总额,这些数据都在表BILLS中保存着。BILLS的格式如表所示。0212账户日期余额网点类型借或贷000000120090102200000000001借0000002200902024600000003贷0213说明书CN101963970ACN101963971A9/10页120214预期得到的。
30、报表如下0215实施步骤如下02161、设计配置文件0217配置文件如下,即配置统计内容。0218021902200221TABLE0222BILLS0223022402250226COUNT账户0227日期BETWEEN20090101AND0228200901310229网点023002310232SUM余额0233日期BETWEEN20090101AND20090131AND类0234型借0235网点023602370238SUM余额0239日期BETWEEN20090101AND20090131AND类0240型贷0241网点024202430244说明书CN101963970ACN1。
31、01963971A10/10页13024502460247TABLE0248BILLS0249025002510252COUNT账户0253日期BETWEEN20090201AND0254200902280255网点025602570258SUM余额0259日期BETWEEN20090201AND20090228AND类型借0260网点026102620263SUM余额0264日期BETWEEN20090201AND20090228AND类0265型贷0266网点026702680269027002712、开启统计计算;02723、报表工具获得数据集;0273计算后,所有的数据都在DATASE。
32、T1和DATASET2中,报表工具可以直接使用。0274经实践检验,本方法完全可以满足银行快速开发专题数据统计功能的需求,降低了系统对于软硬件资源的依赖,减少了系统建设部署成本。同时,本发明改变了以往统计系统中一旦变更统计条件,就需要重新开发的状况,不仅缩短了新统计功能的开发周期,并且采用可配置的方案,避免了频繁的修改系统源代码,维护了系统的稳定性。0275除说明书所述的技术特征外,均为本专业技术人员的已知技术。说明书CN101963970ACN101963971A1/2页14图1说明书附图CN101963970ACN101963971A2/2页15图2图3图4图5图6说明书附图CN101963970A。