数据查询方法和装置与流程

文档序号:12824878阅读:213来源:国知局
本申请涉及数据分析领域,具体而言,涉及一种数据查询方法和装置。
背景技术
::在分析数据领域,数据模型通常包括星型模型和雪花模型,其中,星形模型的数据组织模式是:一张数据事实表,其它的表都是维度表,如时间维度,地理维度表等,维度表成辐射状分布在事实表的四周;雪花模型的数据组织模式是:一张事实表与维度表关联时需要经过中间事实表或中间维度表,这样构成了多层关联的关系,类似于雪花一样的形状,如通过产品名称去剖析会话相关数据时,得通过中间数据订单表来进行关联。即先需要通过产品查找出其对应的所有订单,再通过订单关联到其所有相关的会话,最终得到想要的结果。由于星型模型的主要数据都集中在事实表中,所以只要扫描事实表就可以进行数据查询,查询效率高,但会造成大量的数据冗余;而雪花模型能够在一定程度上减少存储空间,规范化的数据结构更容易更新和维度,然而,雪花模型由于比较复杂,用户不易理解,浏览内容相对困难,额外的连接将使查询性能下降。发明人发现,基于两种数据模型的优缺点,数据仓库可以采用星型模型和雪花模型结合的方式来组织数据,从而利用不同数据模型的优点,并降低其缺点带来的影响。然而,现有的很多数据查询系统例如impala,还无法实现对星型模型和雪花模型结合的数据组织方式的数据仓库的查询,也就无法对该数据仓库中的数据进行多维度的剖析。针对上述的问题,目前尚未提出有效的解决方案。技术实现要素:本申请实施例提供了一种数据查询方法和装置,以至少解决现有的查询系统无法对星型模型和雪花模型结合的数据组织方式的数据仓库进行数据查询的技术问题。根据本申请实施例的一个方面,提供了一种数据查询方法,包括:接收数据查询请求,其中,所述数据查询请求用于查询数据仓库中待查询数据,所述数据查询请求 中携带有所述待查询数据的维度和指标;利用所述数据仓库中预先配置的元数据确定出目标数据表集合,其中,所述目标数据表集合包括与所述待查询数据的维度和指标关联的数据表,所述元数据中预先配置有所述数据仓库中数据表的关联关系;检测所述目标数据表集合中是否包含雪花模型的数据表;在所述目标数据表集合中包含所述雪花模型的数据表时,连接所述雪花模型的数据表;通过所述雪花模型的数据表连接所述目标数据表集合中其他的星型模型的数据表;以及根据连接的数据表查询所述待查询数据。进一步地,利用所述数据仓库中预先配置的元数据确定出目标数据表集合包括:在所述元数据中查询所述待查询数据的维度和指标;根据所述元数据中记录的维度和指标与数据表的映射关系,确定出所述待查询数据的维度和指标关联的数据表,得到所述目标数据表集合。进一步地,所述数据仓库中的雪花模型的数据表在所述元数据中配置有对应的桥接表,所述桥接表为对应的雪花模型的数据表中的任意一张数据表,其中,通过所述雪花模型的数据表连接所述目标数据表集合中其他的星型模型的数据表包括:通过所述雪花模型的数据表对应的桥接表连接所述目标数据表集合中其他的星型模型的数据表。进一步地,根据连接的数据表查询所述待查询数据包括:根据所述连接的数据表和所述待查询数据的维度和指标生成查询语句;执行所述查询语句,查询得到所述待查询数据。进一步地,在接收数据查询请求之前,所述方法还包括:配置所述数据仓库中所有数据表的所述元数据,其中,所述元数据中通过外键表示数据表之间的关联关系。根据本申请实施例的另一方面,还提供了一种数据查询装置,包括:接收单元,接收数据查询请求,其中,所述数据查询请求用于查询数据仓库中待查询数据,所述数据查询请求中携带有所述待查询数据的维度和指标;确定单元,用于利用所述数据仓库中预先配置的元数据确定出目标数据表集合,其中,所述目标数据表集合包括与所述待查询数据的维度和指标关联的数据表,所述元数据中预先配置有所述数据仓库中数据表的关联关系;检测单元,用于检测所述目标数据表集合中是否包含雪花模型的数据表;第一连接单元,用于在所述目标数据表集合中包含所述雪花模型的数据表时,连接所述雪花模型的数据表;第二连接单元,用于通过所述雪花模型的数据表连接所述目标数据表集合中其他的星型模型的数据表;以及查询单元,用于根据连接的数据表查询所述待查询数据。进一步地,所述确定单元包括:查询模块,用于在所述元数据中查询所述待查询数据的维度和指标;确定模块,用于根据所述元数据中记录的维度和指标与数据表的映射关系,确定出所述待查询数据的维度和指标关联的数据表,得到所述目标数据表集合。进一步地,所述数据仓库中的雪花模型的数据表在所述元数据中配置有对应的桥接表,所述桥接表为对应的雪花模型的数据表中的任意一张数据表,其中,所述第二连接单元包括:连接模块,用于通过所述雪花模型的数据表对应的桥接表连接所述目标数据表集合中其他的星型模型的数据表。进一步地,所述查询单元包括:生成模块,用于根据所述连接的数据表和所述待查询数据的维度和指标生成查询语句;执行模块,用于执行所述查询语句,查询得到所述待查询数据。进一步地,所述装置还包括:配置单元,用于在接收数据查询请求之前,配置所述数据仓库中所有数据表的所述元数据,其中,所述元数据中通过外键表示数据表之间的关联关系。根据本申请实施例,接收数据查询请求,其中,数据查询请求用于查询数据仓库中待查询数据,数据查询请求中携带有待查询数据的维度和指标;利用数据仓库中预先配置的元数据确定出目标数据表集合,其中,目标数据表集合包括与待查询数据的维度和指标关联的数据表,元数据中预先配置有数据仓库中数据表的关联关系;检测目标数据表集合中是否包含雪花模型的数据表;通过雪花模型的数据表连接目标数据表集合中其他的星型模型的数据表根据连接的数据表查询待查询数据。通过利用元数据配置数据表之间的关联关系,在进行数据查询时,可以利用元数据来连接雪花模型和星型模型的数据表,实现数据查询,解决了现有的查询系统无法对星型模型和雪花模型结合的数据组织方式的数据仓库进行数据查询的技术问题。附图说明此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1是根据本申请实施例的数据查询方法的流程图;图2是根据本申请实施例的数据查询装置的示意图。具体实施方式为了使本
技术领域
:的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。根据本申请实施例,提供了一种数据查询方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。图1是根据本申请实施例的数据查询方法的流程图,如图1所示,该方法包括如下步骤:步骤s102,接收数据查询请求,其中,数据查询请求用于查询数据仓库中待查询数据,数据查询请求中携带有待查询数据的维度和指标。步骤s104,利用数据仓库中预先配置的元数据确定出目标数据表集合,其中,目标数据表集合包括与待查询数据的维度和指标关联的数据表,元数据中预先配置有数据仓库中数据表的关联关系。本申请实施例中,数据仓库中的数据组织方式包括星型模型和雪花模型,该数据仓库中预先通过元数据来配置各数据表之间的关联关系。当需要查询数据时,向查询系统发送数据查询请求,查询系统接收到数据查询请求之后,可以从该数据查询请求中解析出待查询数据的维度和指标等信息,再根据元数据确定出所要用到的数据表,及数据表上的数据列,得到目标数据表集合。步骤s106,检测目标数据表集合中是否包含雪花模型的数据表。步骤s108,在目标数据表集合中包含雪花模型的数据表时,连接雪花模型的数据表。对于上述目标数据表集合,为了提高查询效率,先检测其中是否包含有雪花模型的数据表,如果有则,先连接该雪花模型的数据表。步骤s110,通过雪花模型的数据表连接目标数据表集合中其他的星型模型的数据表。步骤s112,根据连接的数据表查询待查询数据。在连接完雪花模型的数据表之后,再连接其他的星型模型的数据表,然后执行数据查询,得到所要查询的数据即待查询数据。根据本申请实施例,接收数据查询请求,其中,数据查询请求用于查询数据仓库中待查询数据,数据查询请求中携带有待查询数据的维度和指标;利用数据仓库中预先配置的元数据确定出目标数据表集合,其中,目标数据表集合包括与待查询数据的维度和指标关联的数据表,元数据中预先配置有数据仓库中数据表的关联关系;检测目标数据表集合中是否包含雪花模型的数据表;通过雪花模型的数据表连接目标数据表集合中其他的星型模型的数据表根据连接的数据表查询待查询数据。通过利用元数据配置数据表之间的关联关系,在进行数据查询时,可以利用元数据来连接雪花模型和星型模型的数据表,实现数据查询,解决了现有的查询系统无法对星型模型和雪花模型结合的数据组织方式的数据仓库进行数据查询的技术问题。可选地,可以在元数据中配置有每张数据表的相关信息,例如数据表的类型。这样,检测目标数据表集合中是否存在雪花模型的数据表可以查找该集合中所有数据表的元数据,判断是否有标记为雪花模型的数据表,如果有,则确定该集合中存在雪花模型的数据表。需要说明的是,本申请实施例中,由于雪花模型和星型模型均为包括多张数据表(包括维度表和事实表),因此,本申请实施例中所述的雪花模型和星型模型的数据表均表示组成雪花模型和星型模型的数据表组。优选地,在接收数据查询请求之前,方法还包括:配置数据仓库中所有数据表的元数据,其中,元数据中通过外键表示数据表之间的关联关系。本实施例中,在进行数据查询之前,配置数据仓库中数据表的元数据,并通过数据表的外键表示各数据表之间的关联关系。本申请实施例中,元数据可以采用任意格式进行配置,只要能表达整个数据仓库 所有表的数据对应关系即可。本实施例中,以json格式配置的元数据示例如下:上面示例中,tables表示数据表,雪花模型的数据表由于是多个数据表,因此,其对应的字段中包含有多个表名,如上述示例中所示。tablejoincolumns字段表示外键,通过该字段表示不同表之间的关联关系。issnowtable字段表示是否是雪花型关系(true表示雪花模型,false表示非雪花模型)。本实施例中,所有底层的星型模型的数据表在最后的issnowtable为false的节点进行配置,雪花模型的数据表按照上面示例进行配置,并提供各数据表关联的数据列字段。优选地,利用数据仓库中预先配置的元数据确定出目标数据表集合包括:在元数据中查询待查询数据的维度和指标;根据元数据中记录的维度和指标与数据表的映射关系,确定出待查询数据的维度和指标关联的数据表,得到目标数据表集合。本申请实施例中,元数据中还记录有每张数据表对应的维度和/或指标的信息。在在确定出待查询数据的维度和指标等信息之后,可以在元数据中匹配出包含有这些维度和指标的数据表,得到目标数据表集合。根据本申请实施例,通过在元数据中配置数据表所包含的数据维度和/或指标信息,便于在数据查询时,通过这些信息确定出所要用到的数据表,提高数据查询效率。优选地,数据仓库中的雪花模型的数据表在元数据中配置有对应的桥接表,桥接表为对应的雪花模型的数据表中的任意一张数据表,其中,通过雪花模型的数据表连接目标数据表集合中其他的数据表包括:通过雪花模型的数据表对应的桥接表连接目标数据表集合中其他的数据表。由于雪花模型为多张数据表的数据组织形式,因此,本申请实施例中,可以在元 数据中将雪花模型的数据表中的任意一张数据表配置为桥接表。在进行表连接时,通过该桥接表与其他的数据表连接。如上面的元数据配置示例中,mediumtable字段表示桥接表。本实施例中,通过雪花模型的数据表中预先定义的桥接表与其他数据表连接,避免雪花模型的数据表与其他数据表之间连接出现问题,实现数据表之间的准确连接。优选地,根据连接的数据表查询待查询数据包括:根据连接的数据表和待查询数据的维度和指标生成查询语句;执行查询语句,查询得到待查询数据。本实施例中,在连接完所有需要用到的数据表之后,生成相应的查询语句,如sql语句,然后系统执行该生成的查询语句,得到查询结果。本申请实施例还提供了一种数据查询装置,该装置可以用于执行本申请实施例的数据查询方法,如图2所示,该装置包括:接收单元10、确定单元20、检测单元30、第一连接单元40、第二连接单元50和查询单元60。接收单元10接收数据查询请求,其中,数据查询请求用于查询数据仓库中待查询数据,数据查询请求中携带有待查询数据的维度和指标。确定单元20用于利用数据仓库中预先配置的元数据确定出目标数据表集合,其中,目标数据表集合包括与待查询数据的维度和指标关联的数据表,元数据中预先配置有数据仓库中数据表的关联关系。本申请实施例中,数据仓库中的数据组织方式包括星型模型和雪花模型,该数据仓库中预先通过元数据来配置各数据表之间的关联关系。当需要查询数据时,向查询系统发送数据查询请求,查询系统接收到数据查询请求之后,可以从该数据查询请求中解析出待查询数据的维度和指标等信息,再根据元数据确定出所要用到的数据表,及数据表上的数据列,得到目标数据表集合。检测单元30用于检测目标数据表集合中是否包含雪花模型的数据表。第一连接单元40用于在目标数据表集合中包含雪花模型的数据表时,连接雪花模型的数据表。对于上述目标数据表集合,为了提高查询效率,先检测其中是否包含有雪花模型的数据表,如果有则,先连接该雪花模型的数据表。第二连接单元50用于通过雪花模型的数据表连接目标数据表集合中其他的星型模型的数据表。查询单元60用于根据连接的数据表查询待查询数据。在连接完雪花模型的数据表之后,再连接其他的星型模型的数据表,然后执行数据查询,得到所要查询的数据即待查询数据。根据本申请实施例,接收数据查询请求,其中,数据查询请求用于查询数据仓库中待查询数据,数据查询请求中携带有待查询数据的维度和指标;利用数据仓库中预先配置的元数据确定出目标数据表集合,其中,目标数据表集合包括与待查询数据的维度和指标关联的数据表,元数据中预先配置有数据仓库中数据表的关联关系;检测目标数据表集合中是否包含雪花模型的数据表;通过雪花模型的数据表连接目标数据表集合中其他的星型模型的数据表根据连接的数据表查询待查询数据。通过利用元数据配置数据表之间的关联关系,在进行数据查询时,可以利用元数据来连接雪花模型和星型模型的数据表,实现数据查询,解决了现有的查询系统无法对星型模型和雪花模型结合的数据组织方式的数据仓库进行数据查询的技术问题。可选地,可以在元数据中配置有每张数据表的相关信息,例如数据表的类型。这样,检测目标数据表集合中是否存在雪花模型的数据表可以查找该集合中所有数据表的元数据,判断是否有标记为雪花模型的数据表,如果有,则确定该集合中存在雪花模型的数据表。需要说明的是,本申请实施例中,由于雪花模型和星型模型均为包括多张数据表(包括维度表和事实表),因此,本申请实施例中所述的雪花模型和星型模型的数据表均表示组成雪花模型和星型模型的数据表组。优选地,装置还包括:配置单元,用于在接收数据查询请求之前,配置数据仓库中所有数据表的元数据,其中,元数据中通过外键表示数据表之间的关联关系。本实施例中,在进行数据查询之前,配置数据仓库中数据表的元数据,并通过数据表的外键表示各数据表之间的关联关系。本申请实施例中,元数据可以采用任意格式进行配置,只要能表达整个数据仓库所有表的数据对应关系即可。优选地,确定单元包括:查询模块,用于在元数据中查询待查询数据的维度和指标;确定模块,用于根据元数据中记录的维度和指标与数据表的映射关系,确定出待查询数据的维度和指标关联的数据表,得到目标数据表集合。本申请实施例中,元数据中还记录有每张数据表对应的维度和/或指标的信息。在在确定出待查询数据的维度和指标等信息之后,可以在元数据中匹配出包含有这些维度和指标的数据表,得到目标数据表集合。根据本申请实施例,通过在元数据中配置数据表所包含的数据维度和/或指标信息,便于在数据查询时,通过这些信息确定出所要用到的数据表,提高数据查询效率。优选地,数据仓库中的雪花模型的数据表在元数据中配置有对应的桥接表,桥接表为对应的雪花模型的数据表中的任意一张数据表,其中,第二连接单元包括:连接模块,用于通过雪花模型的数据表对应的桥接表连接目标数据表集合中其他的星型模型的数据表。由于雪花模型为多张数据表的数据组织形式,因此,本申请实施例中,可以在元数据中将雪花模型的数据表中的任意一张数据表配置为桥接表。在进行表连接时,通过该桥接表与其他的数据表连接。如上面的元数据配置示例中,mediumtable字段表示桥接表。本实施例中,通过雪花模型的数据表中预先定义的桥接表与其他数据表连接,避免雪花模型的数据表与其他数据表之间连接出现问题,实现数据表之间的准确连接。优选地,查询单元包括:生成模块,用于根据连接的数据表和待查询数据的维度和指标生成查询语句;执行模块,用于执行查询语句,查询得到待查询数据。本实施例中,在连接完所有需要用到的数据表之后,生成相应的查询语句,如sql语句,然后系统执行该生成的查询语句,得到查询结果。根据本申请上述实施例,通过构建元数据,对待查询数据的维度和指标进行元数据映射,找到需要的数据表和相关的数据列,在做数据表连接时,根据元数据中配置的数据表的关联关系,优先将雪花模型的数据表进行连接,再将剩下的所有星形表进行连接,最后生成相应的查询语句,执行并得到所需要的结果。所述数据查询装置包括处理器和存储器,上述接收单元10、确定单元20、检测单元30、第一连接单元40、第二连接单元50和查询单元60等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元。处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来从数据仓库中查询数据。存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram),存储器包括至少一个存储芯片。本申请还提供了一种计算机程序产品的实施例,当在数据处理设备上执行时,适 于执行初始化有如下方法步骤的程序代码:接收数据查询请求,其中,数据查询请求用于查询数据仓库中待查询数据,数据查询请求中携带有待查询数据的维度和指标;利用数据仓库中预先配置的元数据确定出目标数据表集合,其中,目标数据表集合包括与待查询数据的维度和指标关联的数据表,元数据中预先配置有数据仓库中数据表的关联关系;检测目标数据表集合中是否包含雪花模型的数据表;在目标数据表集合中包含雪花模型的数据表时,连接雪花模型的数据表;通过雪花模型的数据表连接目标数据表集合中其他的星型模型的数据表;以及根据连接的数据表查询待查询数据。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。以上所述仅是本申请的优选实施方式,应当指出,对于本
技术领域
:的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1