CN106933909A - 多维度数据的查询方法及装置 - Google Patents
多维度数据的查询方法及装置 Download PDFInfo
- Publication number
- CN106933909A CN106933909A CN201511032377.6A CN201511032377A CN106933909A CN 106933909 A CN106933909 A CN 106933909A CN 201511032377 A CN201511032377 A CN 201511032377A CN 106933909 A CN106933909 A CN 106933909A
- Authority
- CN
- China
- Prior art keywords
- data
- fact
- table set
- tables
- condition
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/283—Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Abstract
本申请公开了一种多维度数据的查询方法及装置。其中,该方法包括:从多个事实数据表中获取满足查询条件的表集合,其中,查询条件包括查询维度链,查询维度链包括至少一个查询维度;将待分配字段分配给表集合中的相应的事实数据表,得到第一目标表集合,其中,待分配字段为从查询条件中获取的所需列字段;将目标过滤条件下沉至第一目标表集合中的目标数据表,得到第二目标表集合;根据第二目标表集合中的事实数据表之间的连接关系生成用于反映数据流过程的数据结构;以及根据数据结构生成相应的数据查询语言并通过数据查询语言执行数据查询。本申请解决了多维度数据查询的执行效率较低的技术问题。
Description
技术领域
本申请涉及数据库领域,具体而言,涉及一种多维度数据的查询方法及装置。
背景技术
在联机分析处理(On-LineAnalytical Processing,简称OLAP)的环境下,目前常用的查询引擎有Hive、Impala等结构化的带元数据的数据库。在这些数据库中,通常,将各类事件的数据记录在各个事实数据表中。例如,在“教学管理系统”中,教学管理数据库包含以下几个事实数据表:“教师”表、“课程”表、“成绩”表、“学生”表、“班级”表和“授课”表等,通过以上事实数据表可管理教学过程中学生、教师、课程等信息。再例如,在对互联网的会话进行监测时,一般有会话表(Session)、页面浏览表(PageView)、站内搜索表(SiteSearch)、订单表(Ecommerce)和自定义事件表(Event)等多种代表各种业务场景的事实数据表,这些数据表可通过客户的会话标识(SessionID)进行关联,以形成整个会话的所有实体。当用户需要从多个角度、跨越多个事实数据表将数据关联以查看指标数据和维度数据时,在相关技术中,通常根据用户查询需求专门编写相应代码,进而实现在数据库中查询相关的指标数据和维度数据。由于相关技术中缺乏统一将用户查询需求迅速转化为查询语言的技术方案,导致多维度数据查询的执行效率较低。
针对相关技术中多维度数据查询的执行效率较低的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种多维度数据的查询方法及装置,以至少解决相关技术中多维度数据查询的执行效率较低的技术问题。
根据本申请实施例的一个方面,提供了一种多维度数据的查询方法,包括:从多个事实数据表中获取满足查询条件的表集合,其中,查询条件包括查询维度链,查询维度链包括至少一个查询维度;将待分配字段分配给表集合中的相应的事实数据表,得到第一目标表集合,其中,待分配字段为从查询条件中获取的所需列字段;将目标过滤条件下沉至第一目标表集合中的目标数据表,得到第二目标表集合;根据第二目标表集合中的事实数据表之间的连接关系生成用于反映数据流过程的数据结构;以及根据数据结构生成相应的数据查询语言并通过数据查询语言执行数据查询。
进一步地,目标过滤条件为非指标过滤条件。
进一步地,目标过滤条件包括且过滤条件,将目标过滤条件下沉至第一目标表集合中的目标数据表,得到第二目标表集合包括:将且过滤条件下沉至第一目标表集合中的每个事实数据表。
进一步地,且过滤条件包括多个子且过滤条件,将且过滤条件下沉至第一目标表集合中的每个事实数据表包括:获取多个子且过滤条件中的用于单列数据的子且过滤条件;以及将用于单列数据的子且过滤条件下沉至第一目标表集合中的每个事实数据表。
进一步地,目标过滤条件包括或过滤条件,将目标过滤条件下沉至第一目标表集合中的目标数据表,得到第二目标表集合包括:将或过滤条件下沉至第一目标表集合中包含相应维度的事实数据表中的数据量最小的事实数据表,其中,相应维度为或过滤条件对应的维度。
进一步地,在将或过滤条件下沉至第一目标表集合中包含相应维度的事实数据表中的数据量最小的事实数据表之前,该方法还包括:判断或过滤条件是否为用于多列数据协同过滤的条件;以及如果判断结果为否,则执行将或过滤条件下沉至第一目标表集合中包含相应维度的事实数据表中的数据量最小的事实数据表的步骤。
进一步地,在将或过滤条件下沉至第一目标表集合中包含相应维度的事实数据表中的数据量最小的事实数据表之前,该方法还包括:获取第一目标表集合中每个事实数据表的大小。
进一步地,将待分配字段分配给表集合中的相应的事实数据表,得到第一目标表集合包括:对于多个事实数据表中包含同一维度的多张事实数据表,按照事实数据表的数据量由小到大的次序,依次判断每张事实数据表是否包含于表集合,直到判断出一张事实数据表包含于表集合;判断该包含于表集合的事实数据表是否包含待分配字段;如果判断出该包含于表集合的事实数据表包含待分配字段,则将待分配字段分配给该包含于表集合的事实数据表;以及将该包含于表集合的事实数据表添加至第一目标表集合。
进一步地,至少一个查询维度包括第一查询维度,从多个事实数据表中获取满足查询条件的表集合包括:判断第一查询维度是否仅包含于一个事实数据表;如果判断出第一查询维度仅包含于一个事实数据表,则将包含第一查询维度的事实数据表添加至表集合;以及如果判断出第一查询维度包含于至少两个事实数据表,则获取至少两个事实数据表中数据量最小的事实数据表,并将该数据量最小的事实数据表添加至表集合。
根据本申请的另一方面,还提供了一种多维度数据的查询装置,其特征在于,包括:获取单元,用于从多个事实数据表中获取满足查询条件的表集合,其中,查询条件包括查询维度链,查询维度链包括至少一个查询维度;分配单元,用于将待分配字段分配给表集合中的相应的事实数据表,得到第一目标表集合,其中,待分配字段为从查询条件中获取的所需列字段;下沉单元,用于将目标过滤条件下沉至第一目标表集合中的目标数据表,得到第二目标表集合;生成单元,用于根据第二目标表集合中的事实数据表之间的连接关系生成用于反映数据流过程的数据结构;以及执行单元,用于根据数据结构生成相应的数据查询语言并通过数据查询语言执行数据查询。
在本申请实施例中,通过从多个事实数据表中获取满足查询条件的表集合,其中,查询条件包括查询维度链,查询维度链包括至少一个查询维度;将待分配字段分配给表集合中的相应的事实数据表,得到第一目标表集合,其中,待分配字段为从查询条件中获取的所需列字段;将目标过滤条件下沉至第一目标表集合中的目标数据表,得到第二目标表集合;根据第二目标表集合中的事实数据表之间的连接关系生成用于反映数据流过程的数据结构;以及根据数据结构生成相应的数据查询语言并通过数据查询语言执行数据查询,解决了相关技术中多维度数据查询的执行效率较低的技术问题,达到了快速实现多维度数据查询的技术效果。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的多维度数据的查询方法的流程图;以及
图2是根据本申请实施例的多维度数据的查询装置的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
下面,首先对本申请实施例中涉及的相关技术术语进行解释,以方便对本申请的理解。
指标(查询指标):是指可以进行聚合运算的值,例如,综合浏览量是一个指标,使用求和进行聚合;平均停留时间也是一个指标,使用平均进行聚合,其中,聚合运算包括求和、平均、计数等。
维度(查询维度):是指查看指标的角度,例如,浏览器是一个维度,可以从浏览器这个维度查询页面浏览(Page View,简称为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,将待分配字段分配给表集合中的相应的事实数据表,得到第一目标表集合,其中,待分配字段为从查询条件中获取的所需列字段。
为了提高多维度数据查询的执行效率,可选地,将待分配字段分配给表集合中的相应的事实数据表,得到第一目标表集合包括:对于多个事实数据表中包含同一维度的多张事实数据表,按照事实数据表的数据量由小到大的次序,依次判断每张事实数据表是否包含于表集合,直到判断出一张事实数据表包含于表集合;判断该包含于表集合的事实数据表是否包含待分配字段;如果判断出该包含于表集合的事实数据表包含待分配字段,则将待分配字段分配给该包含于表集合的事实数据表;以及将该包含于表集合的事实数据表添加至第一目标表集合。
其中,待分配字段为从查询条件中获取的所需列字段。其中,某些待分配字段可能仅存在于一张表中,也可能存在于多张表中。例如,待分配字段为Select、GroupBy、Where、OrderBy、Having等。
通常情况下,在进行多维度剖析时,一个维度有可能存在于多张表。例如,在进行多维度数据查询之前,浏览器Browser维度存在于多张表上:
{
"name":"browser",
"column":"browser",
"Tables":["session","pageview","ecommerce","sitesearch","mouseclick","event"]
}
其中,浏览器维度存在于会话表、PV表等多张表。
同时,根据事实数据表存储的数据量的大小不同,可以对不同的事实数据表建立大表和小表的配置。例如:
/*all the small tables will be join together,the table size in the left is smaller t
han the right ones*/;所有的小表将被连接在一起,小表在左,大表在右;
"SmallTables":["sitesearchclick","sitesearch","ecommerce","product","mouseclick","event"],
/*all the large tables won't be join togher,,the table size in the left is smaller t
han the right ones;不将所有的大表连接在一起,小表在左,大表在右;
will join the small tables first,and then join the large tables one by one acorrding to the
table size,先连接小表,再按照表的大小顺序逐一连接大表;
left one(smaller one)will be join earliar.小表首先被连接
*/
"LargeTables":["session","pageview"]
需要说明的是,本申请不对配置大表和小表的方法进行具体的限制。例如,也可以采用数组的方式,在数组中事实数据表按照数据量由小到大的次序排列。
具体地,对于包含同一维度的多张事实数据表,首先确定各个事实数据表的数据量,按照数据量由小到大的次序对各个事实数据表进行排列。从小表开始,判断该表是否存在于表集合中,如果判断出该表存在于表集合中,则不再对该维度对应的其他事实数据表进行判断。如果判断出该表不存在于表集合中,则按照数据量由小到大的次序依次判断其他表是否存在于表集合中,直到判断出有一个表存在于表集合为止。另外,将待分配字段分配给判断出的存在于表集合中的表,并对此进行记录,以及将该包含于表集合的表添加至第一目标表集合。这样,对于每一维度,都将得到其对应的数据量最小的表,进行在后续的多维度数据查询中将极大地提升性能。
步骤S106,将目标过滤条件下沉至第一目标表集合中的目标数据表,得到第二目标表集合。
过滤条件下沉也即Filter Push Down。Filter Push Down是指将所有的过滤条件能提前执行的尽可能提前执行,以减小后续数据流的大小(过滤后数据流自然变小),从而极大地加快执行效率。在该步骤中,目标过滤条件包括且过滤条件和或过滤条件。将目标过滤条件下沉至第一目标表集合中的目标数据表,使得第一目标表集合中过滤条件能够提前执行的尽可能提前执行。例如,可以将且过滤条件下沉至第一目标表集合中的每个事实数据表;和/或,可以将或过滤条件下沉至第一目标表集合中包含相应维度的事实数据表中的数据量最小的事实数据表。
可选地,上述目标过滤条件可以为非指标过滤条件。需要说明的是,考虑到在获取数据时,指标还未聚合,因此所有的指标条件可不进行Filter Push Down,以提高执行效率。
步骤S108,根据第二目标表集合中的事实数据表之间的连接关系生成用于反映数据流过程的数据结构。
在该步骤中,用于反映数据流过程的数据结构可以理解为一种解析树的数据结构。该解析树是由查询条件和连接关系生成并用于反应数据流的过程的数据结构。该结构记录了生成结构化查询语言所需要的所有条件和样式,根据查询需求的维度链,剖析维度和指标(即上述的查询条件),计算出所需要的表结点以及过滤信息,并将所有表结点通过相关的关联关系连接起来。其中,解析树中的每一个节点,相当于定义了一个临时表数据结构。整个解析树反映了如何从原始的数据表中通过相应的过滤、选取、变化,逐步得到最终结果的过程,解析树中记录了所有的数据表结点。
可选地,根据第二目标表集合中的事实数据表之间的连接关系生成用于反映数据流过程的数据结构包括:确定第二目标表集合中各个事实数据表之间连接的顺序关系;按照预设条件调整各个事实数据表之间连接的顺序关系;以及根据调整后的各个事实数据表之间连接的顺序关系生成用于反映数据流过程的数据结构。
步骤S110,根据数据结构生成相应的数据查询语言并通过数据查询语言执行数据查询。
上述的数据查询语言可以为结构化查询语言(Structured Query Language,简称SQL)。
例如,查询维度链为:IsBounce=0AND PageDuration>10AND SessionPageViews>10;剖析维度为:OSBrief;查询指标为:Visits,AvgSessionDuration,SessionpageViews。获取到与查询维度链、剖析维度和查询指标相关联的表集合,对表集合中的事实数据表进行相应字段的分配,得到第一目标表集合,对第一目标表集合进行过滤条件的下沉处理,得到第二目标表集合,根据第二目标表集合中各个事实数据表的连接关系生成用于反映数据流过程的数据结构(解析树),根据该数据结构可生成相应的数据查询语言,如下所示:
with s as(select serversessionid,osbrief,pvcount,sessionduration from session whereisbounce=0and PVCount>10)
pv as(select serversessionid from pageview group by serversessionid havingmax(pageduration)>10)
select osbrief,sum(pvcount)as sessionpageviews,count(*)as visits,avg(sessionduration)as avgsessionduration
from s inner join pv on s.serversessionid=pv.serversessionid
group by osbrief
order by count(*)desc
limit 10
通过上述生成的数据查询语言执行可实现相应的多维度数据查询。
又例如,查询维度链为:IsBounce=0AND PageDuration>10AND SessionPageView>10;剖析维度:OSBrief;查询指标为:Visits,AvgSessionDuratuon,SessionpageViews。根据该数据结构可生成相应的数据查询语言,如下所示:
PV_Jion_Session(SelectColumns:osbrief,Measures GroupBy:OSBrief OrderBy:Visits descpaging:1,10)
通过上述生成的数据查询语言可实现相应的多维度数据查询。
在该实施例中,通过从多个事实数据表中获取满足查询条件的表集合,其中,查询条件包括查询维度链,查询维度链包括至少一个查询维度;将待分配字段分配给表集合中的相应的事实数据表,得到第一目标表集合,其中,待分配字段为从查询条件中获取的所需列字段;将目标过滤条件下沉至第一目标表集合中的目标数据表,得到第二目标表集合;根据第二目标表集合中的事实数据表之间的连接关系生成用于反映数据流过程的数据结构;以及根据数据结构生成相应的数据查询语言并通过数据查询语言执行数据查询,解决了相关技术中多维度数据查询的执行效率较低的技术问题,达到了快速实现多维度数据查询的技术效果。
可选地,目标过滤条件包括且过滤条件,将目标过滤条件下沉至第一目标表集合中的目标数据表,得到第二目标表集合包括:将且过滤条件下沉至第一目标表集合中的每个事实数据表。
在该可选实施例中,对所有的且(and)过滤条件直接PushDown(下沉)到第一目标表集合中的各个表,以便在IO时进行数据过滤,以提高处理的性能。
可选地,且过滤条件包括多个子且过滤条件,将且过滤条件下沉至第一目标表集合中的每个事实数据表包括:获取多个子且过滤条件中的用于单列数据的子且过滤条件;以及将用于单列数据的子且过滤条件下沉至第一目标表集合中的每个事实数据表。
对于所有维度链中的且过滤条件中,可以对所有仅涉及到单列数据的且过滤条件进行Filter Push Down。由于在列存储的环境里,Impala等引擎在获取数据时,会先进行预过滤,不符合要求的数据块会直接跳过,以减少io操作,同时符合条件的数据块会扫描一次,仅选取满足预过滤条件(例如,Filter Push Down条件)的数据到内存里,以减少内存的使用率,进而既减少io,也减少内存消耗。
可选地,目标过滤条件还包括或过滤条件,将目标过滤条件下沉至第一目标表集合中的目标数据表,得到第二目标表集合包括:将或过滤条件下沉至第一目标表集合中包含相应维度的事实数据表中的数据量最小的事实数据表,其中,相应维度为或过滤条件对应的维度。
在该可选实施例中,对所有的或(or)关系,仅PushDown到第一目标表集合中包含相应维度的事实数据表中的数据量最小的事实数据表,以便在IO时进行数据过滤,以提高处理的性能。
可选地,在将或过滤条件下沉至第一目标表集合中包含相应维度的事实数据表中的数据量最小的事实数据表之前,该方法还包括:判断或过滤条件是否为用于多列数据协同过滤的条件;以及如果判断结果为否,则执行将或过滤条件下沉至第一目标表集合中包含相应维度的事实数据表中的数据量最小的事实数据表的步骤。
对于维度链中的或关系条件,需要多列进行协同过滤的,可以不进行Filter PushDown操作,也即不应用预过滤机制。
可选地,在将或过滤条件下沉至第一目标表集合中包含相应维度的事实数据表中的数据量最小的事实数据表之前,该方法还包括:获取第一目标表集合中每个事实数据表的大小。也即对第一目标表集合进行表大小的配置。
下面根据本申请的实施例,还提供了一种多维度数据的查询装置。根据本申请实施例的多维度数据的查询装置可以用来执行本申请实施例的多维度数据的查询方法;根据本申请实施例的多维度数据的查询方法也可以通过本申请实施例的多维度数据的查询装置来执行。
图2是根据本申请实施例的多维度数据的查询装置的示意图。如图2所示,该装置包括:获取单元20、分配单元22、下沉单元24、生成单元26和执行单元28。
获取单元20,用于从多个事实数据表中获取满足查询条件的表集合,其中,查询条件包括查询维度链,查询维度链包括至少一个查询维度。
分配单元22,用于将待分配字段分配给表集合中的相应的事实数据表,得到第一目标表集合,其中,待分配字段为从查询条件中获取的所需列字段。
下沉单元24,用于将目标过滤条件下沉至第一目标表集合中的目标数据表,得到第二目标表集合。
生成单元26,用于根据第二目标表集合中的事实数据表之间的连接关系生成用于反映数据流过程的数据结构。
执行单元28,用于根据数据结构生成相应的数据查询语言并通过数据查询语言执行数据查询。
在该实施例中,通过获取单元20从多个事实数据表中获取满足查询条件的表集合,其中,查询条件包括查询维度链,查询维度链包括至少一个查询维度;分配单元22将待分配字段分配给表集合中的相应的事实数据表,得到第一目标表集合,其中,待分配字段为从查询条件中获取的所需列字段;下沉单元24将目标过滤条件下沉至第一目标表集合中的目标数据表,得到第二目标表集合;生成单元26根据第二目标表集合中的事实数据表之间的连接关系生成用于反映数据流过程的数据结构;执行单元28根据数据结构生成相应的数据查询语言并通过数据查询语言执行数据查询,解决了相关技术中多维度数据查询的执行效率较低的技术问题,达到了快速实现多维度数据查询的技术效果。
所述多维度数据的查询装置包括处理器和存储器,上述获取单元20、分配单元22、下沉单元24、生成单元26和执行单元28等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数查询多维度数据。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM),存储器包括至少一个存储芯片。
本申请还提供了一种计算机程序产品的实施例,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:通过从多个事实数据表中获取满足查询条件的表集合,其中,查询条件包括查询维度链,查询维度链包括至少一个查询维度;将待分配字段分配给表集合中的相应的事实数据表,得到第一目标表集合,其中,待分配字段为从查询条件中获取的所需列字段;将目标过滤条件下沉至第一目标表集合中的目标数据表,得到第二目标表集合;根据第二目标表集合中的事实数据表之间的连接关系生成用于反映数据流过程的数据结构;以及根据数据结构生成相应的数据查询语言并通过数据查询语言执行数据查询。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。
以上所述仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。
Claims (10)
1.一种多维度数据的查询方法,其特征在于,包括:
从多个事实数据表中获取满足查询条件的表集合,其中,所述查询条件包括查询维度链,所述查询维度链包括至少一个查询维度;
将待分配字段分配给所述表集合中的相应的事实数据表,得到第一目标表集合,其中,所述待分配字段为从所述查询条件中获取的所需列字段;
将目标过滤条件下沉至所述第一目标表集合中的目标数据表,得到第二目标表集合;
根据所述第二目标表集合中的事实数据表之间的连接关系生成用于反映数据流过程的数据结构;以及
根据所述数据结构生成相应的数据查询语言并通过所述数据查询语言执行数据查询。
2.根据权利要求1所述的方法,其特征在于,所述目标过滤条件为非指标过滤条件。
3.根据权利要求1或者2所述的方法,其特征在于,所述目标过滤条件包括且过滤条件,将目标过滤条件下沉至所述第一目标表集合中的目标数据表,得到第二目标表集合包括:
将所述且过滤条件下沉至所述第一目标表集合中的每个事实数据表。
4.根据权利要求3所述的方法,其特征在于,所述且过滤条件包括多个子且过滤条件,将所述且过滤条件下沉至所述第一目标表集合中的每个事实数据表包括:
获取所述多个子且过滤条件中的用于单列数据的子且过滤条件;以及
将所述用于单列数据的子且过滤条件下沉至所述第一目标表集合中的每个事实数据表。
5.根据权利要求1或者2所述的方法,其特征在于,所述目标过滤条件包括或过滤条件,将目标过滤条件下沉至所述第一目标表集合中的目标数据表,得到第二目标表集合包括:
将所述或过滤条件下沉至所述第一目标表集合中包含相应维度的事实数据表中的数据量最小的事实数据表,其中,所述相应维度为所述或过滤条件对应的维度。
6.根据权利要求5所述的方法,其特征在于,在将所述或过滤条件下沉至所述第一目标表集合中包含相应维度的事实数据表中的数据量最小的事实数据表之前,所述方法还包括:
判断所述或过滤条件是否为用于多列数据协同过滤的条件;以及
如果判断结果为否,则执行将所述或过滤条件下沉至所述第一目标表集合中包含相应维度的事实数据表中的数据量最小的事实数据表的步骤。
7.根据权利要求5所述的方法,其特征在于,在将所述或过滤条件下沉至所述第一目标表集合中包含相应维度的事实数据表中的数据量最小的事实数据表之前,所述方法还包括:
获取所述第一目标表集合中每个事实数据表的大小。
8.根据权利要求1所述的方法,其特征在于,将待分配字段分配给所述表集合中的相应的事实数据表,得到第一目标表集合包括:
对于所述多个事实数据表中包含同一维度的多张事实数据表,按照事实数据表的数据量由小到大的次序,依次判断每张事实数据表是否包含于所述表集合,直到判断出一张事实数据表包含于所述表集合;
判断该包含于所述表集合的事实数据表是否包含待分配字段;
如果判断出该包含于所述表集合的事实数据表包含所述待分配字段,则将所述待分配字段分配给该包含于所述表集合的事实数据表;以及
将该包含于所述表集合的事实数据表添加至所述第一目标表集合。
9.根据权利要求1所述的方法,其特征在于,所述至少一个查询维度包括第一查询维度,从多个事实数据表中获取满足查询条件的表集合包括:
判断所述第一查询维度是否仅包含于一个所述事实数据表;
如果判断出所述第一查询维度仅包含于一个所述事实数据表,则将包含所述第一查询维度的事实数据表添加至所述表集合;以及
如果判断出所述第一查询维度包含于至少两个所述事实数据表,则获取所述至少两个所述事实数据表中数据量最小的事实数据表,并将该数据量最小的事实数据表添加至所述表集合。
10.一种多维度数据的查询装置,其特征在于,包括:
获取单元,用于从多个事实数据表中获取满足查询条件的表集合,其中,所述查询条件包括查询维度链,所述查询维度链包括至少一个查询维度;
分配单元,用于将待分配字段分配给所述表集合中的相应的事实数据表,得到第一目标表集合,其中,所述待分配字段为从所述查询条件中获取的所需列字段;
下沉单元,用于将目标过滤条件下沉至所述第一目标表集合中的目标数据表,得到第二目标表集合;
生成单元,用于根据所述第二目标表集合中的事实数据表之间的连接关系生成用于反映数据流过程的数据结构;以及
执行单元,用于根据所述数据结构生成相应的数据查询语言并通过所述数据查询语言执行数据查询。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511032377.6A CN106933909B (zh) | 2015-12-31 | 2015-12-31 | 多维度数据的查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201511032377.6A CN106933909B (zh) | 2015-12-31 | 2015-12-31 | 多维度数据的查询方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106933909A true CN106933909A (zh) | 2017-07-07 |
CN106933909B CN106933909B (zh) | 2020-06-12 |
Family
ID=59443657
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201511032377.6A Active CN106933909B (zh) | 2015-12-31 | 2015-12-31 | 多维度数据的查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106933909B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106933893A (zh) * | 2015-12-31 | 2017-07-07 | 北京国双科技有限公司 | 多维度数据的查询方法及装置 |
CN112199438A (zh) * | 2020-10-20 | 2021-01-08 | 北京每日优鲜电子商务有限公司 | 界面显示方法、装置、电子设备和计算机可读介质 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5991754A (en) * | 1998-12-28 | 1999-11-23 | Oracle Corporation | Rewriting a query in terms of a summary based on aggregate computability and canonical format, and when a dimension table is on the child side of an outer join |
CN101609473A (zh) * | 2009-07-30 | 2009-12-23 | 金蝶软件(中国)有限公司 | 一种重构报表查询的结构化查询语言的方法及装置 |
CN102521416A (zh) * | 2011-12-28 | 2012-06-27 | 用友软件股份有限公司 | 数据关联查询方法和数据关联查询装置 |
CN103116649A (zh) * | 2013-02-28 | 2013-05-22 | 用友软件股份有限公司 | 数据分析系统和数据分析方法 |
CN103577590A (zh) * | 2013-11-12 | 2014-02-12 | 北京润乾信息系统技术有限公司 | 一种数据查询方法和系统 |
CN103853820A (zh) * | 2014-02-20 | 2014-06-11 | 北京用友政务软件有限公司 | 一种数据处理方法及系统 |
CN104392001A (zh) * | 2014-12-15 | 2015-03-04 | 北京国双科技有限公司 | 数据库查询方法和装置 |
CN104408169A (zh) * | 2014-12-09 | 2015-03-11 | 北京国双科技有限公司 | 基于多维表达式语言的维度查询方法及装置 |
CN104462434A (zh) * | 2014-12-15 | 2015-03-25 | 北京国双科技有限公司 | 数据查询方法及装置 |
US20150142773A1 (en) * | 2013-11-18 | 2015-05-21 | Tobias Mindnich | Optimizing Database Queries Having Hierarchy Filters |
-
2015
- 2015-12-31 CN CN201511032377.6A patent/CN106933909B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5991754A (en) * | 1998-12-28 | 1999-11-23 | Oracle Corporation | Rewriting a query in terms of a summary based on aggregate computability and canonical format, and when a dimension table is on the child side of an outer join |
CN101609473A (zh) * | 2009-07-30 | 2009-12-23 | 金蝶软件(中国)有限公司 | 一种重构报表查询的结构化查询语言的方法及装置 |
CN102521416A (zh) * | 2011-12-28 | 2012-06-27 | 用友软件股份有限公司 | 数据关联查询方法和数据关联查询装置 |
CN103116649A (zh) * | 2013-02-28 | 2013-05-22 | 用友软件股份有限公司 | 数据分析系统和数据分析方法 |
CN103577590A (zh) * | 2013-11-12 | 2014-02-12 | 北京润乾信息系统技术有限公司 | 一种数据查询方法和系统 |
US20150142773A1 (en) * | 2013-11-18 | 2015-05-21 | Tobias Mindnich | Optimizing Database Queries Having Hierarchy Filters |
CN103853820A (zh) * | 2014-02-20 | 2014-06-11 | 北京用友政务软件有限公司 | 一种数据处理方法及系统 |
CN104408169A (zh) * | 2014-12-09 | 2015-03-11 | 北京国双科技有限公司 | 基于多维表达式语言的维度查询方法及装置 |
CN104392001A (zh) * | 2014-12-15 | 2015-03-04 | 北京国双科技有限公司 | 数据库查询方法和装置 |
CN104462434A (zh) * | 2014-12-15 | 2015-03-25 | 北京国双科技有限公司 | 数据查询方法及装置 |
Non-Patent Citations (1)
Title |
---|
张新华 等: ""基于数据字典的通用动态查询系统设计与实现"", 《计算机与现代化》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106933893A (zh) * | 2015-12-31 | 2017-07-07 | 北京国双科技有限公司 | 多维度数据的查询方法及装置 |
CN106933893B (zh) * | 2015-12-31 | 2019-12-10 | 北京国双科技有限公司 | 多维度数据的查询方法及装置 |
CN112199438A (zh) * | 2020-10-20 | 2021-01-08 | 北京每日优鲜电子商务有限公司 | 界面显示方法、装置、电子设备和计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
CN106933909B (zh) | 2020-06-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106933893A (zh) | 多维度数据的查询方法及装置 | |
US11748379B1 (en) | Systems and methods for generating and implementing knowledge graphs for knowledge representation and analysis | |
US9858326B2 (en) | Distributed data warehouse | |
CN103914478B (zh) | 网页训练方法及系统、网页预测方法及系统 | |
US9117006B2 (en) | Recommending keywords | |
CN102591876A (zh) | 搜索结果排序方法及装置 | |
CN103593350B (zh) | 一种推荐推广关键词价格参数的方法和装置 | |
US10067964B2 (en) | System and method for analyzing popularity of one or more user defined topics among the big data | |
CN107016001A (zh) | 一种数据查询方法及装置 | |
WO2001011497A1 (en) | Method of and system for managing multi-dimensional databases using modular-arithmetic based address data mapping processes | |
CN106933906B (zh) | 数据多维度的查询方法及装置 | |
WO2001044992A9 (en) | Context matching system and method | |
CN102542474A (zh) | 查询结果排序方法及装置 | |
CN106407349A (zh) | 一种产品推荐方法及装置 | |
CN106933894A (zh) | 多维度数据的查询方法及装置 | |
US10191985B1 (en) | System and method for auto-curation of Q and A websites for search engine optimization | |
CN110263233B (zh) | 企业舆情库构建方法、装置、计算机设备及存储介质 | |
CN103970753A (zh) | 关联知识的推送方法和装置 | |
US10719561B2 (en) | System and method for analyzing popularity of one or more user defined topics among the big data | |
CN110717089A (zh) | 一种基于网络日志的用户行为分析系统及方法 | |
CN106933909A (zh) | 多维度数据的查询方法及装置 | |
CN108268519A (zh) | 一种推荐网络对象的方法和装置 | |
CN109325796A (zh) | 潜在用户筛选方法、装置、计算机设备及存储介质 | |
CN106933905A (zh) | 网页访问数据的监测方法和装置 | |
US20230153286A1 (en) | Method and system for hybrid query based on cloud analysis scene, and storage medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: 100083 No. 401, 4th Floor, Haitai Building, 229 North Fourth Ring Road, Haidian District, Beijing Applicant after: Beijing Guoshuang Technology Co.,Ltd. Address before: 100086 Cuigong Hotel, 76 Zhichun Road, Shuangyushu District, Haidian District, Beijing Applicant before: Beijing Guoshuang Technology Co.,Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |