一种数据查询方法、装置、电子设备及存储介质与流程

文档序号:22627469发布日期:2020-10-23 19:36阅读:116来源:国知局
一种数据查询方法、装置、电子设备及存储介质与流程

本发明实施例涉及大数据管理技术,尤其涉及一种数据查询方法、装置、电子设备及存储介质。



背景技术:

随着信息技术的快速发展,大数据平台产品中需要管理的数据越来越多,数据量的不断增大使得对这些数据的管理和使用变得更加困难。

目前,通常使用数据库技术来存储和管理数据。业务端可以对数据库中的数据进行查询。针对不同的业务需求/场景(每种业务需求/场景对应一种业务模型,该业务模型用于表示请求查询的数据),需要分别预先建立不同的数据库表(该数据库表称为与业务模型对应的物理模型,用于表示请求查询的数据所在的数据源表及其关联关系),并建立各数据库表与业务模型之间的绑定关系,以供业务方进行查询。建立的数据库表中所包含的字段与对应业务需求/场景下可查询的字段具有一一对应的关系,上述数据库表可以是多张数据源表中的一张,也可以是基于多张数据源表生成的。比如,可以规定针对某种业务需求/场景下可供业务端查询的字段包括:公司id、消费、展现次数和预算,假设有4张数据源表,分别为数据源表1(账户消费表)包括如下字段:账户id和消费;数据源表2(账户展现次数表)包括如下字段:账户id和展现次数;数据源表3(公司与账户关联表)包括如下字段:公司id和账户id;数据源表4(公司预算表)包括如下字段:公司id和预算;那么,需要通过将这4张数据源表进行聚合,生成包括公司id、消费、展现次数和预算共4个字段的数据库表。在接收到来自业务端的业务分析请求后,提取该业务分析请求中携带的业务模型数据,该业务模型数据包括维度数据和指标数据,其对应需要查询的字段;根据预先建立的数据库表与业务模型之间的绑定关系,确定业务分析请求中携带的业务模型数据所对应的数据库表,然后从该数据库表中查询得到所需数据,并将查询到的数据返回给业务端。

上述业务端对数据库中的数据进行查询的方案缺陷在于:针对每种业务需求/场景均需分别预先建立数据库表,在业务需求/场景扩展时,需要相应的增加建立新的数据库表并增加绑定关系,可扩展性差,且大大增加了数据库的管理和维护成本;当不同种业务需求/场景存在交集时,需要对交集部分的数据重复建立数据库表,导致元数据的灵活性差。



技术实现要素:

本发明提供一种数据查询方法、装置、电子设备及存储介质,以提高数据库中的数据管理效率。

第一方面,本发明实施例提供了一种数据查询方法,所述方法包括:

接收业务端发送的用户分析请求,所述用户分析请求中包含维度数据和至少一项指标数据;各所述指标数据包括待查询字段,所述维度数据包括主键字段;

对于各所述指标数据,分别确定预先设置的至少一个逻辑元数据中是否存在与当前指标数据一致的逻辑元数据,若是,则从与所述逻辑元数据绑定的至少一个物理表中确定与所述维度数据匹配的物理表,并基于当前指标数据和所述维度数据从确定的物理表中查询数据;其中,各所述逻辑元数据是已有的至少一个物理表中所包含的字段;

将查询到的数据进行拼接后返回给所述业务端。

第二方面,本发明实施例还提供了一种数据查询装置,该装置包括:

接收模块,用于接收业务端发送的用户分析请求,所述用户分析请求中包含维度数据和至少一项指标数据;各所述指标数据包括待查询字段,所述维度数据包括主键字段;

确定模块,用于对于各所述指标数据,分别确定预先设置的至少一个逻辑元数据中是否存在与当前指标数据一致的逻辑元数据;

查询模块,用于当确定预先设置的至少一个逻辑元数据中存在与当前指标数据一致的逻辑元数据时,从与所述逻辑元数据绑定的至少一个物理表中确定与所述维度数据匹配的物理表,并基于当前指标数据和所述维度数据从确定的物理表中查询数据;其中,各所述逻辑元数据是已有的至少一个物理表中所包含的字段;

返回模块,用于将查询到的数据进行拼接后返回给所述业务端。

第三方面,本发明实施例还提供了一种电子设备,所述电子设备包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的数据查询方法。

第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如权利要求1-7中任一所述的数据查询方法。

本发明通过接收业务端发送的用户分析请求,所述用户分析请求中包含维度数据和至少一项指标数据;各所述指标数据包括待查询字段,所述维度数据包括主键字段;并对于各所述指标数据,分别确定预先设置的至少一个逻辑元数据中是否存在与当前指标数据一致的逻辑元数据,若是,则从与所述逻辑元数据绑定的至少一个物理表中确定与所述维度数据匹配的物理表,并基于当前指标数据和所述维度数据从确定的物理表中查询数据;其中,各所述逻辑元数据是已有的至少一个物理表中所包含的字段;最后将查询到的数据进行拼接后返回给所述业务端的技术手段,实现了将业务模型(每种业务需求/场景对应一种业务模型,该业务模型用于表示请求查询的数据)与物理模型(根据每种业务模型预先建立的包含目标数据的数据库表)的完全解耦,无需再对数据源表进行聚合以建立所述数据库表,当业务模型发生变化时,不会引起数据库表的变化,提高了数据的灵活性和可维护性,通过以字段为管理单元,避免了每种业务需求/场景均需对应一张数据库表的情况,提高了数据的复用性和可扩展性,提高了数据库中的数据管理效率。

附图说明

图1是本发明实施例一中的一种数据查询方法的流程示意图;

图2是本发明实施例一中的一种用户分析请求的格式示意图;

图3是本发明实施例二中的一种数据查询方法的流程示意图;

图4是本发明实施例二中的一种目标数据查询模型示意图;

图5是本发明实施例二中的一种具体业务场景下目标数据查询模型示意图;

图6是本发明实施例三中的一种数据查询方法的流程示意图;

图7是本发明实施例四中的一种数据查询装置的结构示意图;

图8是本发明实施例五提供的一种电子设备的结构示意图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图1为本发明实施例一提供的一种数据查询方法的流程图,本实施例可适用于在海量的数据库资源中查询业务端请求的目标数据的情况,该方法可以由数据查询装置来执行,所述数据查询装置一般集成于终端中,典型的,所述终端可以为服务器。参见图1所示,所述数据查询方法具体包括如下步骤:

步骤110、接收业务端发送的用户分析请求,所述用户分析请求中包含维度数据和至少一项指标数据;各所述指标数据包括待查询字段,所述维度数据包括主键字段。

具体的,可参见图2所示的一种用户分析请求的格式示意图,图2中以所述维度数据包括两个主键字段为例,所述两个主键字段分别表示为主键字段1和主键字段2。所述用户分析请求根据具体的业务需求/场景制定,针对不同的业务需求/场景,所述用户分析请求不同,例如,业务场景具体为:统计华南地区一级行业的消费情况,则对应的所述用户分析请求可以是:华南地区一级行业的消费数据。所述维度数据指业务端请求查询数据的角度,所述指标数据指业务端请求查询的具体数据,例如在所述用户分析请求“华南地区一级行业的消费数据”中,对应的维度数据为:华南地区(可定义为主键字段1)、一级行业(可定义为主键字段2),对应的指标数据为:消费数据;在用户分析请求“甲公司的预算”中,对应的维度数据为:公司,对应的指标数据为:预算。各所述指标数据包括的待查询字段可以是各指标数据本身,例如,指标数据为:消费数据,则待查询字段可以是:消费;指标数据为:预算,则待查询字段可以为:预算。所述维度数据包括的主键字段可以是维度数据本身,例如当所述维度数据为:公司时,对应的主键字段为:公司。

步骤120、对于各所述指标数据,分别确定预先设置的至少一个逻辑元数据中是否存在与当前指标数据一致的逻辑元数据,若是,则从与所述逻辑元数据绑定的至少一个物理表中确定与所述维度数据匹配的物理表,并基于当前指标数据和所述维度数据从确定的物理表中查询数据;其中,各所述逻辑元数据是已有的至少一个物理表中所包含的字段。

其中,所述物理表实质为数据库中存储各种具体数值的数据源表,所述物理表中包含的字段为表示当前物理表所存储数据的含义,例如,假设当前物理表为存储各公司预算的表,则当前物理表存储的数据含义为:各公司预算,对应的字段可以为“预算”和“公司id”;假设当前物理表为存储各账户展现次数的表,则当前物理表存储的数据含义为:各账户展现次数,对应的字段可以为“展现次数”和“账户id”。与逻辑元数据绑定的物理表可以是包含的字段与逻辑元数据相同的物理表以及表示该物理表中所包含的字段与其他字段之间的关联表,例如,当逻辑元数据为“消费”时,与该逻辑元数据绑定的物理表可以包括:账户消费表以及账户与公司关联表。数据库中存储各种具体数值的数据源表即所述物理表越多,则预先设置的逻辑元数据就越多,该数据库能够提供的查询功能就越丰富。

对于每个指标数据,分别确定预先设置的逻辑元数据中是否存在与当前指标数据一致的逻辑元数据,若是,则从与所述逻辑元数据绑定的物理表中确定与所述维度数据匹配的物理表,并基于当前指标数据和所述维度数据从确定的物理表中查询数据;例如,业务端发送的用户分析请求为:a公司的消费,对应的当前指标数据为“消费”,若预先设置的逻辑元数据中存在“消费”元数据,同时假设与逻辑元数据“消费”绑定的物理表包括“各公司的消费表”和“各地区的消费表”,则进一步根据业务端发送的用户分析请求中的维度数据“a公司”从与元数据“消费”绑定的物理表中(“各公司的消费表”和“各地区的消费表”)确定出与“a公司”匹配的物理表(即为“各公司的消费表”),并基于当前指标数据“消费”和所述维度数据“a公司”从确定的物理表“各公司的消费表”中查询数据。若预先设置的逻辑元数据中不存在与当前指标数据一致的逻辑元数据,则返回当前指标数据,并提示“无法查询”或者“无查询结果”等提示信息;或者,直接跳到对下一个指标数据的处理操作中。

步骤130、将查询到的数据进行拼接后返回给所述业务端。

具体的,若业务端发送的用户分析请求中仅包括一个指标数据,则将查询到的数据直接返回业务端即可;若业务端发送的用户分析请求中包括多个指标数据,则将查询到的数据依据请求顺序进行拼接后返回业务端,例如,业务端发送的用户分析请求中请求的指标数据依次为a公司的消费、展现次数以及预算,则将查询到的关于a公司的展现次数、消费以及预算数据按照“消费-展现次数-预算”的顺序依次拼接后返回业务端,以方便用户查阅,提高数据的可读性。

本实施例的技术方案,通过以物理表所包含的字段为管理单元,预先建立各字段与物理表之间的绑定关系,当接收到业务端发送的包括待查询字段的用户分析请求后,确定是否存在与所述待查询字段相同的预设字段,若存在,则从与所述预设字段绑定的物理表中确定与所述待查询字段对应的维度数据匹配的物理表,并基于所述待查询字段以及对应的维度数据从确定的物理表中查询数据,实现了将业务模型(每种业务需求/场景对应一种业务模型,该业务模型用于表示请求查询的数据)与物理模型(根据每种业务模型预先建立的包含目标数据的数据库表)的完全解耦,无需再对物理表进行聚合以建立所述数据库表,当业务模型发生变化时,不会引起数据库表的变化,提高了数据的灵活性和可维护性,通过以字段为管理单元,避免了每种业务需求/场景均需对应一张数据库表的情况,提高了数据的复用性和可扩展性,进而提高了数据库中的数据管理效率。

实施例二

图3为本发明实施例二提供的一种数据查询方法的流程图,在上述实施例的基础上,本实施例对步骤“从与所述逻辑元数据绑定的至少一个物理表中确定与所述维度数据匹配的物理表”进行了优化,优化的好处是可以实现对目标物理表的准确匹配,从而实现对目标数据的快速查询。参见图3所示,所述数据查询方法具体包括如下步骤:

步骤310、接收业务端发送的用户分析请求,所述用户分析请求中包含维度数据和至少一项指标数据;各所述指标数据包括待查询字段,所述维度数据包括主键字段。

步骤320、对于各所述指标数据,分别确定预先设置的至少一个逻辑元数据中是否存在与当前指标数据一致的逻辑元数据,若存在,则继续执行步骤330,其中,各所述逻辑元数据是已有的至少一个物理表中所包含的字段。

步骤330、若与所述逻辑元数据所绑定的至少一个物理表中存在维度数据与所述用户分析请求中包含的维度数据一致的物理表,则将维度数据与所述用户分析请求中包含的维度数据一致的物理表,确定为与所述用户分析请求中包含的维度数据匹配的物理表;其中,各物理表的维度数据是对应物理表中的主键字段。

具体的,可参见图4所示的一种目标数据查询模型示意图,其中,业务端发送的用户分析请求410包括:维度数据411和至少一项指标数据412,预设的逻辑元数据是已有的至少一个物理表中所包含的字段,物理表还包括维度数据,该维度数据对应物理表中的主键字段。当接收到业务端发送的用户分析请求后,对于各指标数据,分别确定预先设置的逻辑元数据中是否存在与当前指标数据一致的逻辑元数据(假设当前指标数据为412),若存在(假设与当前指标数据412一致的逻辑元数据为421),则进一步判断,与逻辑元数据421所绑定的物理表中是否存在维度数据与所述用户分析请求中包含的维度数据411一致的物理表,若存在(假设物理表430的维度数据431与维度数据411一致),则将物理表430确定为与所述用户分析请求中包含的维度数据411匹配的物理表。进一步的,参见图5所示的一种具体业务场景下目标数据查询模型示意图,假设业务端发送的用户分析请求中包括的维度数据为:公司id,包括的指标数据分别为:消费、展现次数和预算,已有的物理表分别为:各公司消费表、各公司展现次数表和各公司预算表,对应的预先设置的逻辑元数据分别为:消费、展现次数和预算,与逻辑元数据“消费”绑定的物理表包括各公司消费表,与逻辑元数据“展现次数”绑定的物理表包括各公司展现次数表,与逻辑元数据“预算”绑定的物理表包括各公司预算表,按照上述步骤320-330的操作,对于各所述指标数据(消费、展现次数、预算),分别确定预先设置的逻辑元数据中(消费、展现次数、预算)是否存在与当前指标数据一致的逻辑元数据,若存在,则进一步判断与逻辑元数据所绑定的物理表中是否存在维度数据(公司)与用户分析请求中包含的维度数据(公司)一致的物理表,在该举例中,与逻辑元数据所绑定的物理表的维度数据与用户分析请求中包含的维度数据一致,因此,将维度数据与用户分析请求中包含的维度数据一致的物理表,确定为与用户分析请求中包含的维度数据匹配的物理表,即可匹配到各公司消费表、各公司展现次数表和各公司预算表,最后基于用户分析请求中包含的公司id在各物理表中查询对应的目标数据。

步骤340、基于当前指标数据、所述用户分析请求中包含的维度数据和确定的物理表,生成数据库查询语句,通过执行所述数据库查询语句查询数据。

具体的,例如用户分析请求中包含的维度数据为:公司id,以甲公司为例,当前指标数据为:消费,确定的物理表为各公司消费表,则生成的数据库查询语句为:在各公司消费表中查询甲公司的消费数据,通过执行该数据库查询语句得到目标数据。

步骤350、将查询到的数据进行拼接后返回给所述业务端。

假设业务端发送的用户分析请求中包括的指标数据依次为:消费、展现次数和预算,则将查询到的数据按照“消费-展现次数-预算”的顺序进行拼接后返回给所述业务端。

本实施例的技术方案,通过以物理表所包含的字段为管理单元,预先建立各字段与物理表之间的绑定关系,当接收到业务端发送的包括待查询字段的用户分析请求后,确定是否存在与所述待查询字段相同的预设字段,若存在,则判断与所述预设字段所绑定的至少一个物理表中是否存在维度数据与所述用户分析请求中包含的维度数据一致的物理表,若存在,则将维度数据与所述用户分析请求中包含的维度数据一致的物理表,确定为与所述用户分析请求中包含的维度数据匹配的物理表,实现了对目标物理表的准确匹配,从而实现了对目标数据的快速查询,进而提高了数据库中的数据管理效率。

实施例三

图6为本发明实施例三提供的一种数据查询方法的流程图,在上述实施例的基础上,本实施例对步骤“从与所述逻辑元数据绑定的至少一个物理表中确定与所述维度数据匹配的物理表”继续进行了优化,参见图6所示,所述数据查询方法具体包括如下步骤:

步骤610、接收业务端发送的用户分析请求,所述用户分析请求中包含维度数据和至少一项指标数据;各所述指标数据包括待查询字段,所述维度数据包括主键字段。

步骤620、对于各所述指标数据,分别确定预先设置的至少一个逻辑元数据中是否存在与当前指标数据一致的逻辑元数据,若存在,则继续执行步骤630,其中,各所述逻辑元数据是已有的至少一个物理表中所包含的字段。

步骤630、若与所述逻辑元数据所绑定的至少一个物理表中不存在维度数据与所述用户分析请求中包含的维度数据一致的物理表,则获取与所述逻辑元数据绑定的各物理表的维度级别,基于所述维度级别,从与所述逻辑元数据绑定的各物理表中筛选出一个物理表,作为与所述用户分析请求中包含的维度数据匹配的物理表。

其中,所述维度级别具体指维度之间的上、下位关系,例如“公司”的维度级别大于“账户”的维度级别,每个公司可以有多个账户,“公司”是“账户”的上位概念,“账户”是“公司”的下位概念;再例如“一级行业”的维度级别大于“二级行业”的维度级别,一级行业包括多类二级行业。各物理表的维度级别可在导入相应物理表时通过人工进行定义并标记。

示例性的,所述基于所述维度级别,从与所述逻辑元数据绑定的各物理表中筛选出一个物理表,作为与所述用户分析请求中包含的维度数据匹配的物理表,包括:

基于所述维度级别,从与所述逻辑元数据绑定的各物理表中筛选出维度级别低于所述用户分析请求中包含的维度数据对应的维度级别的物理表;

若筛选出一个物理表,则将筛选出的物理表作为与所述用户分析请求中包含的维度数据匹配的物理表;

若筛选出多个物理表,则从筛选出的多个物理表中再次筛选出维度级别与所述用户分析请求中包含的维度数据对应的维度级别之间的差距最小的物理表;

若再次筛选出一个物理表,则将再次筛选出的物理表作为与所述用户分析请求中包含的维度数据匹配的物理表;

若再次筛选出多个物理表,则从再次筛选出的物理表中选择数据量最小的物理表作为与所述用户分析请求中包含的维度数据匹配的物理表。

举例说明上述基于维度级别,从与逻辑元数据绑定的各物理表中筛选出与用户分析请求中包含的维度数据匹配的物理表的过程:

假设用户分析请求中包含的维度数据为:客户,包含的指标数据为:消费;与预先设置的逻辑元数据“消费”绑定的各物理表分别为:表1和表2,其中,表1-表2的维度数据以及字段分别为:

表1账户、消费

表2地域、消费

用户分析请求为:客户、消费

由于表2的维度数据“地域”的维度级别高于用户分析请求中维度数据“客户”的维度级别,故从表2中无法查询到用户请求的目标数据,故将表2过滤掉,且由于表1的维度数据“账户”的维度级别低于用户分析请求中“客户”的维度级别,且维度级别低于用户分析请求中包含的维度数据对应的维度级别的物理表只有表1,因此,将筛选出的物理表1作为与用户分析请求中包含的维度数据“客户”匹配的物理表。

再假设用户分析请求中包含的维度数据为:客户和一级行业,包含的指标数据为:消费;与预先设置的逻辑元数据“消费”绑定的各物理表分别为:表1、表2、表3和表4,其中,表1-表4的维度数据以及字段分别为:

表1账户、一级行业、消费

表2客户、二级行业、消费

表3账户、二级行业、消费

表4地域、一级行业、消费

用户分析请求为:客户、一级行业、消费

由于表4的维度数据“地域”的维度级别高于用户分析请求中维度数据“客户”的维度级别,故从表4中无法查询到用户请求的目标数据,故将表4过滤掉;由于表1的维度数据“账户”的维度级别低于用户分析请求中“客户”的维度级别,表1的维度数据“一级行业”的维度级别与用户分析请求中“一级行业”的维度级别相等,故表1的维度数据的级别整体低于用户分析请求中维度数据的维度级别,因此保留表1;表2中的维度数据“客户”的维度级别与用户分析请求中“客户”的维度级别相等,而表2中的维度数据“二级行业”的维度级别低于用户分析请求中“一级行业”的维度级别,因此,表2的维度数据的维度级别整体低于用户分析请求中维度数据的维度级别,故保留表2;表3的维度数据“账户”的维度级别低于用户分析请求中“客户”的维度级别,表3的维度数据“二级行业”的维度级别低于用户分析请求中“一级行业”的维度级别,故表3的维度数据的维度级别整体低于用户分析请求中维度数据的维度级别,因此保留表3。

经过上述第一轮的筛选,筛选出了多个物理表(表1、表2和表3);则进一步从筛选出的多个物理表中再次筛选出维度级别与用户分析请求中包含的维度数据对应的维度级别之间的差距最小的物理表,经过第一轮的筛选过程,可知表1中只有一个维度数据“账户”的维度级别低于用户分析请求中“客户”的维度级别,表2中也只有一个维度数据“二级行业”的维度级别低于用户分析请求中“一级行业”的维度级别,而表3中则有两个维度数据“账户”和“二级行业”的维度级别均分别低于用户分析请求中“客户”和“一级行业”的维度级别,因此,相比于表1和表2,表3的维度级别与用户分析请求中包含的维度数据对应的维度级别之间的差距最大,故将表3过滤掉。

经过上述第二轮筛选,又筛选出了多个物理表(表1和表2),因此需要从再次筛选出的物理表中(表1和表2)选择数据量最小的物理表作为与用户分析请求中包含的维度数据匹配的物理表,假设,表1中的数据量有100条,表2中的数据量有300条,故将表2过滤掉,保留表1,最终确定表1为与用户分析请求中包含的维度数据(客户、一级行业)匹配的物理表。

步骤640、确定维度表,所述维度表的字段包括所述用户分析请求中包含的维度数据对应的主键字段以及与所述用户分析请求中包含的维度数据匹配的物理表的主键字段。

继续使用上述举例,假设用户分析请求中包含的维度数据为:客户、一级行业,其对应的主键字段为:客户、一级行业;与该用户分析请求中包含的维度数据匹配的物理表为表1,表1的主键字段为:账户、一级行业。则确定的维度表的字段包括:客户、账户、一级行业,其中,客户与账户之间的对应关系可以人工确定并标记,或者通过调用客户与账户之间的关联表进行自动确定。

步骤650、基于所述维度表、与所述用户分析请求中包含的维度数据匹配的物理表、当前指标数据以及所述用户分析请求中包含的维度数据,生成数据库查询语句,通过执行所述数据库查询语句查询数据。

继续使用上述举例,生成的数据库查询语句为:在所述维度表中确定当前客户对应的账户,并在表1中查询当前客户对应的账户一级行业的消费数据。

步骤660、将查询到的数据进行拼接后返回给所述业务端。

本实施例的技术方案,通过基于物理表维度级别,从与逻辑元数据绑定的各物理表中筛选出与用户分析请求中包含的维度数据匹配的物理表,实现了对目标物理表的快速准确查找,从而实现了对目标数据的快速查询。

进一步的,所述用户分析请求中包含的维度数据还可以包括所述待查询字段对应的主键字段的第一查询范围,所述当前指标数据还包括对应的待查询字段的第二查询范围;

对应的,所述基于所述维度表、与所述用户分析请求中包含的维度数据匹配的物理表、当前指标数据以及所述用户分析请求中包含的维度数据,生成数据库查询语句,包括:

生成将第一数据库查询语句和第二数据库查询语句进行连接后得到的第三数据库查询语句,其中,

第一数据库查询语句,用于以所述用户分析请求中包含的维度数据对应的主键字段和第一查询范围为查询条件,在所述维度表中查询所述匹配的物理表的主键字段的字段内容数据;

第二数据库查询语句,用于以第一数据库查询语句查询到的字段内容数据和第二查询范围为查询条件,在所述匹配的物理表中查找当前指标数据对应的待查询字段的字段内容数据。

例如,用户分析请求中包含的维度数据对应的主键字段为:客户,当前指标数据为:消费,当前指标数据包括的待查询字段为:消费,待查询字段“消费”对应的主键字段为:客户;所述待查询字段(消费)对应的主键字段(客户)的第一查询范围为:华北地区的客户;当前指标数据(消费)包括的对应待查询字段(消费)的第二查询范围为:消费金额大于1000的消费数据;针对上述用户分析请求,所述基于所述维度表、与所述用户分析请求中包含的维度数据匹配的物理表、当前指标数据以及所述用户分析请求中包含的维度数据,生成数据库查询语句,包括:生成将第一数据库查询语句和第二数据库查询语句进行连接后得到的第三数据库查询语句,其中,第一数据库查询语句,用于在所述维度表中查找华北地区的各客户分别对应的账户,第二数据库查询语句,用于在匹配的物理表中查询所述华北地区的各客户分别对应的各账户的消费金额大于1000的消费数据;其中,所述用户分析请求中包含的维度数据对应的主键字段(客户)、第一查询范围(华北地区)为所述第一数据库查询语句的查询条件,所述“华北地区的各客户分别对应的账户”即为在所述维度表中查询到的所述匹配的物理表的主键字段的字段内容数据;所述第一数据库查询语句查询到的字段内容数据“华北地区的各客户分别对应的账户”,以及所述第二查询范围“消费金额大于1000的消费数据”即为所述第二数据库查询语句的查询条件,“华北地区的各客户分别对应的各账户的消费金额大于1000的消费数据”即为在所述匹配的物理表中查找到的当前指标数据对应的待查询字段的字段内容数据。其中,所述维度表中记录的华北地区的各客户分别对应的账户信息可以由人工输入,也可以通过调用相关的客户与账户以及客户与地区之间的关联表进行信息聚合得到。

实施例四

图7为本发明实施例四提供的一种数据查询装置的结构示意图,参见图7所示,所述数据查询装置包括:接收模块710、确定模块720、查询模块730和返回模块740;

其中,接收模块710,用于接收业务端发送的用户分析请求,所述用户分析请求中包含维度数据和至少一项指标数据;各所述指标数据包括待查询字段,所述维度数据包括主键字段;确定模块720,用于对于各所述指标数据,分别确定预先设置的至少一个逻辑元数据中是否存在与当前指标数据一致的逻辑元数据;查询模块730,用于当确定预先设置的至少一个逻辑元数据中存在与当前指标数据一致的逻辑元数据时,从与所述逻辑元数据绑定的至少一个物理表中确定与所述维度数据匹配的物理表,并基于当前指标数据和所述维度数据从确定的物理表中查询数据;其中,各所述逻辑元数据是已有的至少一个物理表中所包含的字段;返回模块740,用于将查询到的数据进行拼接后返回给所述业务端。

进一步的,查询模块730包括:

确定单元,用于若与所述逻辑元数据所绑定的至少一个物理表中存在维度数据与所述用户分析请求中包含的维度数据一致的物理表,则将维度数据与所述用户分析请求中包含的维度数据一致的物理表,确定为与所述用户分析请求中包含的维度数据匹配的物理表;其中,各物理表的维度数据是对应物理表中的主键字段;

查询单元,用于基于当前指标数据、所述用户分析请求中包含的维度数据和确定的物理表,生成数据库查询语句,通过执行所述数据库查询语句查询数据。

进一步的,查询模块730还包括:

维度级别获取单元,用于若与所述逻辑元数据所绑定的至少一个物理表中不存在维度数据与所述用户分析请求中包含的维度数据一致的物理表,则获取与所述逻辑元数据绑定的各物理表的维度级别;

筛选单元,用于基于所述维度级别,从与所述逻辑元数据绑定的各物理表中筛选出一个物理表,作为与所述用户分析请求中包含的维度数据匹配的物理表。

进一步的,所述筛选单元具体用于:

基于所述维度级别,从与所述逻辑元数据绑定的各物理表中筛选出维度级别低于所述用户分析请求中包含的维度数据对应的维度级别的物理表;

若筛选出一个物理表,则将筛选出的物理表作为与所述用户分析请求中包含的维度数据匹配的物理表;

若筛选出多个物理表,则从筛选出的多个物理表中再次筛选出维度级别与所述用户分析请求中包含的维度数据对应的维度级别之间的差距最小的物理表;

若再次筛选出一个物理表,则将再次筛选出的物理表作为与所述用户分析请求中包含的维度数据匹配的物理表;

若再次筛选出多个物理表,则从再次筛选出的物理表中选择数据量最小的物理表作为与所述用户分析请求中包含的维度数据匹配的物理表。

进一步的,所述装置还包括:维度表确定模块,用于从与所述逻辑元数据绑定的至少一个物理表中确定与所述维度数据匹配的物理表之后,确定维度表,所述维度表的字段包括所述用户分析请求中包含的维度数据对应的主键字段以及与所述用户分析请求中包含的维度数据匹配的物理表的主键字段;

对应的,查询模块730具体用于基于所述维度表、与所述用户分析请求中包含的维度数据匹配的物理表、当前指标数据以及所述用户分析请求中包含的维度数据,生成数据库查询语句,通过执行所述数据库查询语句查询数据。

进一步的,所述用户分析请求中包含的维度数据还包括所述待查询字段对应的主键字段的第一查询范围,所述当前指标数据还包括对应的待查询字段的第二查询范围;

对应的,查询模块730具体用于生成将第一数据库查询语句和第二数据库查询语句进行连接后得到的第三数据库查询语句,其中,

第一数据库查询语句,用于以所述用户分析请求中包含的维度数据对应的主键字段、第一查询范围为查询条件,在所述维度表中查询所述匹配的物理表的主键字段的字段内容数据;

第二数据库查询语句,用于以第一数据库查询语句查询到的字段内容数据、第二查询范围为查询条件,在所述匹配的物理表中查找当前指标数据对应的待查询字段的字段内容数据。

本实施例的技术方案,通过以物理表所包含的字段为管理单元,预先建立各字段与物理表之间的绑定关系,当接收到业务端发送的包括待查询字段的用户分析请求后,确定是否存在与所述待查询字段相同的预设字段,若存在,则从与所述预设字段绑定的物理表中确定与所述待查询字段对应的维度数据匹配的物理表,并基于所述待查询字段以及对应的维度数据从确定的物理表中查询数据,实现了将业务模型(每种业务需求/场景对应一种业务模型,该业务模型用于表示请求查询的数据)与物理模型(根据每种业务模型预先建立的包含目标数据的数据库表)的完全解耦,无需再对物理表进行聚合以建立所述数据库表,当业务模型发生变化时,不会引起数据库表的变化,提高了数据的灵活性和可维护性,通过以字段为管理单元,避免了每种业务需求/场景均需对应一张数据库表的情况,提高了数据的复用性和可扩展性,进而提高了数据库中的数据管理效率。

本发明实施例所提供的数据查询装置可执行本发明任意实施例所提供的数据查询方法,具备执行方法相应的功能模块和有益效果。

实施例五

图8为本发明实施例五提供的一种电子设备的结构示意图。图8示出了适于用来实现本发明实施方式的示例性设备12的框图。图8显示的设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。

如图8所示,设备12以通用计算设备的形式表现。设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。

总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(isa)总线,微通道体系结构(mac)总线,增强型isa总线、视频电子标准协会(vesa)局域总线以及外围组件互连(pci)总线。

设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。

系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(ram)30和/或高速缓存存储器32。设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图8未显示,通常称为“硬盘驱动器”)。尽管图8中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如cd-rom,dvd-rom或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如接收模块710、确定模块720、查询模块730和返回模块740)程序模块,这些程序模块被配置以执行本发明各实施例的功能。

具有一组(接收模块710、确定模块720、查询模块730和返回模块740)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。

设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该设备12交互的设备通信,和/或与使得该设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(i/o)接口22进行。并且,设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与设备12的其它模块通信。应当明白,尽管图中未示出,可以结合设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储系统等。

处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的数据查询方法。

实施例六

本发明实施例六还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明实施例所述的数据查询方法。

本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。

计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括——但不限于无线、电线、光缆、rf等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如java、smalltalk、c++,还包括常规的过程式程序设计语言—诸如”c”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1