CN101556602B - 一种基于差分表的内存OLAP What-if分析方法 - Google Patents
一种基于差分表的内存OLAP What-if分析方法 Download PDFInfo
- Publication number
- CN101556602B CN101556602B CN 200910081669 CN200910081669A CN101556602B CN 101556602 B CN101556602 B CN 101556602B CN 200910081669 CN200910081669 CN 200910081669 CN 200910081669 A CN200910081669 A CN 200910081669A CN 101556602 B CN101556602 B CN 101556602B
- Authority
- CN
- China
- Prior art keywords
- difference
- view
- data
- inquiry
- record
- 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.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
一种基于差分表的内存OLAP What-if分析方法,该方法包括:A、用户通过图形化界面表达查询并输入假设数据,将用户的图形化表述转换为MDX语句以提交给OLAP服务器,同时将假设数据存储在差分表中;B、将一条MDX语句解析为SQL语句,由用户查询视图和差分表组合生成What-if数据视图;C、对What-if数据视图和新维表进行连接,并对连接后的假设视图进行各种假设;D、完成What-if分析后,将差分表及相关附属结构从数据库中删除。
Description
技术领域
本发明涉及一种内存OLAP What-if分析方法,尤其是涉及一种基于差分表的内存OLAP What-if分析方法。
背景技术
随着计算机硬件遵循摩尔定律,其性价比成倍增加,内存价格下降到0.06元/MB(当前主流DDR800内存价格[2008年12月]),同时现在的64位操作***+64位处理器,使可识别的***内存容量理论值达到2^34GB(Windows Server 2003 x64 Edition已支持最大512GB的内存容量),因此能够放入内存的数据量越来越多,甚至整个CUBE都能够存放在内存中。这为内存OLAP提供了硬件基础。
内存OLAP假设所有的数据都存储在计算机的内存中,只存储基础数据,而不存储聚集数据。数据的存储采用某种基于内存的压缩技术。用户的请求通过实时计算得到。
在实际应用领域中,决策支持者想评估新战术或策略的采用,对公司现在或将来的影响,以方便做出决策,这类应用一般称为假设分析、或What-if分析。What-if分析是现代商务智能中为业务人员管理分析数据,提供决策支持的一种重要数据分析手段。决策者根据决策目标,制定一系列的假设场景,What-if分析功能通过对已有数据的假设分析得到假设场景下商业数据的变化情况,帮助决策者制定正确合理的商业计划。
在目前瞬息万变的商业环境中,企业决策者需要更快更准的捕获商机,以占据有利形势。而这在很大程度上需要借助What-if分析工具的应用,但在传统的基于磁盘的OLAP环境中,这类应用一般需要更改Cube结构或修改Cube数据,这些都涉及到Cube重计算,而Cube重计算需要较长时间,如果在加上维护实体化视图,则整个过程的完成可能要很长时间,基本不能在线完成。这很大程度上限制了用户应用What-if分析的能力。但在内存OLAP中,没有了实体化视图,而且采用更快的基于现代CPU和内存的算法,可以更快的完成What-if分析,从而帮助决策者制定或选择更合理的战术。
What-if分析一般是决策支持人员在查询的结果(聚集数据)上进行的。在OLAP环境中,考虑Cube的网格结构,也就是数据来源于某个Cuboid或多个Cuboid。如何基于这样的查询结果进行What-if分析,相关文献研究较少,而且主要集中在关系数据库中基于某一个查询结果进行What-if分析。
下面让我们看一个在OLAP环境下基于查询结果进行What-if分析的例子。比如某购物超市经理通过市场调研发现去年有某些产品销量非常好,而正好超市没有销售。这时经理可能要问:如果超市去年销售了这种产品,对超市的利润或其他产品的销售有哪些影响呢?如果超市拥有自己的OLAP,可以把产品看作超市OLAP中的一个维,而增加一种产品相当于此维度向外延伸一层,从而改变了Cube的结构,进而影响汇总的数据。
增加新产品后,经理会根据历史数据或调研结果来假设新产品的利润。经理的假设大多数情况下是在某一个聚集结果上进行的,比如由于引入了新产品,那么新产品在去年每一个月每一个分店的利润是多少或者去年每一天在每一分店每一个顾客的利润。但是不同聚集上的假设,假设的数据量会有指数级的变化。比如超市有20家分店,去年超市大约有1万名客户,则第一种假设需要生成12*20=240个数据,而第二种假设需要生成365*20*10000=73000000个数据。粒度越细,需要假设的数据越多。而决策人员关注的是高层数据,对细节数据不太感兴趣。因此,对于决策者来说,What-if分析主要是基于聚集的查询结果进行的。对于细粒度的数据,可以通过一种分配机制自动完成,比如假设了去年的全年利润,可以根据去年某种类似产品的每个月的利润情况,成比例的将利润分配到每个月上。通过这种分配机制,可以自动生成假设数据,避免了繁杂的手工生成数据。
假设数据生成后,就产生了新的Cube。基于新的Cube,经理可以执行相应的OLAP操作,比如Roll-up:假设了每个分店每个月的利润,可以看每个分店在每个季度的利润;分店分布在不同的地区,可以看每个地区每个季度的利润。
通过本发明,由于差分表记录的数量远少于视图的记录,对级联版本的差分表记录的预合并机制可以大大降低迭代模式的假设数据视图的生成代价,从而提高What-if查询在多版本模式下的性能。
发明内容
本发明是鉴于上述技术问题而产生的。本发明的一个目的是提出一种基于差分表的内存OLAP What-if分析方法。
在一个方面中,根据本发明的基于差分表的内存OLAP What-if分析方法包括:A、用户通过图形化界面输入查询语句和假设数据,将用户的图形化表述转换为MDX语句以提交给OLAP服务器,同时将假设数据存储在差分表中;B、将一条MDX语句解析为一条或多条SQL语句,并且每一个SQL语句对应着一个聚集操作,依据对应的SQL语句生成Hypothetical Cube-HCube,并且由用户查询视图和差分表组合生成What-if数据视图,其中Hcube的维表为经过剪枝操作生成的新维表;C、对What-if数据视图和新维表进行连接,并对连接后的假设视图进行各种假设分析;D、完成What-if分析后,将差分表及相关附属结构从数据库中删除。
在这个方面中,其中步骤A进一步包括:A1、根据MDX语句的特征,创建MDX语句模板;A2、根据用户对图形化界面中Cube维度拖拉后的位置,将此维度添加到MDX指定的轴上,同时也可以从此轴上删除维度,维度与维度之间通过CrossJoin操作连接;A3、生成符合语法规范的MDX语句。
在这个方面中,其中步骤B进一步包括:B1、自动获取每条SQL语句Group by子句后的字段,组成一个集合M={(a1,a2,..),(b1,b2,...),...},集合中的每个元素为一条SQL语句后对应的Group by后的字段,从这些集合中选取最小包含集,该最小包含集能够覆盖所有子元素的元素集合;B2、根据最小包含集创建HCube,通过XML形式定义Cube;B3、根据当前的查询所在Cube网格结构中的层次对***中的维表进行剪枝操作以生成新的维表,作为HCube的维表,维表是预先存储在***中用以标识数据的一些属性;B4、使用查询视图来表示原始聚集数据,该原始聚集数据就是用户的查询结果;B5、根据查询视图创建差分表;B6、由存储真实聚集数据的查询视图和存储用户假设数据的差分表组合生成What-if数据视图。
在这个方面中,其中在步骤B5中,根据差分表和视图的不同特征,自动选取以下三种合并方式之一以最快的速度完成合并:B5-1、基于集合操作生成What-if数据视图,该集合操作是指基于集合的一些运算;B5-2、基于该查询视图记录与差分表记录之间的映射表来合并差分表,其中该查询视图记录包含字段Dtuple,该差分表记录包含字段Btuple;B5-3、基于预合并机制来合并差分表。
在这个方面中,其中在B5-2中,查询视图记录与差分表记录之间存在四种类型的映射关系:(1)查询视图记录没有对应的差分表记录;(2)查询视图记录在差分表中存在一条U类型的差分表记录;(3)查询视图记录在差分表中存在一条D类型的差分表记录;(4)差分表中存在一条I类型的差分表记录。
在这个方面中,其中查询视图与差分表之间的映射表可以通过全连接来获得:(1)当差分表记录Dtuple的标识为U时,将它与对应的查询视图记录Btuple合并后输出;(2)当差分表记录为空时,直接输出查询视图记录Btuple;(3)当差分表记录Dtuple的标识为D时,跳过当前记录;(4)当差分表记录Dtuple的标识为I时,输出差分表记录Dtuple。
在这个方面中,其中在B5-3中:当What-if查询的聚集操作为SUM时,直接将视图与差分表合并,然后在此基础上进行group-by操作;当What-if查询的聚集操作为COUNT时,直接将视图与差分表合并,用SUM运算代替COUNT运算,然后在此基础上进行group-by操作;当What-if查询的聚集操作为AVERAGE时,直接将视图与差分表合并,然后在此基础上聚集字段上的SUM/COUNT代替聚集字段的AVERAGE进行group-by操作。
附图说明
结合随后的附图,从下面的详细说明中可显而易见的得出本发明的上述及其他目的、特征及优点。在附图中:
图1给出了根据本发明的基于差分表的内存OLAP What-if分析方法的流程图;
图2给出了包含三维(ABC)的Cube网格结构;
图3给出了一个标准的MDX查询语句示例;
图4给出了根据本发明的HCube和VCube的层次关系;
图5给出了根据本发明的可视化化What-if分析界面;
图6给出了根据本发明的HCube的XML形式表示;
图7给出了根据本发明的对维的剪枝操作;
图8给出了根据本发明的基于集合运算的What-if分析视图合成过程;
图9给出了根据本发明的基于视图记录与差分表记录映射关系的差分表合并过程;
图10给出了根据本发明的视图与差分表之间的映射表全连接过程;
图11给出了根据本发明的对HCube的形象描述;
图12给出了根据本发明的对多版本What-if分析的描述;
图13给出了根据本发明的对多版本What-if分析欲合并描述;
图14给出了能够实施本发明的一个示例环境的示意图。
具体实施方式
为了更全面地理解本发明及其优点,下面结合附图及具体实施例对本发明做进一步详细地说明。在附图中,使用相同的标号来表示相同的元件。
首先,参考图1,对根据本发明的基于差分表的内存OLAP What-if分析方法进行说明。
在步骤A中,用户通过直接输入MDX语句或者图形化界面获取自己感兴趣的数据以便之后进行What-if分析,并且将用户的图形化表述转换为MDX语句提交给OLAP服务器。也就是说,用户通过图形化界面输入用户查询语句和假设数据,同时将上述假设数据存储在差分表中。此后,服务器对MDX语句解析、执行,并将查询结果以类似电子表格的形式返回。
将图形化表述转换为MDX语句的过程如下:首先根据MDX语句的特征,创建MDX语句模板;根据用户对图形化界面中Cube的维度拖拉后的位置,将此维度添加到MDX指定的轴上,同时也可以从此轴上删除维度,维度与维度之间通过CrossJoin操作连接;最后生成符合语法规范的MDX语句。
用户的假设分析一般都是基于某一个查询结果动态进行的。不失一般性地,在物理存储上Cube以星型模式存储,即对应一个中心的事实表和多个维表。在Cube网格结构[图2]中,每一个查询结果的数据来源于一个或多个Cuboid(Cube网格结构中的一个节点,组件202)的组合,Cube网格结构是group by操作的扩展,一个完整的Cube网格结构是对数据集合中的n个属性的任意组合计算其group by操作的结果,一个基本的group by操作称为一个cuboid,2n个group by操作的结果的并称为数据立方体Cube。多个Cuboid的组合可以用MDX[图3]查询结果表示。基于某一个查询结果,用户可以进行各种What-if假设分析,并可对假设数据进行上卷和下钻操作。
在内存OLAP中,为了节省存储空间,不再需要实体化视图及预计算。而实时计算可以在时间和空间效率上获得更好的平衡。能够支持Cube结构和数据改变的各种假设情况;能够基于用户查询结果动态创建HCube(Hypothetical Cube)或VCube(Virtual Cube)[图4],供用户进行分析。
图5给出了根据本发明的用户图形化操作界面500。在本发明的一个方面中,第一个阶段就是直观的表达用户的查询。通过界面500,用户可以方便的通过拖拉操作完成Cube或多维数据的导航,并实时显示查询结果,然后用户可以在查询结果上表达自己的What-if假设分析。
用户图形化界面的操作结果会转化为MDX语句。可便于OLAP作多维查询和分析的一种常规体系架构是MDX(多维表达式)。MDX是一种语法,它支持多维对象和数据的定义和处理从而便于更简单及更直觉地访问来自多维的数据。MDX在许多方式上与SQL(结构化查询语言)语法相似(但并不是SQL语言的扩展)。像SQL查询一样,每个MDX查询都需要数据请求(SELECT语句)、起点(FROM语句)和过滤器(WHERE语句)。这些和其它关键字提供用以从立方体提取数据特定部分来进行分析的工具。MDX还提供用于处理被查询数据的健壮的功能集,以及使用用户定义的功能来扩展MDX的能力。大部分的OLAP服务器支持MDX语句。
关系型联机分析处理(ROLAP)是联机分析处理(OLAP)的一种形式,它对存储在关系数据库(而非多维数据库)中的数据作动态多维分析。
数据处理可以发生在数据库***内、中间层服务器,或客户端。在两层结构中,用户提交结构化查询语句(SQL)请求给数据库,然后收到请求的数据。在三层结构中,用户提交请求进行多维分析,然后ROLAP引擎将请求转化为SQL语句提交给数据库。在将结果传给用户前引擎先将结构从SQL转化为多维格式。一些请求会被创建,然后预先存好,关系型数据库常常是这么做的。如果请求的信息是可得的,则这个请求就会被使用,这么做将节约时间。ROLAP中数据存储在关系数据库中,所以MDX语句最终要转化为SQL语句,提交给关系数据库去执行。
在步骤B中,将一条MDX语句解析为一条或多条SQL语句,并且每一个SQL语句对应着一个聚集操作,所谓聚集操作就是带GROUPBY的SQL语句,每一个SQL语句对应一个Cuboid,因此可以根据这个SQL语句还原出一个Cube,我们称这个Cube为HCube(HypotheticalCube)。HCube由经过剪枝操作生成的新维表和What-if数据视图组成的。具体过程如下:
步骤B1:自动获取每条SQL语句Group by子句后的字段,组成一个集合M={(a1,a2,..),(b1,b2,...),...},集合中的每个元素为一条SQL语句后对应的Group by后的字段。从这些集合中选取能够覆盖所有子元素的元素集合,称为最小包含集,***根据最小包含集生成一个或多个HCube,HCube是一个对真实Cuboid的封装,通过查询视图和差分表组成What-if数据视图,通过对维表进行剪枝操作生成新维表,从而构建成HCube。例如集合M={(a,b),(a),(c)},则此集合的最小包含集为H={(a,b),(c)},因为(a)的数据可以通过(a,b)计算得出。
步骤B2:根据最小包含集创建HCube,通过XML形式定义Cube。转到图6,示出了根据本发明一个方面所创建的HCube的XML形式表示。其中主要标签代表的意义如下:
<Cube>:新创建的Cube的名字;
<View>:本Cube基于一个视图创建;
<SQL>:视图对应的SQL语句;
<Dimension>:维的一些信息,包括维的名字、层次和对应的表;
<Measure>:表示度量维。
步骤B3:根据当前的查询所在Cube网格结构中的层次对***中的维表进行剪枝操作以生成新的维表,作为HCube的维表,维表是预先存储在***中用以标识数据的一些属性,比如时间、地区和产品等信息。
如图7所示,组件702表示原维表的维层次结构:
Year-Quarter-Month-Day,
经过剪枝操作后,维的层次结构变为了:
Year-Quarter-Month(组件704)。
步骤B4:原始聚集数据(用户的查询结果)使用视图来表示,称为查询视图。视图可以被看成是虚拟表或存储查询。可通过视图访问的数据不作为独特的对象存储在数据库内。数据库内存储的是SELECT语句。SELECT语句的结果集构成视图所返回的虚拟表。在这里的SELECT语句由MDX转化为的SQL语句通过UNION操作组合在一起。
步骤B5:根据查询视图创建差分表,在差分表中,除与查询视图记录对应的字段外,增加两个附加字段:_count和FLAG。FLAG字段存储差分表记录的类型,分别用“U”、“D”、“I”来表示。_count表示差分记录的计数信息,规定:U类型的delta记录的_count为0;I类型的差分记录的_count为1;D类型的delta记录的_count为-1。请参考图9。
步骤B6:由存储真实聚集数据的查询视图和存储用户假设数据的差分表组合生成HCube的新事实表(Fact Table),我们称这个新事实表为What-if数据视图。
What-if数据视图为查询视图(结果)和差分表合并后的、反映假设更新结果的视图,下面详细描述What-if数据视图的生成过程。
对用户查询视图和差分表进行组合以生成What-if数据视图。具体地说,根据差分表和视图的不同特征,***自动选取下述一种合并(连接)方案,从而保证以最快的速度完成合并。
具体方案如下:
方案1:基于查询视图和差分表的集合操作生成What-if数据视图,所谓集合操作是指基于集合的一些运算,比如我们常见的集合的交(∩)、并(∪)和差(-)等。该过程可以通过关系代数的形式描述如下:
图8是对本发明中某一个方面What-if数据视图合成算法的形象描述。其中由查询视图802和差分表804组成。这个过程可以简单的描述为:首先计算出视图中没有被What-if假设更新操作影响的记录(-操作),然后再与假设更新后出现在假设更新数据视图中的修改和***类型的差分表记录合并(U操作)。
方案2:基于查询视图记录与差分表记录之间的映射关系来合并差分表。
从查询视图记录与差分表记录之间的映射关系的角度来分析差分表合并,如图9所示,查询视图记录与差分表记录之间存在四种类型的映射关系:
(1)查询视图记录没有对应的差分表记录,如图9中第二、五条记录所示;
(2)查询视图记录在差分表中存在一条U类型的差分表记录,如图9中第一条记录所示;
(3)查询视图记录在差分表中存在一条D类型的差分表记录,如图9中第三条记录所示;
(4)差分表中存在一条I类型的差分表记录,如图中第四条记录所示。
在映射表的基础上可以根据查询视图记录和差分表记录的内容确定当前输出的记录。在SQL引擎中,查询视图与差分表之间的映射表可以通过全连接来获得,这个过程描述如下(图10):
(1)当差分表记录Dtuple的标识为“U”时,将它与对应的查询视图记录Btuple合并后输出;
(2)当差分表记录为空时,直接输出查询视图记录Btuple;
(3)当差分表记录Dtuple的标识为“D”时,跳过当前记录;
(4)当差分表记录Dtuple的标识为“I”时,输出差分表记录Dtuple;
由于I类型的假设更新记录在查询视图中无映射对象,因此可将I类型的差分表记录与结果集直接合并,从而节省全连接的时间代价并避免了判断条件。
方案3:基于预合并机制来合并差分表。
当What-if假设分析查询的聚集操作类型为SUM,COUNT和AVERAGE时,根据聚集运算结合律,可以将查询视图与差分表合并后直接进行分组聚集运算。这个过程描述如下:
(1)当What-if查询的聚集操作为SUM时,直接将查询视图与差分表合并,然后在此基础上进行group-by操作;
(2)当What-if查询的聚集操作为COUNT时,直接将查询视图与差分表合并,用对差分表中_count字段的SUM运算代替COUNT运算,然后在此基础上进行group-by操作;
(3)当What-if查询的聚集操作为AVERAGE时,直接将查询视图与差分表合并,然后在此基础上用差分表中聚集字段上的SUM/COUNT代替聚集字段上的AVERAGE运算进行group-by操作;
在步骤C中,对What-if数据视图和在B3中生成的新维表进行连接,并对连接后的假设视图进行各种假设分析,连接操作是在用户执行What-if假设分析的时候由相关软件负责完成,属于已有技术。所谓假设分析就是用户在假设视图上根据自己的业务需要,进行的假设修改及查询,可以是数据和结构的假设,如某一种产品在某一个分店在某一个时间段的销售额增加10%,对公司总的利润的影响,如果公司去年引入了一种新产品,对公司去年利润的影响等。
用户根据当前假设视图的进行假设分析,比如在某超市OLAP中,决策者预分析将USA国家的CA地区销售额增加10%,其他地区减少10%,对整个超市的利润影响情况。***会根据用户的假设将假设数据存储在差分表中,用户假设数据通过步骤A中的图形化界面输入,比如上例中,在差分表中存储USA国家的CA地区销售额增加10%后的值和其他地区减少10%后的值。
为了方便用户进行各种假设,为用户提供一种类似于微软EXCEL的表格界面,界面中任何一个单元格的值均可进行编辑,对单元格数据修改后,假设数据会存储到差分表中,并重新计算所有表格中的数据,因为修改某一个单元格后,其相关数据需要跟着改变。
差分表和原始查询结果(一个Cuboid或多个Cuboid的组合)组装成HCube或VCube。相当于差分表将查询结果进行了一层包装,由原来Cube不能修改,变为了可以任意改变。
转到图11,图11是对本发明中HCube的一种形象描述。对原有的维表进行剪枝操作,生成新的维表;通过查询视图和差分表组合成的What-if数据视图是新的事实表。最后组合成一个星型结构的Cube。多个HCube组成VCube。
在步骤D中,完成What-if分析后,将差分表及相关附属结构从数据库中删除。根据用户需求如果需要保存,则保存What-if分析的过程及结果。
优选地,在某些情况下,用户可能需要保存What-if分析的结果或在结果上在进行What-if分析,这样就形成多版本的基于差分表的内存OLAP What-if分析。
下面给出了基于差分表的多版本What-if数据视图生成过程。
如图12所示,在What-if分析中,多版本场景下的What-if分析可以分为级联假设更新模式和独立假设更新模式两大类,其中级联假设更新模式是在上一个假设更新版本的基础上进行新的假设更新,其假设更新的结构受上一个假设更新版本及其祖先假设更新版本的影响;独立假设更新是指每一个假设更新都是在基表的基础上进行的,各版本之间没有影响。
传统的多版本假设更新视图的生成过程是基于递归模式,即:
What-if数据视图Vi=
(...((What-if数据视图Vi-1⊙差分表Vi)⊙差分表Vi-1)...⊙差分表V0)
采用差值法存储两个假设数据视图对应记录度量值的差值,因此在级联假设更新场景下,What-if数据视图Vi可以改写为:
What-if数据视图Vi=事实表⊙(差分表Vi⊙差分表Vi-1...⊙差分表V0)
由于差分表记录的数量远少于视图的记录,对级联版本的差分表记录的预合并机制(图13)可以大大降低迭代模式的假设数据视图的生成代价,从而提高What-if查询在多版本模式下的性能。
接下来将要说明的是本发明的硬件结构实例。毫无疑问,图14所示的每一个块都可以用一个专用的硬件来构成,同时这些块同样也可以用通用信息处理设备来实现。图14示出了能够实施本发明的一个示例环境的示意图。计算机1401包括CPU***单元,其中该单元包含了CPU1400、RAM1420、ROM1430以及输入/输出控制器1460,并且所有这些部件是借由主机控制器1410而被相互连接的。计算机1401还包括通信接口1450、硬盘驱动器1470、光盘驱动器1480、软盘驱动器1490以及图形控制器1440,并且所有这些组件都是通过输入/输出控制器1460来连接的。特别地,光盘驱动器1480能对诸如CD或DVD之类的碟片形状的介质进行读写,软盘驱动器1490能够对软盘进行读写,而图形控制器1440则驱动显示器1445。
CPU1400依照存储在ROM1430、BIOS和RAM1420中的程序来操作,并且由此控制每一个部分。图形控制器1440获取CPU1400等设备在RAM1420内部的缓冲器中产生的图形数据,然后则在显示器1445上显示这些数据。在存储设备1470种,存储了OLAP数据库和What-if分析需要的差分表及新的维表信息,并根据用户的要求存储多版本的What-if分析结果。CPU1400则使用完成基于差分表的What-if数据视图和假设视图的生成及What-if假设分析。这个计算操作是通过将本发明的基于差分表的What-if分析程序加载到ROM1430中并随后执行这些程序而被执行的。What-if分析的结果被显示在显示器1445上。
通信接口1450经由网络而与外部通信设备进行通信。该信息处理设备1401还可以借助通信接口1450接受来自外部的What-if分析请求,并执行What-if分析,然后将结果经由通信接口1450发送到外部信息处理设备。附带地,用于构建网络的可以是任何有线、无线、红外连接以及短距离无线电连接,诸如蓝牙,并且任何类型的网络都可以在没有添加任何变动的情况下被用于实施本发明。存储设备1470存储供计算机1401使用的本发明程序、应用、OS等等的代码和数据。光盘驱动器1480从诸如CD或DVD之类的介质中读取程序或数据,此后,所读取的程序和数据被加载到RAM1430中,以供CPU1400使用。作为替换,本发明的程序和数据也可以从外部记录介质中提供。
作为外部记录介质使用可以使诸如DVD和PD之类的光学记录介质、诸如MD之类的磁光学记录介质、磁带介质、诸如IC卡之类的半导体存储器。此外,通过使用作为记录媒体而在服务器***中提供的诸如硬盘或RAM之类的存储设备,所述程序可以经由网络而从专用通信网络或因特网相连的服务器***获取。从上述结构实例中可以看出,任何具有通用计算机功能的硬件都可以用作本发明需要的硬件。举例来说,移动终端、便携式终端和家庭电子设备都是可以直接使用而不会出现任何问题。应该指出的是,图14仅仅例示了用于实施本发明的硬件结构。相应地,对其他各种结构来说,只要对其可以应用本发明实施例,那么这些结构都是可行的。此外,每一个上述例示组件必是本发明的必要组件。
本发明的优选信息处理设备1401使用了一个支持图形用户界面多窗口的操作***,例如Microsoft公司提供的Windows(R)操作***。
从上述结构实例中可以看出,任何具有通用计算机功能的硬件都可以用作本发明需要的硬件。应该指出的是,图14仅示出了用于实施本发明实施例的硬件结构。相应地,对其他各种结构来说,只要对其可以应用本发明实施例,那么这些结构都是可行的。此外,每一个上述例示组件未必是本发明的必要组件。另外,本发明还可以使用硬件、软件、或者软硬件组合来实现。
对于本领域的普通技术人员来说可显而易见的得出其他优点和修改。因此,具有更广方面的本发明并不局限于这里所示出的并且所描述的具体说明及示例性实施例。因此,在不脱离由随后权利要求及其等价体所定义的一般发明构思的精神和范围的情况下,可对其做出各种修改。
Claims (5)
1.一种基于差分表的内存OLAP What-if分析方法,包括:
A1、根据MDX语句的特征,创建MDX语句模板;
A2、根据用户对图形化界面中Cube维度拖拉后的位置,将此维度添加到MDX指定的轴上,同时也可以从此轴上删除维度,维度与维度之间通过CrossJoin操作连接;
A3、生成符合语法规范的MDX语句,同时将用户输入的假设数据存储在差分表中;
B、将一条MDX语句解析为一条或多条SQL语句,并且每一个SQL语句对应着一个聚集操作,所述聚集操作就是带Groupby的SQL语句,每一个SQL语句对应一个Cuboid,根据这个SQL语句还原出一个Cube,称这个Cube为HCube(HypotheticalCube),所述HCube是由经过剪枝操作生成的新维表和What-if数据视图组成的;
具体过程如下:
B1、自动获取每条SQL语句Group by子句后的字段,组成一个集合M={(a1,a2,..),(b1,b2,...),...},集合中的每个元素为一条SQL语句后对应的Group by后的字段,从这些集合中选取最小包含集,该最小包含集能够覆盖所有子元素的元素集合;
B2、根据最小包含集创建HCube,通过XML形式定义Cube;
B3、根据当前的查询所在Cube网格结构中的层次对***中的维表进行剪枝操作以生成新的维表,作为HCube的维表,维表是预先存储在***中用以标识数据的一些属性;
B4、使用查询视图来表示原始聚集数据,该原始聚集数据就是用户的查询结果;
B5、根据查询视图创建差分表;
B6、由存储真实聚集数据的查询视图和存储用户假设数据的差分表组合生成What-if数据视图;
C、对What-if数据视图和新维表进行连接,并对连接后的假设视图进行各种假设分析;
D、完成What-if分析后,将差分表及相关附属结构从数据库中删除。
2.根据权利要求1的方法,其中在步骤B6中,根据差分表和查询视图的不同特征,自动选取以下三种合并方式之一以最快的速度完成合并:
B6-1、基于集合操作生成What-if数据视图,该集合操作是指基于集合的一些运算;
B6-2、基于该查询视图记录与差分表记录之间的映射表来合并差分表,其中该查询视图记录为Btuple,该差分表记录为Dtuple;
B6-3、基于预合并机制来合并差分表。
3.根据权利要求2的方法,其中在B6-2中,查询视图记录与差分表记录之间存在四种类型的映射关系:
(1)查询视图记录没有对应的差分表记录;
(2)查询视图记录在差分表中存在一条U类型的差分表记录;
(3)查询视图记录在差分表中存在一条D类型的差分表记录;
(4)差分表中存在一条I类型的差分表记录。
4.根据权利要求3的方法,其中查询视图与差分表之间的映射表可以通过全连接来获得:
(1)当差分表记录Dtuple的标识为U时,将它与对应的查询视图记录Btuple合并后输出;
(2)当差分表记录为空时,直接输出查询视图记录Btuple;
(3)当差分表记录Dtuple的标识为D时,跳过当前记录;
(4)当差分表记录Dtuple的标识为I时,输出差分表记录Dtuple。
5.根据权利要求2的方法,其中在B6-3中:
当What-if查询的聚集操作为SUM时,直接将查询视图与差分表合并,然后在此基础上进行group-by操作;
当What-if查询的聚集操作为COUNT时,直接将查询视图与差分表合并,用对差分表中count字段的SUM运算代替COUNT运算,然后在此基础上进行group-by操作;
当What-if查询的聚集操作为AVERAGE时,直接将查询视图与差分表合并,然后在此基础上聚集字段上的SUM/COUNT代替聚集字段的AVERAGE进行group-by操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910081669 CN101556602B (zh) | 2009-04-08 | 2009-04-08 | 一种基于差分表的内存OLAP What-if分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910081669 CN101556602B (zh) | 2009-04-08 | 2009-04-08 | 一种基于差分表的内存OLAP What-if分析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101556602A CN101556602A (zh) | 2009-10-14 |
CN101556602B true CN101556602B (zh) | 2013-07-03 |
Family
ID=41174719
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910081669 Active CN101556602B (zh) | 2009-04-08 | 2009-04-08 | 一种基于差分表的内存OLAP What-if分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101556602B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107220366A (zh) * | 2017-06-08 | 2017-09-29 | 贵州优联博睿科技有限公司 | 一种what‑if查询处理方法及*** |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101710273B (zh) * | 2009-10-28 | 2013-09-11 | 金蝶软件(中国)有限公司 | 联机分析处理服务器中多维查询语句的解析方法和装置 |
CN103744989B (zh) * | 2014-01-21 | 2017-01-25 | 国家电网公司 | 一种层次节点数据的查询方法 |
CN103927337B (zh) * | 2014-03-26 | 2017-12-19 | 北京国双科技有限公司 | 用于联机分析处理中关联关系的数据处理方法和装置 |
CN104317936A (zh) * | 2014-10-31 | 2015-01-28 | 北京思特奇信息技术股份有限公司 | 一种基于星型模型的rolap解析引擎设计方法及装置 |
CN104484392B (zh) * | 2014-12-11 | 2018-02-02 | 北京国双科技有限公司 | 数据库查询语句生成方法及装置 |
JP6832292B2 (ja) | 2015-10-23 | 2021-02-24 | オラクル・インターナショナル・コーポレイション | 多次元データベース環境にサンドボックスサポートを提供するためのシステムおよび方法 |
CN106339454A (zh) * | 2016-08-25 | 2017-01-18 | 北京云知声信息技术有限公司 | 查询命令转化方法及装置 |
US10885118B2 (en) * | 2017-05-12 | 2021-01-05 | Futurewei Technologies, Inc. | Incremental graph computations for querying large graphs |
CN107784063B (zh) * | 2017-07-27 | 2020-03-17 | 平安科技(深圳)有限公司 | 算法的生成方法及终端设备 |
CN109376171B (zh) * | 2018-08-15 | 2020-10-16 | 广州虎牙信息科技有限公司 | 数据查询方法、装置、计算机存储介质及服务器 |
-
2009
- 2009-04-08 CN CN 200910081669 patent/CN101556602B/zh active Active
Non-Patent Citations (1)
Title |
---|
王珊.支持What_if分析的OLAP***研究.《计算机学报》.2008,第31卷(第9期),1574-1585. * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107220366A (zh) * | 2017-06-08 | 2017-09-29 | 贵州优联博睿科技有限公司 | 一种what‑if查询处理方法及*** |
Also Published As
Publication number | Publication date |
---|---|
CN101556602A (zh) | 2009-10-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101556602B (zh) | 一种基于差分表的内存OLAP What-if分析方法 | |
RU2398273C2 (ru) | Объединение многомерных выражений и расширений глубинного анализа данных для извлечения информации из кубов olap | |
JP5242875B2 (ja) | 多次元データベースおよび統合集約サーバ | |
US7953694B2 (en) | Method, system, and program for specifying multidimensional calculations for a relational OLAP engine | |
US7333982B2 (en) | Information system having a mode of operation in which queries form one or more clients are serviced using aggregated data retrieved from a plurality of different types of data storage structures for improved query performance | |
US20070027904A1 (en) | System and method for translating between relational database queries and multidimensional database queries | |
WO2006060773A2 (en) | Computer systems and methods for visualizing data with generation of marks | |
US10162855B2 (en) | Systems and methods for optimizing data analysis | |
WO2005036334A2 (en) | Computer systems and methods for visualizing data | |
US20040181518A1 (en) | System and method for an OLAP engine having dynamic disaggregation | |
US7243106B2 (en) | Static drill-through modelling | |
CN105843842A (zh) | 一种大数据环境下多维聚集查询与展示***及方法 | |
US7287022B2 (en) | System and method for analytically modeling data organized according to related attributes | |
US7117218B2 (en) | System and method for expressing and calculating a relationship between measures | |
US7313559B2 (en) | System and method for analytically modeling data organized according to a referenced attribute | |
JP2005018751A5 (zh) | ||
Milosevic et al. | Big data management processes in business intelligence systems | |
US20060005121A1 (en) | Discretization of dimension attributes using data mining techniques | |
CN101571871A (zh) | 一种基于查询重写的What-if假设分析方法 | |
Sethi | Data Warehousing and OLAP Technology | |
CA2435861C (en) | Static drill-through modelling | |
CN117931957A (zh) | 一种基于sap hana数据库的高效数据模型 | |
Bog et al. | Enterprise Data Management for Transaction and Analytical Processing | |
Fan | Indexing Performance Issues in Data Warehouse Software Management | |
Lin et al. | Data Warehousing Design and Construction–the Case Study for a Garment Company |
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 |