数据维度处理方法
技术领域
本发明涉及计算机数据处理领域,尤其是指一种数据维度处理方法。
背景技术
为了进行联机分析处理(OLAP)的展示,在处理数据立方体时会建立数据展示的各个维度。在流行的商业智能(BI—Business Intelligence)工具中,维度按照数据库的维度表直接生成,数据立方体中的维度数据成员与数据库维度表中的维度记录一一对应。查询分析时,使用指标加维度的方式进行组合,但是由于维度种类和数量通常较多,在生成复杂的报表时,查询不够灵活。
然而,虽说现有部分BI工具也提供给用户直接编辑维度的工具,但是维度处理好之后,数据立方体一旦生成物理模型,进行维度修改的成本就大大增加。主要原因在于:一、数据立方体一般由专门的数据分析工程师来完成,普通用户不会直接去接触原始维度的修改,二、每次进行数据立方体的改动,重新处理都会花费很长的时间。
发明内容
本发明所要解决的技术问题是:提供一种可方便自定义维度从而进行灵活查询的数据维度处理方法。
为了解决上述技术问题,本发明采用的技术方案为:一种数据维度处理方法,数据维度处理方法包括用户自定义维度流程及数据查询流程;
所述用户自定义维度流程包括用户定义形成自定义维度的步骤;
所述数据查询流程包括,
S31)获取查询语句;
S32)提取查询语句中的原始维度及自定义维度;
S33)查询自定义维度对应的所有子维度;
S34)判断查询语句中包含的原始维度、自定义维度情况,当查询语句中只 有自定义维度,则转到步骤S35;
S35)用自定义维度为所有的子维度构建MDX的子查询后加入至查询语句中,构建OLAP查询语句,转到步骤S38
S38)使用OLAP查询语句对数据立方体执行OLAP查询;
S39)进行数据组合计算得到查询结果;
S40)输出查询结果。
所本发明的有益效果在于:提供了一种可供用户自定义维度从而进行查询处理的商业智能数据维度处理方法。使得商业智能数据在创建数据立方体的时候可简单处理,不需要事先考虑维度或维度数据的多种组合可能,在用户使用时可快捷、随意进行维度或维度数据组合,并实现灵活查看组合维度的数据的目的,且确保了自定义维度情况下报表数据的生成更为简单。
附图说明
下面结合附图详述本发明的具体结构
图1为本发明的处理方法架构示意图;
图2为本发明的处理方法中数据查询流程的流程图。
具体实施方式
为详细说明本发明的技术内容、构造特征、所实现目的及效果,以下结合实施方式并配合附图详予说明。
本发明提供了一种数据维度处理方法,特别适用于商业智能(BI—BusinessIntelligence)中数据的联机分析处理(OLAP)展示,处理架构参见图1所示。
一种数据维度处理方法,包括用户自定义维度流程及数据查询流程;
所述用户自定义维度流程包括用户定义形成自定义维度的步骤;
如图2所示,所述数据查询流程包括步骤,
S31)获取查询语句;
S32)提取查询语句中的原始维度及自定义维度;
S33)查询自定义维度对应的所有子维度;
S34)判断查询语句中包含的原始维度、自定义维度情况,若查询语句中只有自定义维度,则转到步骤S35;若查询语句中除自定义维度外还包括原始维度则转到步骤S36;
S35)用自定义维度为所有的子维度构建MDX的子查询后加入至查询语句中,构建OLAP查询语句,转到步骤S38;
S36)判断原始维度是否落入自定义维度的子维度中,是则转到步骤S37,否则转到步骤S35;
S37)将获取的查询语句直接作为OLAP查询语句,转到步骤S38;
S38)使用OLAP查询语句对数据立方体执行OLAP查询;
S39)进行数据组合计算得到查询结果;
S40)输出查询结果。
进一步的,上述步骤S39中数据组合计算包括步骤,
S390)获取返回查询结果的每一列对应查询的纵轴需要计算的原始维度;
S391)根据自定义维度的数据项目清单S_ID_list,查询出每个自定义维度中的普通维度信息;所述普通维度信息包括普通维度名称C_Name;
S392)计算自定义维度所包含维度在数据结果中的列索引;
S393)判断自定义维度是否包括多组,是则转到步骤S394,否则转到步骤S396;
S394)多个自定义维度是否出现在数据结果中不同列索引中,是则转到步骤S395,否则转到步骤S396;
S395)对跨列索引的自定义维度做笛卡尔乘积从而生成新的自定义维度;
S396)遍历查询结果,包括,
对行记录中某一列落入某个自定义维度代码S_Code的,将该行指标值累计到自定义维度合并项的合计值中,而后将该列索引作为明细项加入自定义维度明细集合,并将该行记录从结果集合中移除的步骤;
对行记录中的某一列落入多个自定义维度代码S_Code的,将该行指标值应累计到多个对应的自定义维度的合计值中的步骤;
对首次使用到的自定义维度,记录该行为对应的自定义维度的插入位置C_Index的步骤;
S397)根据自定义维度的插入位置C_Index将自定义维度插入到相应的位置,在合并项后面插入其明细集合中的明细项形成查询结果。
进一步的,上述步骤S32还包括提取查询语句中的时间维度与月份维度;
对应的,步骤S39后还包括步骤,
S50)当查询语句中包含时间维度但不包含月份维度时,执行步骤S51;当查询语句中包含时间维度且包含月份维度时,执行步骤S61;
组合维度同比计算:
S51)提取时间维度中的时间项;
S52)以时间项构建一个新的同比时间项;
S53)将新的同比时间项替换原查询语句中的时间项,构建新查询语句;
S54)使用新查询语句执行步骤S33-S39,得到同比查询结果;
S55)将同比查询结果与原查询结果按照行属性进行合并得到中间查询结果;
S56)在中间查询结果中新增同比比例列;
S57)对中间查询结果中需要计算同比数据的指标列对应进行计算得到同比比例数据Ry放入同比比例列中,而后转到步骤S40。
本步骤的计算,例:如果指标列C需要计算同比数据,两次查询结果合并后指标列数据分别为Ct和Co,则新增同比例数据Ry=(Ct-Co)*Co*100%。
组合维度环比计算:
S61)提取时间维度及月份维度中的时间项;
S62)以时间项构建一个新的环比时间项;
S63)将新的环比时间项替换原查询语句中的时间项,构建新查询语句;
S64)使用新查询语句执行步骤S33-S39,得到环比查询结果;
S65)将环比查询结果与原查询结果按照行属性进行合并得到中间查询结果;
S66)在中间查询结果中新增环比比例列;
S67)对中间查询结果中需要计算环比数据的指标列对应进行计算得到环比比例数据Rm放入环比比例列中,而后转到步骤S40。
本步骤的计算,例:如果指标列C需要计算环比数据,两次查询结果合并后指标列数据分别为Ct和Co,则新增的环比比例数据Rm=(Ct-Co)*Co*100%
进一步的,上述数据维度处理方法还包括原始维度生成流程,原始维度生成流程包括步骤:
S11)按照OLAP的过程,根据维度表和事实表生成数据立方体;
S12)读取数据立方体中的所有维度属性和维度成员,并存入数据库作为原始维度。
进一步的,上述用户自定义维度流程中用户定义形成自定义维度包括步骤:
S21)抽取原始维度的数据;
S22)用户访问原始维度数据;
S23)用户对原始维度进行平行组合和/或层次组合后保存为新的维度;
S24)用户自定义维度名称S_Name、自定义维度代码S_Code以及自定义维度所包含的原始普通维度id及数据项目清单S_ID_list;
S25)将新的维度保存至用户自定义维度中。
进一步的,上述用户自定义维度流程还包括用户编辑更新自定义维度的步骤。
具体实施例:
本例中,生成的原始维度如下:
a)城市,其明细包含广东省所有城市;自定义维度:珠三角
b)海关,其明细包含所有海关;自定义维度:北方海关
而后,为了方便检索,用户通过下述步骤进行自定义维度:
a)对原始维度中的城市维度进行选择:通过设置筛选条件,选择出珠三角9个城市,并定义成第一组自定义维度“珠三角”。
b)对原始维度中的海关维度进行选择:通过设置筛选条件,选择出北京海关和天津海关,定义为第二组自定义维度“北方海关”。
用户基于上述自定义维度进行数据查询
A)查询
例一:
1)查询“珠三角城市销售汇总金额”
2)查询时,语句中仅包含自定义维度,翻译时,将其提取,由于只有自定义维度,使用“珠三角”自定义维度中的子维度(广州,深圳,珠海…)来构建查询的MDX
例二:
1)查询“所有城市销售汇总金额,其中珠三角城市单独合计”,
2)查询时,语句中包含自定义维度,翻译时,将其取出,查询中除了自定义维度“珠三角”,还包含城市维度中的其他明细,查询的MDX语句不发生变化
例三:
1)查询“珠三角城市保健品销售汇总金额”
2)查询时,语句中包含两种维度,城市和商品,其中城市维度有自定义维度,商品是原始维度,自定义维度“珠三角”与商品维度无交集,MDX中加入珠三角明细维度的过滤语句
例四:
1)查询“珠三角城市从北方海关统计的销售汇总金额”
2)同样,此处查询语句中仅包含自定义维度(虽然是两个自定义维度),翻译时,将其提取,由于只有自定义维度,使用“珠三角”自定义维度中的子维度(广州,深圳,珠海…)以及“北方海关”来构建查询的MDX。
B)查询结果处理
对于例一,查询“珠三角城市销售汇总金额”
查询结果处理时,首先对查询结果按照行进行遍历,由于只包含一个自定义维度“珠三角”,对属于“珠三角”这个自定义维度的所有城市,将其总金额累加到“珠三角”的金额中进行汇总,最后将“珠三角”这个自定义维度的计算结果作为一条记录添加到结果中。
对于例四,查询“珠三角城市从北方海关统计的销售汇总金额”
查询结果处理时,对查询结果进行遍历,包含“珠三角”和“北方海关”,并且这两个自定义维度分属两个不同的维度,构建新的定义维度“珠三角_北方海关”,对结果中同时落入“珠三角”和“北京海关”两个自定维度的行,将其总金额累计到“珠三角_北方海关”进行汇总,将“珠三角_北方海关”的计算结果作为新记录添加到结果中。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。