本申请涉及计算机
技术领域:
:,具体而言,涉及一种数据查询方法、装置、设备和存储介质。
背景技术:
::随着大数据时代的来临,人们收集和分析的数据规模越来越大,如何对海量数据进行分析和决策是一个难题。olap(联机数据分析)系统由于其优秀的多维分析能力,已成为大数据分析中不可或缺的组件。olap通常使用的查询语言是mdx。在大数据上使用mdx语言还不能够进行高效的分析。技术实现要素:本申请的主要目的在于提供一种数据查询方法、装置、设备和存储介质,以解决上述问题。为了实现上述目的,根据本申请的一个方面,提供了一种数据查询方法,包括:接收mdx查询语句;获取所述mdx查询语句中的度量和维度的相关信息;根据所述度量和维度的相关信息进行查询得到查询结果。在一种实施方式中,根据所述度量和维度的相关信息进行查询,包括:确定行维度数据范围和列维度数据范围;根据所述行维度数据范围和列维度数据范围构建多维数据表格;对于所述多维数据表格中的任意的一个坐标节点;根据所述坐标节点的行维度和列维度查询确定所述节点的度量数据。在一种实施方式中,还包括:获取所述mdx查询语句的算子;对于所述坐标节点;如果查询不到所述坐标节点的度量,则根据所述坐标节点的行、列维度及度量的表达式,确定所述节点的辅助维度,和/或者,辅助度量;根据所述辅助维度,和/或者,辅助度量和所述算子计算得到所述节点的度量。在一种实施方式中,接收mdx查询语句,包括:接收报表工具发送的mdx查询语句;对查询结果进行格式整理;将经过格式整理的查询结果发送给所述报表工具。在一种实施方式中,根据所述度量和维度的相关信息进行查询得到查询结果,包括:根据所述度量和维度的相关信息从分布式存储系统进行查询得到查询结果;所述分布式存储系统中包括多批相互隔离的数据;其中,每批数据中存储了一组维度和度量。在一种实施方式中,根如果查询不到所述节点的直接度量,则查询所述节点的辅助维度,和/或者,辅助度量,包括:根据所述度量表达式确定需要用到的辅助维度,和/或者,辅助度量;根据所述辅助维度,和/或者,辅助度量确定所述辅助维度,和/或者,辅助度量所在的数据批次;从所述数据批次中获取所述辅助维度,和/或者,辅助度量。为了实现上述目的,根据本申请的第二方面,提供了一种数据查询装置;该装置包括:接收模块,用于接收mdx查询语句;获取模块,用于获取所述mdx查询语句中的度量和维度的相关信息;查询模块,用于根据所述度量和维度的相关信息进行查询得到查询结果。在一种实施方式中,查询模块还用于,确定行维度数据范围和列维度数据范围;根据所述行维度数据范围和列维度数据范围构建多维数据表格;对于所述多维数据表格中的任意的一个坐标节点;根据所述坐标节点的行维度和列维度查询确定所述节点的度量数据。在一种实施方式中,查询模块还用于,获取所述mdx查询语句的算子;对于所述坐标节点;如果查询不到所述坐标节点的度量,则根据所述坐标节点的行、列维度及度量表达式查询确定所述坐标节点的辅助维度,和/或者,辅助度量;根据所述辅助维度,和/或者,辅助度量和所述算子计算得到所述节点的度量。在一种实施方式中,接收模块还用于,接收报表工具发送的mdx查询语句;还包括格式整理模块,用于对查询结果进行格式整理;将经过格式整理的查询结果发送给所述报表工具。在一种实施方式中,查询模块还用于,根据所述度量和维度的相关信息从分布式存储系统进行查询得到查询结果;所述分布式存储系统中包括多批相互隔离的数据;其中,每批数据存储一组维度和度量。在一种实施方式中,查询模块还用于,根据所述度量表达式确定需要用到的辅助维度,,和/或者,辅助度量;根据所述辅助维度,和/或者,辅助度量的信息确定所述辅助维度,和/或者,辅助度量所在的数据批次;从所述数据批次中获取所述辅助维度,和/或者,辅助度量。为了实现上述目的,根据本申请的第三方面,提供了一种电子设备;包括至少一个处理器和至少一个存储器;所述存储器用于存储一个或多个程序指令;所述处理器,用于运行一个或多个程序指令,用以执行上述任意一项所述的方法。根据本申请的第四方面,提供了一种计算机可读存储介质,计算机可读存储介质中包含一个或多个程序指令,所述一个或多个程序指令用于执行上述任意一项所述的方法。本发明的上述的技术方案,通过提取查询中度量和维度信息和通过分布式计算框架来计算mdx表达式,提高了数据查询、分析的效率。能够应对各种大数据量、复杂逻辑的业务分析场景。附图说明构成本申请的一部分的附图用来提供对本申请的进一步理解,使得本申请的其它特征、目的和优点变得更明显。本申请的示意性实施例附图及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:图1是根据本申请实施例的一种数据查询方法的流程图;图2是根据本申请实施例的一种数据查询装置的结构示意图;图3是根据本申请实施例的另一种数据查询装置的结构示意图;图4是根据本申请实施例的一种数据查询设备的结构示意图。具体实施方式为了使本
技术领域:
:的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。首先介绍一下本申请所用到的技术术语:olap:onlineanalysisprocessing,联机数据分析,一种使分析人员能够迅速、从多个维度洞察数据的技术。aggregationquery:表示mdx查询在某一聚合层级上的查询内容。aggregationqueryresult:以特定形式组织的、mdx查询在某一聚合层级上的查询结果。dimension:mdx语言概念中的维度,一般对应数据源中一张维表。hierarchy:mdx语言概念中的层级结构,可能由多层组成。level:mdx语言概念中的级别,一般对应为维表上的特定字段。需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。本申请提出了一种数据查询方法,参见附图1所示的一种数据查询方法的流程图;该方法包括:步骤s102,接收mdx查询语句;其中,可以接收报表分析工具发送的mdx查询语句。具体的,根据报表分析工具组织mdx语句的模式,对来自各种报表分析工具的mdx查询语句进行分析,提取并组织各种查询时所需的信息发送至查询执行模块。示例性的,首先,收到报表分析工具发送的mdx查询语句后,根据该语句提取出用户的查询意图:所想要查询的维度、度量、筛选条件及其所处的位置(多维数据模型的若干条轴上);由于mdx查询往往需要多个聚合层级的数据且多个聚合层级之间的计算互相独立,因此根据提取出的上述信息,可以生成若干个相应的aggregationquery,并将上述aggregationquery发送至查询执行模块并行执行。接收报表分析工具包括但不限于:excel、tableau、powerbi。示例性的,查询语句可以为“查询这一个季度的总的销售额”。步骤s104,获取所述mdx查询语句中的度量和维度的相关信息;具体的,度量和维度的相关信息包括但是不限于以下的一种或者几种:度量表达式、所述度量表达式中的相关算子、行维度、列维度以及维度级别信息。示例性的,查询语句可以为“查询这一个季度的总的销售额”时,度量可以为销售额,维度包括店名、日期。可以建立一个二维的表格,表格的横轴为店名,纵轴为日期。每个店,每天的销售额为度量。示例性的,查询语句为“查询一个学生在一个季度的平均成绩”,度量为考试成绩,维度包括学生的姓名和日期。步骤s106,根据所述度量和维度的相关信息进行查询得到查询结果。其中,数据可以存储在分布式存储系统中。分布式存储系统是一个统一的整体,在这个系统中存储了多批相互隔离的数据,每批数据中包括了一组维度和度量数据。采用分布式存储系统可以提高数据存储的安全性,备用性。可以把不同的度量数据存储在不同的数据批次中。本发明的上述的方法,通过提取查询中的度量和维度信息和通过分布式计算框架来计算mdx表达式,提高了数据查询、分析的效率。能够应对各种大数据量、复杂逻辑的业务分析场景。在一种实施方式中,根据所述度量和维度的相关信息进行查询,包括:确定行维度数据范围和列维度数据范围;根据所述行维度数据范围和列维度数据范围构建多维数据表格;对于所述多维数据表格中的任意的一个坐标节点;根据所述坐标节点的行维度和列维度查询确定所述节点的度量数据。具体的,尽管报表工具对数据的展示方式是二维数据表格,但逻辑上查询语句是对多维数据的查询。例如:查询每个省份各门店各年份销售额,则查询涉及到城市、门店序数、年份三个维度和销售额这一度量。假设在报表工具中行上放置了城市、门店序数维度,列上放置了年份维度和度量,在报表中的展现形式参见表1:表1如表1所示,城市,门店序数和年份三个维度取值来确定销售额的取值,展现形式为二维数据表格,但实际上是一个三维数据立方体,三维的x,y,z轴分别为:城市、门店序数、年份。在一种实施方式中,还包括:获取所述mdx查询语句的算子;对于所述坐标节点;如果查询不到所述坐标节点的度量,则根据所述坐标节点的行、列维度、度量表达式确定所述坐标节点的辅助维度,和/或者,辅助度量;根据所述辅助维度,和/或者,辅助度量和所述算子计算得到所述节点的度量。具体的,表达式中包括辅助维度,和/或,辅助度量;根据所述度量表达式确定需要用到的辅助维度,和/或,辅助度量。得到辅助维度,和/或者度量后,再计算得到节点的度量值。度量分为基本度量和计算度量两类,前者可以从分布式存储系统的数据批次中直接获取到,后者则根据表达式依赖于维度,和/或者,度量计算得到。所以需要用到辅助维度、辅助度量:示例性的,1.假设存在两个基本度量“销售额”与“成本”,那么对于“净利润”(“销售额”–“成本“)这一计算度量来说,便仅依赖于两个辅助度量;2.假设存在维度“商品编号”取值为1-20,其中1-10号商品由于政策规定,在“销售额”和“成本”之外还有一笔“政策补贴”的额外收入固定值为10,那么此时的“净利润”便应该是:if(“商品编号”in1-10)“销售额“–“成本”+10else“销售额“–“成本”那么“净利润”便是依赖于辅助维度(“商品编号”)和辅助度量(“销售额”、“成本”)。而政策规定可能会发生变动,因此在业务场景中判断条件一般也会被单独写成一个计算度量,方便进行更改,因此实际上这里会有两个计算度量:1.政策补贴:if“商品编号”in1-10;2.商品净利润:if(“政策补贴”)then“销售额“–“成本”+10else“销售额“–“成本”。那么对“政策补贴”来说,它只依赖于辅助维度,而对“商品净利润”来说,它本身只依赖于辅助度量。当然由于它依赖于“政策补贴”,因此它实际上依赖于辅助维度和辅助度量。示例性的,查询语句为“查询每个季度的利润”,度量表达式为,销售额减去成本等于利润,相关算子为减法运算。根据所述度量表达式构建抽象语法树;遍历所述抽象语法树;对于所述抽象语法树中的任意的一个节点,采用所述算子对所述节点行维度、列维度进行计算。具体的,维度包括行维度、列维度,如此可以设计一个二维表格,横轴为行维度,纵轴为列维度。横轴和纵轴作为基本数据块。示例性的,每个店,每天的销售额为抽象语法树中的一个节点。采用算子可以对该节点进行计算。在一种实施方式中,还包括:获取所述mdx查询语句中的行、列维度的级别信息;具体的,h=(l1,l2,l3);示例性的,h=(年,月,日);年为l1,月为l2,日为l3。h的级别最高,单个年,月,日的级别为低。并且在单个维度的优先级排序中,级别从高到低的优先级排序为:年级别,月级别,日级别。根据所述级别信息从分布式数据存储系统中查询获取对应数据;示例性的,可以查到某年某月某日的销售额数据;也可以查到,某年的销售额,或某月的销售额,或某天的销售额。比如,可以查到2020年5月1号的销售额;也可以查到:5月的销售额,包括历年的5月的销售额;比如,2019年的5月的销售额和2020年的销售额;可以查询到5月1号的销售额,包括多年的5月1号的销售额;可以进行横向的对比,更直观地判断出历年的5月1号的销售额;以及销售额横向对比的变化趋势。遍历所述抽象语法树,包括:对于所述抽象语法树的任意一个节点,如果查询不到所述节点的直接度量或者维度,则查询所述节点的辅助度量或辅助维度;根据所述辅助度量,和/或,辅助维度计算得到所述直接度量或维度。具体的,采用分布式系统中,存储了多批次相互隔离的数据,每批数据包括了一组维度和度量数据。比如,可以在数据批次1存储度量1,度量1为销售额。数据批次2存储度量2,度量2为成本。示例性的,如果想要计算某天的利润,查询不到直接的利润,需要计算,需要先获得销售额,再获得成本,用销售额减去成本得到利润。其中,销售额和成本均为度量。因为报表工具对格式有要求,只有特定的格式才能够被报表工具识别。在一种实施方式中,对查询结果进行格式整理;将格式整理成报表工具能够识别的格式。将经过格式整理的查询结果发送给报表工具。具体的,从多个aggregationqueryresult构造最终返回结果。首先从不同的aggregationquery中获取到行列上的维度、度量信息确定mdx查询结果的框架(行、列上的维度、度量分布),从查询执行模块返回的数据块的各数据单元中提取出行、列上的维度值及对应的各度量值,再将不同aggregationquery的提取结果根据聚合层级的高低关系组织,以特定格式返回至报表分析工具。在一种实施方式中,根据所述度量和维度的相关信息进行查询得到查询结果,包括:根据所述度量和维度的相关信息从分布式存储系统进行查询得到查询结果;所述分布式存储系统中包括多批相互隔离的数据;其中,每批数据中存储了一组维度和度量。在一种实施方式中,如果查询不到所述节点的直接度量,则查询所述节点的辅助维度,和/或者,辅助度量,包括:根据所述度量表达式确定需要用到的辅助维度,和/或者,辅助度量;根据所述辅助维度,和/或者,辅助度量确定所述辅助维度,和/或者,辅助度量所在的数据批次;从所述数据批次中获取所述辅助维度,和/或者,辅助度量。具体的,预先存储了数据批次和存储的辅助维度,和/或者,辅助度量的对应关系;根据对应关系确定对应的数据批次,进而获取具体的维度,度量值。示例性的,度量为销售额,预先存储的关系为,销售额存储在数据批次4中,从数据批次4中获取销售额。本发明提供了更高性能的mdx执行引擎方案,极大的提升了大数据量时mdx查询的执行速度,提升了查询的整体性能;提供了分布式存储系统对接方案,使得用户能够通过分布式存储系统处理更大规模的数据量;提供了分布式计算方案,使得用户可以根据实际需求灵活调整资源分配,极大的提高了系统的灵活性和用户的使用成本。第二方面,本发明还提供了一种数据处理装置,如图2所示,该装置包括:接收模块21,用于接收mdx查询语句;获取模块22,用于获取所述mdx查询语句中的度量和维度的相关信息;查询模块23,用于根据所述度量和维度的相关信息进行查询得到查询结果。在一种实施方式中,查询模块23还用于,确定行维度数据范围和列维度数据范围;根据所述行维度数据范围和列维度数据范围构建多维数据表格;对于所述多维数据表格中的任意的一个坐标节点;根据所述坐标节点的行维度和列维度查询确定所述节点的度量数据。在一种实施方式中,查询模块23还用于,获取所述mdx查询语句的算子;对于所述坐标节点;如果查询不到所述坐标节点的度量,则根据所述坐标节点的行维度、列维度和度量表达式查询确定所述坐标节点的辅助维度,和/或者,辅助度量;根据所述辅助维度,和/或者,辅助度量和所述算子计算得到所述节点的度量。在一种实施方式中,接收模块21还用于,接收报表工具发送的mdx查询语句;还包括格式整理模块,用于对查询结果进行格式整理;将经过格式整理的查询结果发送给所述报表工具。在一种实施方式中,查询模块23还用于,根据所述度量和维度的相关信息从分布式存储系统进行查询得到查询结果;所述分布式存储系统中包括多批相互隔离的数据;其中,每批数据存储一组维度和度量。在一种实施方式中,查询模块23还用于,根据所述度量表达式确定需要用到的辅助维度,和/或者,辅助度量;根据所述辅助维度,和/或者,辅助度量的信息确定所述辅助维度,和/或者,辅助度量所在的数据批次;从所述数据批次中获取所述辅助维度,和/或者,辅助度量。下面详细介绍另一种数据查询装置,参见附图3所示的另一种数据查询装置的结构示意图;该装置包括:mdx语句解析模块31、查询执行模块32、数据提供模块33、结果构造模块34和分布式运算模块35。下面将结合一个简单的样例查询来对四个模块做具体介绍,以一条查询了单个维度和单个计算度量的mdx查询为例:select[d].[h].membersfrom[catalog]where([measures].[m]),其中d、h分别代表mdx维度(dimension)、层次结构(hierarchy),这里假设h只有两个级别(level):l1、l2分别代表总计和明细,m代表了一个计算度量。mdx语句解析模块31,用于根据报表分析工具组织mdx语句的模式,对来自各种报表分析工具的mdx查询语句进行分析,提取并组织各种查询时所需的信息发送至查询执行模块。首先,收到报表分析工具发送的mdx查询语句后,根据该语句提取出用户的查询意图:所想要查询的维度、度量、筛选条件及其所处的位置(多维数据模型的若干条轴上);由于mdx查询往往需要多个聚合层级的数据且多个聚合层级之间的计算互相独立,因此根据提取出的上述信息,可以生成若干个相应的aggregationquery,并将上述aggregationquery发送至查询执行模块并行执行。由于报表分析工具在组织查询语句时有一定的规律,根据其语句模式与语义分析可知,上述样例查询中包含h这一层级结构下的总计与明细两个聚合层级上的数据,因此会转化出两个aggregationquery,分别计算l1、m与l2、m,并行执行;查询执行模块32,用于将aggregationquery转化为分布式执行计划并提交至分布式运算模块35,接收分布式运算模块35发送的计算结果,最终将结果返回给结果构造模块34。在从mdx语句解析模块获得了不同聚合层级的查询后,根据其中包括的行列维度信息及这些维度上的筛选信息,首先构建基本的数据块对应行、列轴上的元素;随后遍历查询度量表达式的抽象语法树,对于不同类型节点,通过一定规则,映射为不同的分布式算子,对基本数据块进行相应的添加、减少、计算、修改等操作,从而达成逐步解析、执行度量表达式的抽象语法树的目的。完成后将最终包含整个聚合层级查询结果的数据块转化为aggregationqueryresult,并返回至结果构造模块。对应到上述样例查询,每个aggregationquery首先查询自身包含的h的级别(l1或l2)的维度数据并构造为基本数据块,之后遍历m这一计算度量的抽象语法树:针对查询语句涉及到的不同算法,不同函数,根据其语义,在基本数据块上以列为单位,用分布式算子进行添加、减少、计算、修改等操作(若有必要添加数据时,则需要通过数据提供模块进行查询),最终在基本数据块上添加上m对应的数据内容。对最终计算完成的数据块,根据aggregationquery中包含的级别、度量所在位置信息,提取出l1、l2的数据结果与m在l1、l2上的数据结果,将其转化为aggregationqueryresult数据结构,并转发到结果构造模块。数据提供模块33,用于接收查询执行模块32发送的维度、度量的请求,根据特定规则,对请求的维度、度量范围进一步调整后,向分布式数据存储服务发起查询,获得维度、度量的结果后进行包装,将经过包装的维度、度量的数据块返回至查询执行模块32。对应到上述样例查询中,首先在最初的初始数据块构造时,需要根据查询中行列上使用的级别信息,组织合适的查询,从分布式数据存储系统中获取到相应的数据。其次,在遍历m的抽象语法树的过程中,若发现需要额外的数据,如该计算度量依赖于其他的基本度量或维度时,则再根据这些需要的维度、度量信息,组织查询获取数据、返回给执行模块;结果构造模块34,用于从多个aggregationqueryresult构造最终返回结果。首先从不同的aggregationquery中获取到行列上的维度、度量信息确定mdx查询结果的框架(行、列上的维度、度量分布),从查询执行模块返回的数据块的各数据单元中提取出行、列上的维度值及对应的各度量值,再将不同aggregationquery的提取结果根据聚合层级的高低关系组织,以特定格式返回至报表分析工具。分布式计算模块35,用于分布式计算计划,将计算结果发送给查询执行模块。根据本申请的第三方面,提供了一种数据查询设备;参见附图4所示的一种数据查询设备的结构示意图,包括至少一个处理器41和至少一个存储器42;所述存储器42用于存储一个或多个程序指令;所述处理器41,用于运行一个或多个程序指令,用以执行上述任意一项的方法。第四方面,本申请还提出了一种计算机可读存储介质,计算机可读存储介质中包含一个或多个程序指令,所述一个或多个程序指令用于执行上述任一项所述的方法。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。处理器读取存储介质中的信息,结合其硬件完成上述方法的步骤。存储介质可以是存储器,例如可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-onlymemory,简称rom)、可编程只读存储器(programmablerom,简称prom)、可擦除可编程只读存储器(erasableprom,简称eprom)、电可擦除可编程只读存储器(electricallyeprom,简称eeprom)或闪存。易失性存储器可以是随机存取存储器(randomaccessmemory,简称ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(staticram,简称sram)、动态随机存取存储器(dynamicram,简称dram)、同步动态随机存取存储器(synchronousdram,简称sdram)、双倍数据速率同步动态随机存取存储器(doubledataratesdram,简称ddrsdram)、增强型同步动态随机存取存储器(enhancedsdram,简称esdram)、同步连接动态随机存取存储器(synchlinkdram,简称sldram)和直接内存总线随机存取存储器(directrambusram,简称drram)。本发明实施例描述的存储介质旨在包括但不限于这些和任意其它适合类型的存储器。本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件与软件组合来实现。当应用软件时,可以将相应功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。以上所述仅为本申请的优选实施例而已,并不用于限制本申请,对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。当前第1页12当前第1页12