数据处理设备和方法_3

文档序号:9865481阅读:来源:国知局
58’,’ 615’,’ 605,),以及 JOIN a.Erpinv_Id = b.Erpinv_Id,数据库中满足上述两个条件的数据显示在电子数据表201的第A列Liable_Ctry_Cd至第I列Response_Time中。
[0059]如前述图4所示,在电子数据表201中新增加一列J,其字段名称为Max_Resp_Time (最大响应时间),并且用户在例如单元格J2中设定公式(I):{ = MAX (IF ($F$2: $F$19=F2,$I$2:$I$19))},并利用电子数据表的自动填充功能,将该公式填充到单元格J3至J19中,其中单元格J19位于超行中。
[0060]解析上述公式,并根据上述公式(I)修改第一数据库查询的查询条件。
[0061]图7是示出根据本发明另一实施例的数据库查询的查询条件的示例图。
[0062]如图7所示,根据上述公式(I)将第一数据库查询的查询条件修改为新的查询条件(第二数据库查询的查询条件)。在第二数据库查询的查询条件中,包含条件WHEREb.CTRYCODE IN (...) and a.Erpinv_Id = 5812 以及 JOIN a.Erpinv_Id = b.Erpinv_Id,当满足上述条件时,输出响应时间的最大值max (a.Response_Time)。
[0063]根据本发明的实施例的历史数据更新器502被配置为执行所述第二数据库查询,以根据数据库中的历史数据(和/或来自数据源的新数据)来计算公式(I)在相应单元格中的值。
[0064]例如,在历史数据更新器502中,执行第二数据库查询,即:
[0065]SELECT max(Response_Time)FROM A a, B b
[0066]WHERE a.Erpinv_Id = b.Erpinv_Id and b.CTRYCODE IN(...) and Erpinv_Id =5812。
[0067]由此利用数据库中的历史数据获得响应时间的最大值。
[0068]根据与上述同样的方法,还可以通过在电子数据表201的第20行的单元格J20中构造下列公式来获取各个最大值中的最小值:
[0069]B = MIN(J2:J19) (2)
[0070]上述公式的具体形式以及求值的类型仅为示例,不对本发明的范围构成限制,也可以采用任何其他的公式来进行示例。
[0071]以上对根据本发明实施例的公式-数据库查询转换器501和历史数据更新器502进行描述。
[0072]根据本发明的另一个实施例,当有持续更新的数据记录时,可以进行实时数据处理。
[0073]如图5所示,数据处理器202还可以包括公式结果存储器503以及实时数据更新器 504。
[0074]公式结果存储器503被配置为存储所述公式的计算值。实时数据更新器205被配置为利用公式结果存储器503存储的、基于新数据计算的所述公式的计算值,来更新所述公式的值。公式结果存储器是一种数据结构,用于存储可分解的公式的(中间)计算结果。由此,可以实时地更新和显示公式在相应单元格中的结果。
[0075]上述可分解的公式(函数)是指对于函数FO,当给定两个数据集合A和B时,如果F(A U B)可以由F(A)和F(B)的结果计算得出,则函数FO是可分解的,例如函数Min、Max、Sum、Count、Avg等是可分解的。如果构成公式的各个函数是可分解的,则所述公式也是可分解的。
[0076]通过构建公式结果存储器进行连续数据处理主要包括:构建公式结果存储器,用于对跨越多个(至少一个)电子数据表的可分解的非模糊公式的结果进行存储。检测是否有新数据记录插入到数据库中。测试与新数据记录相关的公式是否是可分解的。如果该公式是可分解的,则通过公式结果存储器存储该公式的中间计算结果。用公式结果存储器存储的中间计算结果来更新电子数据表中相关单元格的值。
[0077]如果该公式是不可分解的,则意味着不能通过公式结果存储器来存储基于实时数据的计算结果。在这种情况下,通过前述历史数据更新器执行第二数据库查询,基于数据库中的历史数据和新进入到数据库中的新数据来计算该单元格中该公式的计算结果,并周期性地调用该计算结果来更新该公式的值。
[0078]根据本发明的另一个实施例,所述实时数据处理器还被配置为利用所述公式结果存储器存储所述历史数据更新器基于所述历史数据计算的所述公式的值,作为所述公式的初始值。例如,在存在实时数据并利用公式结果存储器进行处理的情况下,若该实时数据的处理与数据库内的历史数据有关联,则需要先通过历史数据更新器基于历史数据获得该公式的初始值,然后再利用公式结果存储器,在初始值的基础上,针对实时数据计算该公式的值。但是,基于实时数据的计算过程不再调用历史数据,仅于该初始值有关。
[0079]更具体地,构造公式结果存储器以进行数据更新的过程包括如下操作:
[0080]1、从所述电子数据表的各个函数、数据库查询(例如SQL)语句的各个条件子句中收集不同条件,以构成条件集合。这里,电子数据表201的各个函数例如是但不限于Excel中的IF、SUMIF等,SQL语句的条件子句例如是WHERE子句等。在本发明的实施例中,将在例如单元格J2中构建的公式称为“公式J2”,并将公式J2对应的条件称为“条件C(J2) ”,以此类推。在本发明的一个实施例中,对于电子数据表201,可以提取下列多个条件:
[0081]C(J2)?C(J6) = {CTRYCODE IN Listland Erpinv_Id = 5812}
[0082]C(J7)?C(JlO) = {CTRYCODE IN Listland Erpinv_Id = 6166}
[0083]C(Jll)?C(J13) = {CTRYCODE IN Listland Erpinv_Id = 6158}
[0084]C(J14)?C(J18) = {CTRYCODE IN Listland Erpinv_Id = 5474}
[0085]C(J20) = {CTRYCODE IN Listl}
[0086]这里,不包括从J(19)提取的条件,因为J(19)的公式是模糊公式。
[0087]其中,CTRYCODEIN Listl 是从 SQL 语句中提取的,Erpinv_Id = 5812、Erpinv_Id=6166、Erpinv_Id = 6158、Erpinv_Id = 5474是从公式或函数中提取的。在本发明的上述实施例中,公式J2?J18都是非模糊公式,公式J19是模糊公式,由于公式J20(即公式
(2))引用了超行中的单元格J19的值,公式J20也是模糊公式。
[0088]这里注意,J2?J19都是可分解公式,公式J20是不可分解的公式。
[0089]2、将上述条件集合分解为多个子集,每个子集中的条件互不重叠,并在每个子集中添加条件“else”。即,对任意一个子集,给定一条数据记录,该子集中有且仅有一个匹配的条件,若所有条件都不匹配该数据记录,则使用“else”条件匹配。例如,将该条件集合分解为K个子集,每个子集中的各个条件对于其所引用的数据来说相互不重叠。这里,条件重叠的示例如下:例如,条件“name = Mike”与条件“age = 18”是可以重叠的,因为名字为Mike的人可以是18岁。但是,一般认为,条件“name = Mike”与条件“name = John”是不重叠的,因为名字为Mike的人,其名字不再叫John。例如,在上述条件集合中,条件C(J2),C(J7) ,C(Jll)1C(J14)相互之间不重叠,而条件 C(J2)与 C(J3)?C(J6)、C(J20)之间,C(J7)与 C(J8)?C(JlO)、C(J20)之间,C(Jll)与 C(J12)?C(J13)、C(J20)之间,C(J14)与C(J15)?C(J18)、C(J20)之间有可能是重叠的。由此,这里将该条件集合分解为两个子集,并在每个子集的后面添加“else”:
[0090]Pl= {C (J2), C (J7), C (Jl I), C (J14) ,else}
[0091]P2 = {C(J20), else}
[0092]这里,在上述所划分的两个子集中,Pl = {C(J2),C(J7), C(Jll), C(J14), else}中的例如C(J2)可以替换为C(J3),因为在该例子中,条件C(J2) = C(J3) = C(J4) = C(J5)=C(J6) = {CTRYCO
当前第3页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1