多维度数据的查询方法及装置与流程

文档序号:12824873阅读:289来源:国知局
本申请涉及数据库领域,具体而言,涉及一种多维度数据的查询方法及装置。
背景技术
::在联机分析处理(on-lineanalyticalprocessing,简称olap)的环境下,目前常用的查询引擎有hive、impala等结构化的带元数据的数据库。在这些数据库中,通常,将各类事件的数据记录在各个事实数据表中。例如,在“教学管理系统”中,教学管理数据库包含以下几个事实数据表:“教师”表、“课程”表、“成绩”表、“学生”表、“班级”表和“授课”表等,通过以上事实数据表可管理教学过程中学生、教师、课程等信息。再例如,在对互联网的会话进行监测时,一般有会话表(session)、页面浏览表(pageview)、站内搜索表(sitesearch)、订单表(ecommerce)和自定义事件表(event)等多种代表各种业务场景的事实数据表,这些数据表可通过客户的会话标识(sessionid)进行关联,以形成整个会话的所有实体。当用户需要从多个角度、跨越多个事实数据表将数据关联以查看指标数据和维度数据时,在相关技术中,通常根据用户查询需求专门编写相应代码,进而实现在数据库中查询相关的指标数据和维度数据。由于相关技术中缺乏统一将用户查询需求迅速转化为查询语言的技术方案,导致多维度数据查询的执行效率较低。针对相关技术中多维度数据查询的执行效率较低的问题,目前尚未提出有效的解决方案。技术实现要素:本申请实施例提供了一种多维度数据的查询方法及装置,以至少解决相关技术中多维度数据查询的执行效率较低的技术问题。根据本申请实施例的一个方面,提供了一种多维度数据的查询方法,包括:获取查询条件,其中,查询条件为用于执行多维度数据查询的条件;从多个事实数据表中获取满足查询条件的表集合;将待分配字段分配给表集合中的相应的事实数据表,得到目标表集合,其中,待分配字段为从查询条件中获取的所需列字段;根据目标表集合中的事实数据表之间的连接关系生成用于反映数据流过程的数据结构;以及根据数 据结构生成相应的数据查询语言并通过数据查询语言执行多维度数据查询。进一步地,将待分配字段分配给表集合中的相应的事实数据表,得到目标表集合包括:对于多个事实数据表中包含同一维度的多张事实数据表,按照事实数据表的数据量由小到大的次序,依次判断每张事实数据表是否包含于表集合,直到判断出一张事实数据表包含于表集合;判断该包含于表集合的事实数据表是否包含待分配字段;如果判断出该包含于表集合的事实数据表包含待分配字段,则将待分配字段分配给该包含于表集合的事实数据表;以及将该包含于表集合的事实数据表添加至目标表集合。进一步地,判断该包含于表集合的事实数据表是否包含待分配字段包括:依次判断该包含于表集合的事实数据表是否包含待分配字段集合中的待分配字段,其中,待分配字段集合中包含至少一个待分配字段,在将待分配字段分配给该包含于表集合的事实数据表之后,该方法还包括:将分配给该包含于表集合的事实数据表的待分配字段从待分配字段集合中删除。进一步地,根据目标表集合中的事实数据表之间的连接关系生成用于反映数据流过程的数据结构包括:根据目标表集合中的事实数据表和该事实数据表对应的待分配字段确定连接关系;以及根据连接关系生成用于反映数据流过程的数据结构。进一步地,查询条件包括查询维度链和查询指标,查询维度链包括至少一个查询维度,至少一个查询维度包括第一查询维度,从多个事实数据表中获取满足查询条件的表集合包括:判断第一查询维度是否仅包含于一个事实数据表;如果判断出第一查询维度仅包含于一个事实数据表,则将包含第一查询维度的事实数据表添加至表集合;以及如果判断出第一查询维度包含于至少两个事实数据表,则获取至少两个事实数据表中数据量最小的事实数据表,并将该数据量最小的事实数据表添加至表集合。进一步地,如果判断出第一查询维度仅包含于一个事实数据表,将包含第一查询维度的事实数据表添加至表集合包括:检测包含第一查询维度的事实数据表是否存在于表集合中;以及如果检测出包含第一查询维度的事实数据表不存在于表集合中,则将包含第一查询维度的事实数据表添加至表集合。进一步地,在判断第一查询维度是否仅包含于一个事实数据表之前,该方法还包括:将指标表添加至表集合,其中,指标表包括查询指标。根据本申请实施例的另一方面,还提供了一种多维度数据的查询装置,包括:第一获取单元,用于获取查询条件,其中,查询条件为用于执行多维度数据查询的条件;第二获取单元,用于从多个事实数据表中获取满足查询条件的表集合;分配单元,用于将待分配字段分配给表集合中的相应的事实数据表,得到目标表集合,其中,待分 配字段为从查询条件中获取的所需列字段;生成单元,用于根据目标表集合中的事实数据表之间的连接关系生成用于反映数据流过程的数据结构;以及执行单元,用于根据数据结构生成相应的数据查询语言并通过数据查询语言执行多维度数据查询。进一步地,分配单元包括:第一判断模块,用于对于多个事实数据表中包含同一维度的多张事实数据表,按照事实数据表的数据量由小到大的次序,依次判断每张事实数据表是否包含于表集合,直到判断出一张事实数据表包含于表集合;第二判断模块,用于判断该包含于表集合的事实数据表是否包含待分配字段;分配模块,用于在判断出该包含于表集合的事实数据表包含待分配字段时,将待分配字段分配给该包含于表集合的事实数据表;以及添加模块,用于将该包含于表集合的事实数据表添加至目标表集合。进一步地,第二判断模块包括:判断子模块,用于依次判断该包含于表集合的事实数据表是否包含待分配字段集合中的待分配字段,其中,待分配字段集合中包含至少一个待分配字段,该装置还包括:删除单元,用于将分配给该包含于表集合的事实数据表的待分配字段从待分配字段集合中删除。在本申请实施例中,通过获取查询条件,其中,查询条件为用于执行多维度数据查询的条件;从多个事实数据表中获取满足查询条件的表集合;将待分配字段分配给表集合中的相应的事实数据表,得到目标表集合,其中,待分配字段为从查询条件中获取的所需列字段;根据目标表集合中的事实数据表之间的连接关系生成用于反映数据流过程的数据结构;以及根据数据结构生成相应的数据查询语言并通过数据查询语言执行多维度数据查询,解决了相关技术中多维度数据查询的执行效率较低的技术问题,达到了快速实现多维度数据查询的技术效果。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1是根据本申请实施例的多维度数据的查询方法的流程图;以及图2是根据本申请实施例的多维度数据的查询装置的示意图。具体实施方式为了使本
技术领域
:的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例 仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。下面,首先对本申请实施例中涉及的相关技术术语进行解释,以方便对本申请的理解。指标(查询指标):是指可以进行聚合运算的值,例如,综合浏览量是一个指标,使用求和进行聚合;平均停留时间也是一个指标,使用平均进行聚合,其中,聚合运算包括求和、平均、计数等。维度(查询维度):是指查看指标的角度,例如,浏览器是一个维度,可以从浏览器这个维度查询页面浏览(pageview,简称为pv),从而可以知道用户使用哪些浏览器查看页面,以及使用这些浏览器查看页面的次数;操作系统为另一个维度,也可以从操作系统这个维度查询pv,从而可以知道用户使用哪些操作系统查看页面,以及使用这些操作系统查看页面的次数。多维剖析(多维度数据查询):是指可以从多个维度剖析多个指标的值,例如,从操作系统维度查看会话量值后,选择其中几个成员后,继续从浏览器维度查看会话值,即从两个维度剖析会话值。依次类推,可以从多个维度进行自由的剖析。其中,成员是指维度具体对应的对象,例如,浏览器是一个维度,而ie浏览器、chrome浏览器即为该维度的一个成员。维度表:维度表可以看作是用户来分析数据的窗口,维度表中包含事实数据表中事实记录的特性,有些特性提供描述性信息,有些特性指定如何汇总事实数据表数据,以便为分析者提供有用的信息,维度表包含帮助汇总数据的特性的层次结构。例如,包含产品信息的维度表通常包含将产品分为食品、饮料、非消费品等若干类的层次结构,这些产品中的每一类进一步多次细分,直到各产品达到最低级别。在维度表中,每个表都包含独立于其他维度表的事实特性,例如,客户维度表包含有关客户的数据。 维度表中的列字段可以将信息分为不同层次的结构级。事实数据表:数据仓库架构中的中央表,它包含联系事实与维度表的数字度量值和键。事实数据表包含描述业务(如银行事务或产品销售)内特定事件的数据。一般来说,一个事实数据表都要和一个或多个维度表相关联,用户在利用事实数据表创建多维数据集时,可以使用一个或多个维度表。关联键:是关系型数据库的重要组成部分,是一个表中的一个或者几个属性,用于标识该表的每一行或者与另一个表产生联系。根据本申请实施例,提供了一种多维度数据的查询方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。图1是根据本申请实施例的多维度数据的查询方法的流程图,如图1所示,该方法包括如下步骤:步骤s102,获取查询条件,其中,查询条件为用于执行多维度数据查询的条件。在该步骤中,查询条件可以通过读取用户输入的查询指令获取,用户查询指令为用户从多个角度、跨越多个事实数据表将数据关联以查看指标数据和维度数据的指令。具体地,查询条件可包括查询维度链和查询指标。其中,查询维度链用于对多个事实数据表进行过滤,其中,查询维度链包括至少一个查询维度。例如,查询维度链包括以下各个维度节点:操作系统版本(window7)>>浏览器(chrome)>>是否新访问者(是)>>页面查看量(1)>>访问时长;查询指标为访问量。可选地,在获取查询条件之前,可配置查询维度和查询指标的元数据信息,确定查询维度和查询指标的相关属性。例如,可通过以下方式进行查询维度的配置:"dimensions":[{"name":"sourcetype",//名称,类型"column":"sourcetype",//列,类型"tables":["session","pageview","ecommerce","sitesearch","mouseclick","event"]},//表:会话表,页面游览表,订单表,网站搜索表,点击表,自定义事件表{"name":"channelname",//名称,来源渠道名称"column":"channelname",//列"tables":["session","pageview","ecommerce","sitesearch","mouseclick","event"]}//表:会话表,页面游览表,订单表,网站搜索表,点击表,自定义事件表]可以通过以下方式进行查询指标的配置:"measures":[{"name":"visits",//名称,访问量"table":"session",//表,会话表"column":null,"aggregatetype":"count"},{"name":"bouncesvisits",//名称,访问量"table":"session",//表,会话表"column":"isbouce",//列,isbouce列"aggregatetype":"sum"}]步骤s104,从多个事实数据表中获取满足查询条件的表集合。由于一个维度可能在多个表上出现,且表示同样的过滤意义,因此在进行多维度数据查询时,判断选取哪些事实数据表参与计算显得尤为重要。其中,选取的参与计 算的事实数据表的数据量越小、事实数据表的个数越少,查询效率就越高,内存开销也越少,更有利于优化整个系统的查询性能。例如,多个事实数据表为多个销售数据表,多个销售数据表包括北方地区销售数据表、南方地区销售数据表、以及各个省份的销售数据表。其中,在查询维度为河北省(比如指标为年平均销售量)时,在北方地区销售数据表和河北省销售数据表中均存在该维度。因此,在选择参与计算(查询)的事实数据表时,由于河北省销售数据表的数据量小于北方地区销售数据表的数据量,因此优先选择河北省销售数据表执行数据查询,以减少不必要的计算开销,提高查询效率。同样地,数据表的个数越少也越有利于提高查询的效率。在该步骤中,满足查询条件的表集合优选的为最少表集合。最少表集合为多个事实数据表中至少包含一个查询维度和一个查询指标的、数量最少的事实数据表的集合。最少表集合中的每个事实数据表可以包括查询维度链上的多个查询维度。获取到最少表集合即获取到后续查询数据的元数据信息。为了提高获取最少表集合的效率,可选地,查询条件包括查询维度链和查询指标,查询维度链包括至少一个查询维度,至少一个查询维度包括第一查询维度,从多个事实数据表中获取满足查询条件的表集合包括:判断第一查询维度是否仅包含于一个事实数据表;如果判断出第一查询维度仅包含于一个事实数据表,则将包含第一查询维度的事实数据表添加至表集合;以及如果判断出第一查询维度包含于至少两个事实数据表,则获取至少两个事实数据表中数据量最小的事实数据表,并将该数据量最小的事实数据表添加至表集合。该表集合即得到的最少表集合。为了保证最少表集合中保存需要参与计算的数量尽可能少的事实数据表,以提高后续的查询效率,可选地,如果判断出第一查询维度仅包含于一个事实数据表,将包含第一查询维度的事实数据表添加至表集合包括:检测包含第一查询维度的事实数据表是否存在于表集合中;以及如果检测出包含第一查询维度的事实数据表不存在于表集合中,则将包含第一查询维度的事实数据表添加至表集合。为了提高后续多维度数据的查询效率,可选地,如果检测出包含第一查询维度的事实数据表存在于上述表集合,该方法还包括:不对该表集合执行事实数据表的添加处理。为了保证得到的最少表集合中保存需要参与计算的数量尽可能少、并且数据量尽可能小的事实数据表,以提高后续的查询效率,可选地,如果判断出第一查询维度包含于至少两个事实数据表,获取至少两个事实数据表中数据量最小的事实数据表,并 将该数据量最小的事实数据表添加至表集合包括:判断至少两个事实数据表中是否存在包含于表集合的事实数据表;如果判断出至少两个事实数据表中不存在包含于表集合的事实数据表,则获取至少两个事实数据表中数据量最小的事实数据表,并将该数据量最小的事实数据表添加至表集合。为了提高后续多维度数据的查询效率,可选地,如果判断出至少两个事实数据表中存在包含于表集合的事实数据表,该方法还包括:不对表集合执行事实数据表的添加处理。可选地,在判断第一查询维度是否仅包含于一个事实数据表之前,该方法还包括:将指标表添加至表集合,其中,指标表包括查询指标。步骤s106,将待分配字段分配给表集合中的相应的事实数据表,得到目标表集合,其中,待分配字段为从查询条件中获取的所需列字段。为了提高多维度数据查询的执行效率,可选地,将待分配字段分配给表集合中的相应的事实数据表,得到目标表集合包括:对于多个事实数据表中包含同一维度的多张事实数据表,按照事实数据表的数据量由小到大的次序,依次判断每张事实数据表是否包含于表集合,直到判断出一张事实数据表包含于表集合;判断该包含于表集合的事实数据表是否包含待分配字段;如果判断出该包含于表集合的事实数据表包含待分配字段,则将待分配字段分配给该包含于表集合的事实数据表;以及将该包含于表集合的事实数据表添加至目标表集合。其中,待分配字段为从查询条件中获取的所需列字段。其中,某些待分配字段可能仅存在于一张表中,也可能存在于多张表中。例如,待分配字段为select、groupby、where、orderby、having等。通常情况下,在进行多维度剖析时,一个维度有可能存在于多张表。例如,在进行多维度数据查询之前,浏览器browser维度存在于多张表上:{"name":"browser","column":"browser","tables":["session","pageview","ecommerce","sitesearch","mouseclick","event"]}其中,浏览器维度存在于会话表、pv表等多张表。同时,根据事实数据表存储的数据量的大小不同,可以对不同的事实数据表建立大表和小表的配置。例如:/*allthesmalltableswillbejointogether,thetablesizeintheleftissmallerthantherightones*/;所有的小表将被连接在一起,小表在左,大表在右;"smalltables":["sitesearchclick","sitesearch","ecommerce","product","mouseclick","event"];/*allthelargetableswon'tbejointogher,,thetablesizeintheleftissmallerthantherightones;不将所有的大表连接在一起,小表在左,大表在右;willjointhesmalltablesfirst,andthenjointhelargetablesonebyoneacorrdingtothetablesize,先连接小表,再按照表的大小顺序逐一连接大表;leftone(smallerone)willbejoinearliar小表首先被连接*/"largetables":["session","pageview"]需要说明的是,本申请不对配置大表和小表的方法进行具体的限制。例如,也可以采用数组的方式,在数组中事实数据表按照数据量由小到大的次序排列。具体地,对于包含同一维度的多张事实数据表,首先确定各个事实数据表的数据量,按照数据量由小到大的次序对各个事实数据表进行排列。从小表开始,判断该表是否存在于表集合中,如果判断出该表存在于表集合中,则不再对该维度对应的其他事实数据表进行判断。如果判断出该表不存在于表集合中,则按照数据量由小到大的次序依次判断其他表是否存在于表集合中,直到判断出有一个表存在于表集合为止。另外,将待分配字段分配给判断出的存在于表集合中的表,并对此进行记录,以及将该包含于表集合的表添加至目标表集合。这样,对于每一维度,都将得到其对应的数据量最小的表,进行在后续的多维度数据查询中将极大地提升性能。可选地,判断该包含于表集合的事实数据表是否包含待分配字段包括:依次判断该包含于表集合的事实数据表是否包含待分配字段集合中的待分配字段,其中,待分配字段集合中包含至少一个待分配字段,在将待分配字段分配给该包含于表集合的事实数据表之后,该方法还包括:将分配给该包含于表集合的事实数据表的待分配字段从待分配字段集合中删除。在该实施例中,待分配字段集合中包括至少一个待分配字段,在对每个事实数据表执行判断时,需要依次遍历各个待分配字段,以判断各个待分配字段是否包含于待判断的事实数据表中。将判断结果为包含的待分配字段分配给该事实数据表,其中, 该待分配字段可以是多个。在针对一个事实数据表判断结束后,将分配给该事实数据表的待分配字段从待分配字段集合中删除,也即在对下一个维度对应的事实数据表执行判断时,不需要再对该待分配字段进行判断。通过该方法,可以有效地将每个待分配字段分配至表集合中数据量最小的事实数据表,从而能够极大地提升多维度数据查询的性能。可选地,根据目标表集合中的事实数据表之间的连接关系生成用于反映数据流过程的数据结构包括:根据目标表集合中的事实数据表和该事实数据表对应的待分配字段确定连接关系;以及根据连接关系生成用于反映数据流过程的数据结构。其中,待分配字段为从查询条件中获取的所需列字段。例如,待分配字段为select、groupby、where、orderby、having等。步骤s108,根据目标表集合中的事实数据表之间的连接关系生成用于反映数据流过程的数据结构。在该步骤中,用于反映数据流过程的数据结构可以理解为一种解析树的数据结构。该解析树是由查询条件和连接关系生成并用于反应数据流的过程的数据结构。该结构记录了生成结构化查询语言所需要的所有条件和样式,根据查询需求的维度链,剖析维度和指标(即上述的查询条件),计算出所需要的表结点以及过滤信息,并将所有表结点通过相关的关联关系连接起来。其中,解析树中的每一个节点,相当于定义了一个临时表数据结构。整个解析树反映了如何从原始的数据表中通过相应的过滤、选取、变化,逐步得到最终结果的过程,解析树中记录了所有的数据表结点。可选地,根据目标表集合中的事实数据表之间的连接关系生成用于反映数据流过程的数据结构包括:确定目标表集合中各个事实数据表之间连接的顺序关系;按照预设条件调整各个事实数据表之间连接的顺序关系;以及根据调整后的各个事实数据表之间连接的顺序关系生成用于反映数据流过程的数据结构。具体地,针对查询维度链计算出的所有表节点(目标表集合中的各个事实数据表),需要进行表连接,而表连接顺序的设定对整个查询系统的性能的影响较大。在本申请中,不对各个事实数据表之间连接的顺序关系进行具体的限定。由于各引擎的查询的实现方式不同,因此可以采用不同的表连接顺序。例如,可以采用大表连小表的策略(数据量大的表连接数据量小的表),该方法的性能通常优于小表连大表的性能。可选地,在从多个事实数据表中获取满足查询条件的表集合之后,在根据目标表集合中的事实数据表之间的连接关系生成用于反映数据流过程的数据结构之前,该方法还包括:获取目标表集合中各事实数据表对应的连接键值;以及根据连接键值将目 标表集合中的各个事实数据表进行连接。具体地,事实数据表之间通常采用关联键进行关联。采用关联键将目标表集合中的各个事实数据表进行关联。例如,关联键为会话标识(sessionid)。目标表集合中的各事实数据表对应的连接键值为相应的id等共有维度字段,基于id等共有维度字段将目标表集合中的各个事实数据表进行连接。对于数据仓库,各事实数据表都可能有相应的关系,并且通过相应的id等共有维度字段会进行关联。优选地,可以将上述的多个事实数据表处理为展平的事实数据表。例如,会话等字段会派生到其子实体,如页面浏览,电商订单等事实数据表上,这样在仅剖析会话类的维度时,如浏览器等,就不需要进行会话表的关联,从而达到性能提升的目的。步骤s110,根据数据结构生成相应的数据查询语言并通过数据查询语言执行多维度数据查询。上述的数据查询语言可以为结构化查询语言(structuredquerylanguage,简称sql)。例如,查询维度链为:isbounce=0andpageduration>10andsessionpageviews>10;剖析维度为:osbrief;查询指标为:visits,avgsessionduration,sessionpageviews。获取到与查询维度链、剖析维度和查询指标相关联的表集合,对表集合中的事实数据表进行相应字段的分配,得到目标表集合,根据目标表集合中各个事实数据表的连接关系生成用于反映数据流过程的数据结构(解析树),根据该数据结构可生成相应的数据查询语言,如下所示:withsas(selectserversessionid,osbrief,pvcount,sessiondurationfromsessionwhereisbounce=0andpvcount>10)pvas(selectserversessionidfrompageviewgroupbyserversessionidhavingmax(pageduration)>10)selectosbrief,sum(pvcount)assessionpageviews,count(*)asvisits,avg(sessionduration)asavgsessiondurationfromsinnerjoinpvons.serversessionid=pv.serversessionidgroupbyosbrieforderbycount(*)desclimit10通过上述生成的数据查询语言执行可实现相应的多维度数据查询。又例如,查询维度链为:isbounce=0andpageduration>10andsessionpageview>10;剖析维度:osbrief;查询指标为:visits,avgsessionduratuon,sessionpageviews。获取到与查询维度链、剖析维度和查询指标相关联的表集合,对表集合中的事实数据表进行相应字段的分配,得到目标表集合,根据目标表集合中各个事实数据表的连接关系生成用于反映数据流过程的数据结构(解析树),根据该数据结构可生成相应的数据查询语言,如下所示:pv_jion_session(selectcolumns:osbrief,measuresgroupby:osbrieforderby:visitsdescpaging:1,10)通过上述生成的数据查询语言可实现相应的多维度数据查询。本申请通过查询条件获取参与多维度数据查询的数据量最小的表集合(目标表集合),避免了大数据量的事实数据表参与计算造成的查询开销大、查询效率低下的问题,进而通过对目标表集合中的事实数据表进行连接,很大程度上减小了查询的开销,可以实现对多维度数据的快速查询。在该实施例中,获取查询条件,其中,查询条件为用于执行多维度数据查询的条件;从多个事实数据表中获取满足查询条件的表集合;将待分配字段分配给表集合中的相应的事实数据表,得到目标表集合,其中,待分配字段为从查询条件中获取的所需列字段;根据目标表集合中的事实数据表之间的连接关系生成用于反映数据流过程的数据结构;以及根据数据结构生成相应的数据查询语言并通过数据查询语言执行多维度数据查询,解决了相关技术中多维度数据查询的执行效率较低的技术问题,达到了快速执行多维度数据查询的技术效果。下面,根据本申请实施例提供了一种多维度数据的查询装置。需要说明的是,根据本申请实施例的多维度数据的查询装置可以用于执行根据本申请实施例的多维度数据的查询方法,根据本申请实施例的多维度数据的查询方法也可以通过根据本申请实施例的多维度数据的查询装置来执行。图2是根据本申请实施例的多维度数据的查询装置的示意图,如图2所示,该装置包括:第一获取单元20、第二获取单元22、分配单元24、生成单元26和执行单元28。第一获取单元20,用于获取查询条件,其中,查询条件为用于执行多维度数据查询的条件。第二获取单元22,用于从多个事实数据表中获取满足查询条件的表集合。分配单元24,用于将待分配字段分配给表集合中的相应的事实数据表,得到目标表集合,其中,待分配字段为从查询条件中获取的所需列字段。生成单元26,用于根据目标表集合中的事实数据表之间的连接关系生成用于反映数据流过程的数据结构。执行单元28,用于根据数据结构生成相应的数据查询语言并通过数据查询语言执行多维度数据查询。可选地,分配单元24包括:第一判断模块,用于对于多个事实数据表中包含同一维度的多张事实数据表,按照事实数据表的数据量由小到大的次序,依次判断每张事实数据表是否包含于表集合,直到判断出一张事实数据表包含于表集合;第二判断模块,用于判断该包含于表集合的事实数据表是否包含待分配字段;分配模块,用于在判断出该包含于表集合的事实数据表包含待分配字段时,将待分配字段分配给该包含于表集合的事实数据表;以及添加模块,用于将该包含于表集合的事实数据表添加至目标表集合。可选地,第二判断模块包括:判断子模块,用于依次判断该包含于表集合的事实数据表是否包含待分配字段集合中的待分配字段,其中,待分配字段集合中包含至少一个待分配字段,该装置还包括:删除单元,用于将分配给该包含于表集合的事实数据表的待分配字段从待分配字段集合中删除。在该实施例中,通过第一获取单元20获取查询条件,其中,查询条件为用于执行多维度数据查询的条件;第二获取单元22从多个事实数据表中获取满足查询条件的表集合;分配单元24将待分配字段分配给表集合中的相应的事实数据表,得到目标表集合,其中,待分配字段为从查询条件中获取的所需列字段;生成单元26根据目标表集合中的事实数据表之间的连接关系生成用于反映数据流过程的数据结构;以及执行单元28根据数据结构生成相应的数据查询语言并通过数据查询语言执行多维度数据查询,解决了相关技术中多维度数据查询的执行效率较低的技术问题,达到了快速执行多维度数据查询的技术效果。所述多维度数据的查询装置包括处理器和存储器,上述第一获取单元20、第二获取单元22、分配单元24、生成单元26和执行单元28等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元。处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数查询多维度数据。存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram),存储器包括至少一个存储芯片。本申请还提供了一种计算机程序产品的实施例,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:获取查询条件,其中,查询条件为用于执行多维度数据查询的条件;从多个事实数据表中获取满足查询条件的表集合;将待分配字段分配给表集合中的相应的事实数据表,得到目标表集合,其中,待分配字段为从查询条件中获取的所需列字段;根据目标表集合中的事实数据表之间的连接关系生成用于反映数据流过程的数据结构;以及根据数据结构生成相应的数据查询语言并通过数据查询语言执行多维度数据查询。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所 述方法的全部或部分步骤。以上所述仅是本申请的优选实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1