著录项信息
专利名称 | 基于多维表达式语言的维度查询方法及装置 |
申请号 | CN201410750941.7 | 申请日期 | 2014-12-09 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2015-03-11 | 公开/公告号 | CN104408169A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F17/30 | IPC分类号 | G;0;6;F;1;7;/;3;0查看分类表>
|
申请人 | 北京国双科技有限公司 | 申请人地址 | 北京市海淀区北四环中路229号海泰大厦4层南401号
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京国双科技有限公司 | 当前权利人 | 北京国双科技有限公司 |
发明人 | 洪超 |
代理机构 | 北京康信知识产权代理有限责任公司 | 代理人 | 李志刚;吴贵明 |
摘要
本发明公开了一种基于多维表达式语言的维度查询方法及装置。该方法包括:确定查询条件和分析数据库中符合查询条件的指标和待查询的维度表;获取待查询的维度表中的第一维度表,其中,第一维度表是待查询的维度表中成员值数量大于预设阈值的维度表;在符合查询条件的指标中确定第一指标;根据第一指标对第一维度表中的成员值进行过滤处理,得到成员值集合;接收多维表达式语言查询指令,其中,多维表达式语言查询指令是基于成员值集合得到的查询指令;以及根据多维表达式语言查询指令对成员值集合执行查询处理。通过本发明,解决了在分析数据库的维度表中基于多维表达式语言查询处理时,查询速度慢的问题。
基于多维表达式语言的维度查询方法及装置\n技术领域\n[0001] 本发明涉及数据处理领域,具体而言,涉及一种基于多维表达式语言的维度查询方法及装置。\n背景技术\n[0002] 在SSAS数据分析领域中,采用多维表达式(multi-dimensional expressions,简称为MDX)语言进行查询,往往对很多大维度进行查询,如Url,同时也会需要对大维度的成员值进行过滤的情况,如Url包含某些关键字进行过滤的情况,但是采用MDX语言在维度表中过滤时速度慢,效率低。\n[0003] 针对现有技术在分析数据库的维度表中基于多维表达式语言查询处理时,查询速度慢的问题,目前尚未提出有效的解决方案。\n发明内容\n[0004] 本发明的主要目的在于提供一种基于多维表达式语言的维度查询方法及装置,以解决现有技术在分析数据库的维度表中基于多维表达式语言查询处理时,查询速度慢的问题。\n[0005] 为了实现上述目的,根据本发明的一个方面,提供了一种基于多维表达式语言的维度查询方法。\n[0006] 根据本发明的基于多维表达式语言的维度查询方法包括:确定查询条件和分析数据库中符合查询条件的指标和待查询的维度表;获取待查询的维度表中的第一维度表,其中,第一维度表是待查询的维度表中成员值数量大于预设阈值的维度表;在符合查询条件的指标中确定第一指标,其中,第一指标为与第一维度表存在映射关系的指标;根据第一指标对第一维度表中的成员值进行过滤处理,得到成员值集合;接收多维表达式语言查询指令,其中,多维表达式语言查询指令是基于成员值集合得到的查询指令;以及根据多维表达式语言查询指令对成员值集合执行查询处理。\n[0007] 进一步地,在符合查询条件的指标中确定第一指标包括:确定事实表中符合查询条件的指标,其中,事实表用于存储分析数据库中所有的指标;获取查询条件的指标与第一维度表之间的映射关系;以及根据映射关系得到第一维度表对应的第一指标。\n[0008] 进一步地,接收多维表达式语言查询指令包括:确定成员值集合;接收过滤指令,其中,过滤指令为用于对成员值集合进行过滤,得到非空的成员值集合的指令;根据过滤指令对成员值集合进行过滤,得到非空的成员值集合;根据非空的成员值集合,确定与非空的成员值集合对应的多维表达式语言查询指令;以及接收多维表达式语言查询指令。\n[0009] 进一步地,获取待查询的维度表中的第一维度表包括:确定待查询的维度表中各维度表的成员值数量;获取待查询的维度表中成员值数量大于预设阈值的维度表;确定事实表中的指标,其中,事实表用于存储分析数据库中所有的指标;以及将待查询的维度表中成员值数量大于预设阈值的维度表与事实表中的指标建立映射关系,得到第一维度表。\n[0010] 进一步地,根据第一指标对第一维度表中的成员值进行过滤处理,得到成员值集合包括:确定第一维度表中的成员值;判断第一维度表中的成员值是否与第一指标是否存在映射关系;如果第一维度表中的成员值与第一指标不存在映射关系,删除成员值;以及如果第一维度表中的成员值与第一指标存在映射关系,保留成员值。\n[0011] 为了实现上述目的,根据本发明的另一方面,提供了一种基于多维表达式语言的维度查询装置。\n[0012] 根据本发明的基于多维表达式语言的维度查询装置包括:第一确定单元,用于确定查询条件和分析数据库中符合查询条件的指标和待查询的维度表;获取单元,用于获取待查询的维度表中的第一维度表,其中,第一维度表是待查询的维度表中成员值数量大于预设阈值的维度表;第二确定单元,用于在符合查询条件的指标中确定第一指标,其中,第一指标为与第一维度表存在映射关系的指标;过滤单元,用于根据第一指标对第一维度表中的成员值进行过滤处理,得到成员值集合;接收单元,用于接收多维表达式语言查询指令,其中,多维表达式语言查询指令是基于成员值集合得到的查询指令;以及处理单元,用于根据多维表达式语言查询指令对成员值集合执行查询处理。\n[0013] 进一步地,第二确定单元包括:第一确定模块,用于确定事实表中符合查询条件的指标,其中,事实表用于存储分析数据库中所有的指标;第一获取模块,用于获取查询条件的指标与第一维度表之间的映射关系;以及第二获取模块,用于根据映射关系得到第一维度表对应的第一指标。\n[0014] 进一步地,接收单元包括:第二确定模块,用于确定成员值集合;接收模块,用于接收过滤指令,其中,过滤指令为用于对成员值集合进行过滤,得到非空的成员值集合的指令;过滤模块,用于根据过滤指令对成员值集合进行过滤,得到非空的成员值集合;第三确定模块,用于根据非空的成员值集合,确定与非空的成员值集合对应的多维表达式语言查询指令;以及第三获取模块,用于接收多维表达式语言查询指令。\n[0015] 进一步地,获取单元包括:第四确定模块,用于确定待查询的维度表中各维度表的成员值数量;第四获取模块,用于获取待查询的维度表中成员值数量大于预设阈值的维度表;第五确定模块,用于确定事实表中的指标,其中,事实表用于存储分析数据库中所有的指标;以及第五获取模块,用于将待查询的维度表中成员值数量大于预设阈值的维度表与事实表中的指标建立映射关系,得到第一维度表。\n[0016] 进一步地,过滤单元包括:第六确定模块,用于确定第一维度表中的成员值;判断模块,用于判断第一维度表中的成员值是否与第一指标是否存在映射关系;删除模块,用于在第一维度表中的成员值与第一指标不存在映射关系的情况下,删除成员值;以及保留模块,用于在第一维度表中的成员值与第一指标存在映射关系的情况下,保留成员值。\n[0017] 通过本发明,采用以下步骤:确定查询条件和分析数据库中符合查询条件的指标和待查询的维度表;获取待查询的维度表中的第一维度表,其中,第一维度表是待查询的维度表中成员值数量大于预设阈值的维度表;在符合查询条件的指标中确定第一指标,其中,第一指标为与第一维度表存在映射关系的指标;根据第一指标对第一维度表中的成员值进行过滤处理,得到成员值集合;接收多维表达式语言查询指令,其中,多维表达式语言查询指令是基于成员值集合得到的查询指令;以及根据多维表达式语言查询指令对成员值集合执行查询处理,解决了在分析数据库的维度表中基于多维表达式语言查询处理时,查询速度慢的问题,进而达到了在分析数据库的维度表中基于多维表达式语言查询处理时,提成查询速度的效果。\n附图说明\n[0018] 构成本申请的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:\n[0019] 图1是根据本发明第一实施例的基于多维表达式语言的维度查询方法的流程图;\n[0020] 图2是根据本发明第二实施例的基于多维表达式语言的维度查询方法的流程图;\n以及\n[0021] 图3是根据本发明实施例的基于多维表达式语言的维度查询装置的示意图。\n具体实施方式\n[0022] 需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。\n[0023] 为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。\n[0024] 需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。\n[0025] 图1是根据本发明第一实施例的基于多维表达式语言的维度查询方法的流程图。\n如图1所示,该方法包括如下的步骤S101至步骤S106:\n[0026] 步骤S101,确定查询条件和分析数据库中符合查询条件的指标和待查询的维度表。\n[0027] 接收并确定查询条件、确定分析数据库中符合查询条件的指标以及在分析数据库中在多个维度表中确定需要查询的维度表。\n[0028] 步骤S102,获取待查询的维度表中的第一维度表。\n[0029] 获取待查询的维度表中的第一维度表,其中,第一维度表是待查询的维度表中成员值数量大于预设阈值的维度表。\n[0030] 优选地,获取待查询的维度表中的第一维度表包括:确定待查询的维度表中各维度表的成员值数量;获取待查询的维度表中成员值数量大于预设阈值的维度表;确定事实表中的指标,其中,事实表用于存储分析数据库中所有的指标;以及将待查询的维度表中成员值数量大于预设阈值的维度表与事实表中的指标建立映射关系,得到第一维度表。\n[0031] 通过待查询的维度表中各维度表的成员值数量,获取待查询的维度表中成员值数量大于预设阈值的维度表为第一维度表,即确定出大维度表。\n[0032] 步骤S103,在符合查询条件的指标中确定第一指标。\n[0033] 在分析数据库的事实表中确定与第一维度表存在映射关系的指标,再按照查询条件在对该指标进行筛选,将筛选出的指标作为第一指标。\n[0034] 优选地,在符合查询条件的指标中确定第一指标包括:确定事实表中符合查询条件的指标,其中,事实表用于存储分析数据库中所有的指标;获取查询条件的指标与第一维度表之间的映射关系;以及根据映射关系得到第一维度表对应的第一指标。\n[0035] 通过获取查询条件的指标与第一维度表之间的映射关系,根据该映射关系得到第一维度表对应的第一指标。从而在符合查询条件的指标中确定出第一指标。\n[0036] 步骤S104,根据第一指标对第一维度表中的成员值进行过滤处理,得到成员值集合。\n[0037] 根据上述符合查询条件的第一指标,对第一维度表中的成员值进行过滤处理,得到成员值集合。\n[0038] 优选地,根据第一指标对第一维度表中的成员值进行过滤处理,得到成员值集合包括:确定第一维度表中的成员值;判断第一维度表中的成员值是否与第一指标是否存在映射关系;如果第一维度表中的成员值与第一指标不存在映射关系,删除成员值;以及如果第一维度表中的成员值与第一指标存在映射关系,保留成员值。\n[0039] 通过判断第一维度表中的成员值是否与第一指标是否存在映射关系,删除不存在的映射关系的维度表中的成员值以及保留与第一指标存在映射关系的维度表中的成员值。\n通过该步骤,删除了维度表中的部分成员值,即从指标不为空的角度对大维度的成员值做一次快速的过滤,从而在基于多维表达式语言查询处理时,提高查询速度。\n[0040] 步骤S105,接收多维表达式语言查询指令。\n[0041] 接收多维表达式语言(multi-dimensional expressions,简称为MDX)查询指令,其中,多维表达式语言查询指令是基于成员值集合得到的查询指令。\n[0042] 需要说明的是,此处的接收多维表达式语言查询指令为外部输入的多维表达式语言查询代码生成的多维表达式语言查询指令。\n[0043] 例如,接收MDX查询指令,具体的MDX查询指令为:count({(filter(nonempty({[P age].[OriginalUrl].children},[Measures].[pageviews]);即对为pageviews的维度表进行查询为children的成员值。\n[0044] 步骤S106,根据多维表达式语言查询指令对成员值集合执行查询处理。\n[0045] 根据上述接收到的多维表达式语言查询指令对成员值集合执行查询处理,得到查询结果。\n[0046] 需要说明的是,本发明实施例提供的基于多维表达式语言的维度查询方法中对大维度做Filter行级别的过滤时,可采用维度链中的其它维度共同过滤出的相应指标(即与大维度有直接关联的),先从指标不为空的角度对大维度的成员值做一次快速的过滤,再对其做行级别的过滤,能显著减少Filter的行级别的过滤的集合大小,从而提升了查询速度。\n[0047] 本发明实施例提供的基于多维表达式语言的维度查询方法,通过确定查询条件和分析数据库中符合查询条件的指标和待查询的维度表;获取待查询的维度表中的第一维度表,其中,第一维度表是待查询的维度表中成员值数量大于预设阈值的维度表;在符合查询条件的指标中确定第一指标,其中,第一指标为与第一维度表存在映射关系的指标;根据第一指标对第一维度表中的成员值进行过滤处理,得到成员值集合;接收多维表达式语言查询指令,其中,多维表达式语言查询指令是基于成员值集合得到的查询指令;以及根据多维表达式语言查询指令对成员值集合执行查询处理,解决了在分析数据库的维度表中基于多维表达式语言查询处理时,查询速度慢的问题,进而达到了在分析数据库的维度表中基于多维表达式语言查询处理时,提成查询速度的效果。\n[0048] 图2是根据本发明第二实施例的基于多维表达式语言的维度查询方法的流程图。\n图2可以作为图1所示实施例的一种优选实施方式。如图2所示,该方法包括如下的步骤S201至步骤S210:\n[0049] 步骤S201,确定查询条件和分析数据库中符合查询条件的指标和待查询的维度表。\n[0050] 该步骤同步骤S101,这里不再赘述。\n[0051] 步骤S202,获取待查询的维度表中的第一维度表,其中,第一维度表是待查询的维度表中成员值数量大于预设阈值的维度表。\n[0052] 该步骤同步骤S102,这里不再赘述。\n[0053] 步骤S203,在符合查询条件的指标中确定第一指标,其中,第一指标为与第一维度表存在映射关系的指标。\n[0054] 该步骤同步骤S103,这里不再赘述。\n[0055] 步骤S204,根据第一指标对第一维度表中的成员值进行过滤处理,得到成员值集合。\n[0056] 该步骤同步骤S104,这里不再赘述。\n[0057] 步骤S205,确定成员值集合。\n[0058] 确定上述根据第一指标对第一维度表中的成员值进行过滤处理,得到的成员值集合。\n[0059] 步骤S206,接收过滤指令。\n[0060] 接收过滤指令,其中,过滤指令为用于对成员值集合进行过滤,得到非空的成员值集合的指令。\n[0061] 步骤S207,根据过滤指令对成员值集合进行过滤,得到非空的成员值集合。\n[0062] 根据过滤指令对成员值集合进行过滤,得到非空的成员值集合。即从指标不为空的角度对大维度的成员值做一次快速的过滤。\n[0063] 步骤S208,根据非空的成员值集合,确定与非空的成员值集合对应的多维表达式语言查询指令。\n[0064] 根据上述得到非空的成员值集合,确定出与非空的成员值集合对应的多维表达式语言查询指令。\n[0065] 例如,上述得到非空的成员值集合为pageviews;确定出与非空的成员值集合对应的多维表达式语言查询指令为:count({(filter(nonempty({[Page].[OriginalUrl].children},[Measures].[pageviews]);即对为pageviews的维度表进行查询为children的成员值。\n[0066] 步骤S209,获取多维表达式语言查询指令。\n[0067] 获取多维表达式语言查询指令,其中,多维表达式语言查询指令是基于成员值集合得到的查询指令。\n[0068] 步骤S210,根据多维表达式语言查询指令对成员值集合执行查询处理。\n[0069] 该步骤同步骤S106,这里不再赘述。\n[0070] 本发明实施例提供的基于多维表达式语言的维度查询方法,通过确定查询条件和分析数据库中符合查询条件的指标和待查询的维度表;获取待查询的维度表中的第一维度表,其中,第一维度表是待查询的维度表中成员值数量大于预设阈值的维度表;在符合查询条件的指标中确定第一指标,其中,第一指标为与第一维度表存在映射关系的指标;根据第一指标对第一维度表中的成员值进行过滤处理,得到成员值集合;确定成员值集合;接收过滤指令,其中,过滤指令为用于对成员值集合进行过滤,得到非空的成员值集合的指令;根据过滤指令对成员值集合进行过滤,得到非空的成员值集合;根据非空的成员值集合,确定与非空的成员值集合对应的多维表达式语言查询指令;以及获取多维表达式语言查询指令;以及根据多维表达式语言查询指令对成员值集合执行查询处理,解决了在分析数据库的维度表中基于多维表达式语言查询处理时,查询速度慢的问题,进而达到了在分析数据库的维度表中基于多维表达式语言查询处理时,提成查询速度的效果。\n[0071] 需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。\n[0072] 本发明实施例还提供了一种基于多维表达式语言的维度查询装置,需要说明的是,本发明实施例的基于多维表达式语言的维度查询装置可以用于执行本发明实施例所提供的用于基于多维表达式语言的维度查询方法。以下对本发明实施例提供的基于多维表达式语言的维度查询装置进行介绍。\n[0073] 图3是根据本发明的基于多维表达式语言的维度查询装置的示意图。如图3所示,该装置包括:第一确定单元10、获取单元20、第二确定单元30、过滤单元40、接收单元50和处理单元60。\n[0074] 第一确定单元10,用于确定查询条件和分析数据库中符合查询条件的指标和待查询的维度表。\n[0075] 获取单元20,用于获取待查询的维度表中的第一维度表,其中,第一维度表是待查询的维度表中成员值数量大于预设阈值的维度表。\n[0076] 优选地,在本发明实施例提供的基于多维表达式语言的维度查询装置中,获取单元20包括:第四确定模块,用于确定待查询的维度表中各维度表的成员值数量;第四获取模块,用于获取待查询的维度表中成员值数量大于预设阈值的维度表;第五确定模块,用于确定事实表中的指标,其中,事实表用于存储分析数据库中所有的指标;以及第五获取模块,用于将待查询的维度表中成员值数量大于预设阈值的维度表与事实表中的指标建立映射关系,得到第一维度表。\n[0077] 第二确定单元30,用于在符合查询条件的指标中确定第一指标,其中,第一指标为与第一维度表存在映射关系的指标。\n[0078] 优选地,在本发明实施例提供的基于多维表达式语言的维度查询装置中,第二确定单元30包括:第一确定模块,用于确定事实表中符合查询条件的指标,其中,事实表用于存储分析数据库中所有的指标;第一获取模块,用于获取查询条件的指标与第一维度表之间的映射关系;以及第二获取模块,用于根据映射关系得到第一维度表对应的第一指标。\n[0079] 过滤单元40,用于根据第一指标对第一维度表中的成员值进行过滤处理,得到成员值集合。\n[0080] 优选地,在本发明实施例提供的基于多维表达式语言的维度查询装置中,该过滤单元40包括:第六确定模块,用于确定第一维度表中的成员值;判断模块,用于判断第一维度表中的成员值是否与第一指标是否存在映射关系;删除模块,用于在第一维度表中的成员值与第一指标不存在映射关系的情况下,删除成员值;以及保留模块,用于在第一维度表中的成员值与第一指标存在映射关系的情况下,保留成员值。\n[0081] 接收单元50,用于接收多维表达式语言查询指令,其中,多维表达式语言查询指令是基于成员值集合得到的查询指令。\n[0082] 优选地,在本发明实施例提供的基于多维表达式语言的维度查询装置中,该接收单元50包括:第二确定模块,用于确定成员值集合;接收模块,用于接收过滤指令,其中,过滤指令为用于对成员值集合进行过滤,得到非空的成员值集合的指令;过滤模块,用于根据过滤指令对成员值集合进行过滤,得到非空的成员值集合;第三确定模块,用于根据非空的成员值集合,确定与非空的成员值集合对应的多维表达式语言查询指令;以及第三获取模块,用于获取多维表达式语言查询指令。\n[0083] 处理单元60,用于根据多维表达式语言查询指令对成员值集合执行查询处理。\n[0084] 本发明实施例提供的基于多维表达式语言的维度查询装置,通过第一确定单元10确定查询条件和分析数据库中符合查询条件的指标和待查询的维度表;获取单元20获取待查询的维度表中的第一维度表,其中,第一维度表是待查询的维度表中成员值数量大于预设阈值的维度表;第二确定单元30在符合查询条件的指标中确定第一指标,其中,第一指标为与第一维度表存在映射关系的指标;过滤单元40根据第一指标对第一维度表中的成员值进行过滤处理,得到成员值集合;接收单元50接收多维表达式语言查询指令,其中,多维表达式语言查询指令是基于成员值集合得到的查询指令;以及处理单元60根据多维表达式语言查询指令对成员值集合执行查询处理,解决了在分析数据库的维度表中基于多维表达式语言查询处理时,查询速度慢的问题,进而达到了在分析数据库的维度表中基于多维表达式语言查询处理时,提成查询速度的效果。\n[0085] 显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。\n[0086] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
法律信息
- 2020-01-17
专利权人的姓名或者名称、地址的变更
专利权人由北京国双科技有限公司变更为北京国双科技有限公司
地址由100086 北京市海淀区双榆树小区知春路76号翠宫饭店8层A间变更为100083 北京市海淀区北四环中路229号海泰大厦4层南401号
- 2018-02-02
- 2015-04-08
实质审查的生效
IPC(主分类): G06F 17/30
专利申请号: 201410750941.7
申请日: 2014.12.09
- 2015-03-11
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 |
1
| |
2014-12-03
|
2014-09-05
| | |
2
| |
2014-07-23
|
2014-05-09
| | |
3
| |
2012-09-19
|
2012-05-15
| | |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |