CN105550241A - 多维数据库查询方法及装置 - Google Patents
多维数据库查询方法及装置 Download PDFInfo
- Publication number
- CN105550241A CN105550241A CN201510896785.XA CN201510896785A CN105550241A CN 105550241 A CN105550241 A CN 105550241A CN 201510896785 A CN201510896785 A CN 201510896785A CN 105550241 A CN105550241 A CN 105550241A
- Authority
- CN
- China
- Prior art keywords
- node
- tree
- key word
- keywords
- tree object
- 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/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
-
- 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
Abstract
本发明实施例公开了一种多维数据库查询方法,包括:接收输入的多维查询参数;生成树对象,遍历所述关键字集合,根据预设的字段顺序将所述遍历到的关键字集合中的关键字排列,生成由所述树对象的根节点到叶节点的路径添加到所述树对象中;将所述树对象中递归包含有相同子节点的且对应同一父节点的树节点合并;遍历所述合并后的树对象中每个根节点到叶节点的路径,获取遍历到的路径上的树节点中的关键字组,根据in操作符生成遍历到的路径对应的查询条件式,通过or操作符连接所有路径对应的查询条件式生成SQL语句。本发明中多维数据库查询方法可以生成较短的SQL语句,利于维护。
Description
技术领域
本发明涉及数据库技术领域,尤其涉及一种多维数据库查询方法及装置。
背景技术
随着计算机技术的发展所带来的对数据持久化的需求,数据库技术的应用越来越广泛。常见的数据库操作中,数据库操作人员需要编写SQL(StructuredQueryLanguage,结构化查询语言)语句来对数据库中的数据项进行增删改查的操作。
然而,现有的数据库查询操作中,通常有多维查询数据库的需求,即存在多组需要进行查询的查询条件,返回每组查询条件对应的查询结果的并集,每组查询条件中在相应数据表的部分字段下的关键字可能相同。传统技术中,在处理多维查询数据库的需求时,通常需要用户为每一组查询条件编写一条子SQL语句,然后通过“或(OR)”操作拼接各个子SQL语句,得到每组SQL语句的查询结果的并集。这就使得在多维查询的维度较广时,一次多维查询任务对应的SQL语句将变得非常的长,造成了维护的不便。
发明内容
基于此,为解决上述提到的传统技术中的多维查询数据库时编写的SQL语句过长而造成的可维护性不足的技术问题,特提出了一种多维数据库查询方法。
一种多维数据库查询方法,包括:
接收输入的多维查询参数,所述多维查询参数包含至少一个关键字集合,所述关键字集合中的关键字各自对应一个预设的数据表字段;
生成树对象,遍历所述关键字集合,根据预设的字段顺序将所述遍历到的关键字集合中的关键字排列,生成由所述树对象的根节点到叶节点的路径添加到所述树对象中,所述路径上的树节点与所述关键字集合中的关键字按照所述字段顺序一一对应;
将所述树对象中递归包含有相同子节点的且对应同一父节点的树节点合并,所述合并得到的树节点中包含被合并的树节点中的关键字构成的关键字组;
遍历所述合并后的树对象中每个根节点到叶节点的路径,获取遍历到的路径上的树节点中的关键字组,根据in操作符生成遍历到的路径对应的查询条件式,通过or操作符连接所有路径对应的查询条件式生成SQL语句。
在其中一个实施例中,所述根据预设的字段顺序将所述遍历到的关键字集合中的关键字排列,生成由所述树对象的根节点到叶节点的路径添加到所述树对象中的步骤还包括:
按照预设的字段顺序遍历数据表字段,在所述遍历到的关键字集合中查找与所述遍历到的数据表字段对应的关键字,根据查找到的关键字以及查找顺序生成由所述树对象的根节点到叶节点的路径。
在其中一个实施例中,所述将所述树对象中递归包含有相同子节点的且对应同一父节点的树节点合并的步骤还包括:
由所述树对象的叶节点向根节点进行遍历,逐层将对应的子节点包含相同关键字组的且对应同一父节点的树节点合并。
在其中一个实施例中,所述通过or操作符连接所有路径对应的查询条件式生成SQL语句的步骤还包括:
接收输入或预设的分组数据表字段,使用GroupBy语句将所述分组数据表字段添加到所述生成的SQL语句中。
在其中一个实施例中,所述接收输入的多维查询参数的步骤之后还包括:
获取所述多维查询参数中的关键字对应的数据表字段的枚举类型,将所述多维查询参数中的关键字转换成与该关键字对应的数据表字段的枚举类型的关键字。
为解决上述提到的传统技术中的多维查询数据库时编写的SQL语句过长而造成的可维护性不足的技术问题,特提出了一种多维数据库查询装置。
一种多维数据库查询装置,包括:
参数接收模块,用于接收输入的多维查询参数,所述多维查询参数包含至少一个关键字集合,所述关键字集合中的关键字各自对应一个预设的数据表字段;
查询树生成模块,用于生成树对象,遍历所述关键字集合,根据预设的字段顺序将所述遍历到的关键字集合中的关键字排列,生成由所述树对象的根节点到叶节点的路径添加到所述树对象中,所述路径上的树节点与所述关键字集合中的关键字按照所述字段顺序一一对应;
查询树合并模块,用于将所述树对象中递归包含有相同子节点的且对应同一父节点的树节点合并,所述合并得到的树节点中包含被合并的树节点中的关键字构成的关键字组;
语句生成模块,用于遍历所述合并后的树对象中每个根节点到叶节点的路径,获取遍历到的路径上的树节点中的关键字组,根据in操作符生成遍历到的路径对应的查询条件式,通过or操作符连接所有路径对应的查询条件式生成SQL语句。
在其中一个实施例中,所述查询树生成模块还用于按照预设的字段顺序遍历数据表字段,在所述遍历到的关键字集合中查找与所述遍历到的数据表字段对应的关键字,根据查找到的关键字以及查找顺序生成由所述树对象的根节点到叶节点的路径。
在其中一个实施例中,所述查询树合并模块还用于由所述树对象的叶节点向根节点进行遍历,逐层将对应的子节点包含相同关键字组的且对应同一父节点的树节点合并。
在其中一个实施例中,所述语句生成模块还用于接收输入或预设的分组数据表字段,使用GroupBy语句将所述分组数据表字段添加到所述生成的SQL语句中。
在其中一个实施例中,所述参数接收模块还用于获取所述多维查询参数中的关键字对应的数据表字段的枚举类型,将所述多维查询参数中的关键字转换成与该关键字对应的数据表字段的枚举类型的关键字。
实施本发明实施例,将具有如下有益效果:
采用了上述多维数据库查询方法及装置之后,对于输入的多维查询参数,先生成树对象,树对象中包含了与多维查询参数中的每组关键字集合对应的由根节点到叶节点的多条路径,然后对树对象进行合并,将该多条路径合并为较少的合并关键字为关键字组的路径,然后根据该路径利用SQL语言中的IN操作符生成SQL语句,其中包含的由OR操作符连接的查询条件的个数则精简到了树对象进行合并后包含的路径的数量,而传统技术中生成的SQL语句中包含的由OR操作符连接的查询条件的个数为树对象合并前包含的路径的数量,因此,和传统技术相比,本发明生成的SQL语句的长度得到了精简,从而降低了维护难度,也提高了执行效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
其中:
图1为一个实施例中一种多维数据库查询方法的流程图;
图2为一个实施例中生成完整树对象的逻辑示意图;
图3为一个实施例中合成树对象的树节点的过程示意图;
图4为一个实施例中合成树对象的树节点的过程示意图;
图5为一个实施例中合成后的树对象的树节点的逻辑示意图;
图6为另一个实施例中生成完整树对象的逻辑示意图;
图7为另一个实施例中合成树对象的树节点的过程示意图;
图8为另一个实施例中合成后的树对象的树节点的逻辑示意图;
图9为一个实施例中一种多维数据库查询装置的结构示意图;
图10为一个实施例中运行前述结构化查询语句的版本控制方法的计算机设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如前所述,传统技术中的多维数据库查询中,输入的查询参数可如表1所示,表1展示了一个应用场景中多维数据查询中输入的查询参数构成的查询参数矩阵。
表1
日期 | 省份 | 产品 | 指标 |
2015-09 | CA | Drink | 收入 |
2015-09 | CA | Food | 销量 |
2015-09 | OR | Drink | 收入 |
2015-09 | OR | Food | 销量 |
2015-09 | WA | Drink | 收入 |
2015-09 | WA | Food | 销量 |
2015-08 | CA | Drink | 收入 |
2015-08 | CA | Food | 销量 |
2015-08 | OR | Drink | 收入 |
2015-08 | OR | Food | 销量 |
2015-08 | WA | Drink | 收入 |
2015-08 | WA | Food | 销量 |
其中,横排为一组查询参数,其中包含了4个关键字的关键字集合,竖排为需要合并查询的查询参数组,表头的日期、省份、产品、指标则分别代表了每个查询参数组中关键字集合中的4个关键字在数据表中对应的数据表字段,例如,“2015-09”即为数据表中数据表字段“日期”对应的属性值,“WA”即为数据表中数据表字段“省份”对应的属性值。
在传统技术中,若要完成对该多维查询参数的合并查询,则通常根据每组查询参数独立编写SQL语句,然后再使用OR操作符连接得到执行各个SQL语句得到的查询结果的并集,如上例中,根据多维查询参数得到的SQL语句为:
SELECT日期,省份,产品类型,指标
FROM销售表
WHERE
(日期=2015-09AND省份=CAAND产品=Drink)
OR(日期=2015-09AND省份=CAAND产品=Food)
OR(日期=2015-09AND省份=ORAND产品=Drink)
OR(日期=2015-09AND省份=ORAND产品=Food)
OR(日期=2015-09AND省份=WAAND产品=Drink)
OR(日期=2015-09AND省份=WAAND产品=Food)
OR(日期=2015-08AND省份=CAAND产品=Drink)
OR(日期=2015-08AND省份=CAAND产品=Food)
OR(日期=2015-08AND省份=ORAND产品=Drink)
OR(日期=2015-08AND省份=ORAND产品=Food)
OR(日期=2015-08AND省份=WAAND产品=Drink)
OR(日期=2015-08AND省份=WAAND产品=Food)
由此可看出,最终生成的SQL语句过于冗长,因此不利于维护,并且从执行效率上讲,检索过程没有进行优化,因此,数据库执行效率较低下。
为解决上述提到的传统技术中的多维查询数据库时编写的SQL语句过长而造成的可维护性不足的技术问题,在一个实施例中,特提出了一种多维数据库查询方法,该方法可依赖于计算机实现,可运行于基于冯诺依曼体系的计算机系统上。该计算机程序可以是数据库程序、数据库操作程序、大数据分析平台、具有大量用户数据的互联网应用的web应用程序(B/S架构)或服务器端应用程序(C/S架构),。该计算机系统可以是数据库程序、数据库操作程序、大数据分析平台、具有大量用户数据的互联网应用的服务器设备。
具体的,如图1所示,该方法包括:
步骤S102:接收输入的多维查询参数,所述多维查询参数包含至少一个关键字集合,所述关键字集合中的关键字各自对应一个预设的数据表字段。
如表1所示,表1展示了一个实施例中输入的多维查询参数。输入的多维查询参数可以包括多个关键字集合,每个关键字集合中的关键字与预设的数据表字段一一对应。需要说明的是,表1展示的仅为逻辑上的多维查询参数构成的查询参数矩阵,而在应用中,用户输入的多维查询参数可以是字符串、数组或映射表(map)等其他数据形式。关键字集合中的关键字可以通过该关键字在关键字集合中的序列位置与数据表字段对应,也可以通过输入中数据结构中加入的映射名与数据表字段对应。
例如,预设的字段顺序为表1中的日期、省份、产品、指标,若用户输入的关键字集合的序列为{2015-09,OR,Food,销量},则2015-09通过序列位置1与数据表字段“日期”对应,OR通过序列位置2与数据表字段“省份”对应,Food通过序列位置3与数据表字段“产品”对应,销量通过序列位置4与数据表字段“指标”对应。
或者,可展示多维查询参数输入页面,在页面元素中可定义与输入框对应的数据表字段,则用户通过输入框输入查询参数之后,执行本方法的计算机设备则可接收到包含映射名的关键字集合。例如,若用户在页面中对应“日期”的输入框中输入了“2015-09”,在对应“省份”的输入框中输入了“OR”,对应“产品”的输入框中输入了“Food”,对应“指标”的输入框中输入了“销量”,则执行本方法的计算机设备接收到的一组查询参数的关键字集合可以为:
{日期:2015-09,
省份:OR,
产品:Food,
指标:销量}
优选的,在接收输入的多维查询参数的步骤之后还可获取所述多维查询参数中的关键字对应的数据表字段的枚举类型,将所述多维查询参数中的关键字转换成与该关键字对应的数据表字段的枚举类型的关键字。
数据表字段的枚举类型即为该数据表字段下预先定义的可选择的属性值的可选项。例如,若预设的数据表字段“日期”的枚举类型为{2015-07、2015-08、2015-09、2015-10},则在用户输入“2015年9月份”或者“一五年九月”的关键字时,可将这些关键字均自行转换成数据表字段“日期”的枚举类型2015-09,这就使得在用户输入了不规则的关键字时,能够根据数据库存储的实际情况将用户输入的形式不同但实际语义相同的关键字进行归一化,从而避免了重复查询,提高了查询效率。
步骤S104:生成树对象,遍历所述关键字集合,根据预设的字段顺序将所述遍历到的关键字集合中的关键字排列,生成由所述树对象的根节点到叶节点的路径添加到所述树对象中,所述路径上的树节点与所述关键字集合中的关键字按照所述字段顺序一一对应。
其中,根据预设的字段顺序将所述遍历到的关键字集合中的关键字排列,生成由所述树对象的根节点到叶节点的路径添加到所述树对象中的步骤还包括:按照预设的字段顺序遍历数据表字段,在所述遍历到的关键字集合中查找与所述遍历到的数据表字段对应的关键字,根据查找到的关键字以及查找顺序生成由所述树对象的根节点到叶节点的路径。
如例中,如图2所示,若关键字对应的预设的数据表字段为日期、省份和产品,预设的字段顺序为日期-》省份-》产品的顺序,则
若输入的多维查询参数中的某组关键字集合为{日期=2015-09,省份=CA,产品=Drink},则生成的根节点到叶节点的路径如图2所示:
树对象的根节点-》2015-09-》CA-》Drink
即按照日期-》省份-》产品顺序遍历数据表字段,然后依次取出关键字集合{日期=2015-09,省份=CA,产品=Drink}中的2015-09、CA和Drink,然后生成树节点,其中,2015-09为第一层级的子节点,CA为第二层级的子节点,Drink为第三层级的子节点。由于其为树对象最后一个层级的子节点,因此也为叶节点。
相应的,若输入的多维查询参数中的某组关键字集合为{日期=2015-09,省份=CA,产品=Food},则生成的根节点到叶节点的路径如图2所示:
树对象的根节点-》2015-09-》CA-》Food
相应的,若输入的多维查询参数中的某组关键字集合为{日期=2015-08,省份=OR,产品=Drink},则生成的根节点到叶节点的路径如图2所示:
树对象的根节点-》2015-08-》OR-》Drink
以此类推,可将每一组关键字集合转换成树对象中的根节点到叶节点的路径,然后根据该多条路径生成完整的树对象,在整合多条路径时,若2条或两条以上的路径前端的部分树节点相同,则合并成同一个树节点。
如前例中的两条路径:
树对象的根节点-》2015-09-》CA-》Drink
树对象的根节点-》2015-09-》CA-》Food
的前端的2015-09和CA相同,展示在图2中的树对象逻辑图即为以CA为分支节点,包含两个子节点Drink和Food。也就是说,生成的完整的树对象中,属于同一个父节点的树节点具有唯一的值,若在合并路径时,同一个父节点下包含多个相同的树节点,则将该多个相同的树节点合并为一个树节点,对应同一个关键字。
步骤S106:将所述树对象中递归包含有相同子节点的且对应同一父节点的树节点合并,所述合并得到的树节点中包含被合并的树节点中的关键字构成的关键字组。
递归包含有相同子节点即为包含的子节点相同,且递归包含的子节点的子节点也相同。在本实施例中,可由所述树对象的叶节点向根节点进行遍历,逐层将对应的子节点包含相同关键字组的且对应同一父节点的树节点合并。
请同时参考图2和图3所示,可由完整的树对象的叶节点所在的层级开始遍历合并,如图3中,由于第二层级的子节点下的作为叶节点的子节点均为Drink和Food,因此可合并成如图3所示的树对象,该树对象的所有叶节点均为关键字组{Drink,Food}。
再同时参考图3和图4所示,遍历到第一层级的子节点时,由于第一层级的子节点2015-09和2015-08下的子节点CA、WA和OR的子节点均为{Drink,Food},因此可将2015-09下的子节点合并为{CA,OR,WA},2015-08下的子节点合并为{CA,OR,WA},同时。
再同时参考图4和图5所示,由于同属于根节点的2015-09和2015-08下的子节点均为{CA,OR,WA},且子节点{CA,OR,WA}的子节点均为{Drink,Food},也就是说,2015-09和2015-08下的子节点{CA,OR,WA}递归相同,因此可将2015-09和2015-08合并为{2015-09,2015-08},最终得到如图5所示的树对象结构。
步骤S108:遍历所述合并后的树对象中每个根节点到叶节点的路径,获取遍历到的路径上的树节点中的关键字组,根据in操作符生成遍历到的路径对应的查询条件式,通过or操作符连接所有路径对应的查询条件式生成SQL语句。
如图5所示,合并后的树对象结构中仅包含一条路径即:
树对象的根节点-》{2015-09,2015-08}-》{CA,OR,WA}-》{Drink,Food}
因此,可以使用SQL语言中的in操作符生成SQL语句,为:
SELECT日期,省份,产品
FROM销售表
WHERE日期IN(2015-09,2015-08)AND省份IN(CA,OR,WA)AND产品IN(Drink,FOOT)
进一步的,服务器还可接收输入或预设的分组数据表字段,使用GroupBy语句将所述分组数据表字段添加到所述生成的SQL语句中。
例如,若预设的分组数据表字段为“指标”,则最终生成的SQL语句为:
SELECT日期,省份,产品
FROM销售表
WHERE日期IN(2015-09,2015-08)AND省份IN(CA,OR,WA)AND产品IN(Drink,FOOT)
GroupBY指标
为更好地说明上述方法,在另一个实施例中,输入的多维查询参数如表2所示,表2展示了一个应用场景中多维数据查询中输入的查询参数构成的查询参数矩阵。
表2
即在表1的基础上删除了3组关键字集合:
{2015-09,OR,Food}
{2015-08,WA,Drink}
{2015-08,WA,Food}
因此,在传统技术中,需要生成的SQL语句为:
SELECT日期,省份,产品,指标
FROM销售表
WHERE
(日期=2015-09AND省份=CAAND产品=Drink)
OR(日期=2015-09AND省份=CAAND产品=Food)
OR(日期=2015-09AND省份=ORAND产品=Drink)
OR(日期=2015-09AND省份=WAAND产品=Drink)
OR(日期=2015-09AND省份=WAAND产品=Food)
OR(日期=2015-08AND省份=CAAND产品=Drink)
OR(日期=2015-08AND省份=CAAND产品=Food)
OR(日期=2015-08AND省份=ORAND产品=Drink)
OR(日期=2015-08AND省份=ORAND产品=Food)
而在本实施例中,如前步骤S104所示,可生成树对象,即如图6所示。与图2所示相比,缺少了2015-08下的WA节点极其子节点Drink和Food,以及缺少了2015-09下的OR节点的子节点Food。
再参考如图7和图8所示,对树对象进行合并,最终得到的树对象如图8所示包含三条路径:
树对象的根节点-》2015-08-》{CA,OR}-》{Drink,Food}
树对象的根节点-》2015-09-》{CA,WA}-》{Drink,Food}
树对象的根节点-》2015-09-》OR-》Drink
因此,生成的SQL语句包含由or操作符连接的三部分:
1.日期=2015-08AND省份in{CA,OR}AND产品in{Drink,Food}
2.日期=2015-09AND省份in{CA,WA}AND产品in{Drink,Food}
3.日期=2015-09AND省份=ORAND产品=Drink
最终生成的SQL语句即为:
SELECT日期,省份,产品
FROM销售表
WHERE
日期=2015-08AND省份in{CA,OR}AND产品in{Drink,Food}
OR日期=2015-09AND省份in{CA,WA}AND产品in{Drink,Food}
OR日期=2015-09AND省份=ORAND产品=Drink
与传统技术相比,生成的SQL语句仍然得到了大幅缩短,从而提高了可维护性。
为解决上述提到的传统技术中的多维查询数据库时编写的SQL语句过长而造成的可维护性不足的技术问题,在一个实施例中,如图9所示,还提出了一种多维数据库查询装置,包括:参数接收模块102,查询树生成模块104,查询树合并模块106和语句生成模块108,其中:
参数接收模块102,用于接收输入的多维查询参数,所述多维查询参数包含至少一个关键字集合,所述关键字集合中的关键字各自对应一个预设的数据表字段。
查询树生成模块104,用于生成树对象,遍历所述关键字集合,根据预设的字段顺序将所述遍历到的关键字集合中的关键字排列,生成由所述树对象的根节点到叶节点的路径添加到所述树对象中,所述路径上的树节点与所述关键字集合中的关键字按照所述字段顺序一一对应。
查询树合并模块106,用于将所述树对象中递归包含有相同子节点的且对应同一父节点的树节点合并,所述合并得到的树节点中包含被合并的树节点中的关键字构成的关键字组。
语句生成模块108,用于遍历所述合并后的树对象中每个根节点到叶节点的路径,获取遍历到的路径上的树节点中的关键字组,根据in操作符生成遍历到的路径对应的查询条件式,通过or操作符连接所有路径对应的查询条件式生成SQL语句。
在其中一个实施例中,查询树生成模块104还用于按照预设的字段顺序遍历数据表字段,在所述遍历到的关键字集合中查找与所述遍历到的数据表字段对应的关键字,根据查找到的关键字以及查找顺序生成由所述树对象的根节点到叶节点的路径。
在其中一个实施例中,查询树合并模块104还用于由所述树对象的叶节点向根节点进行遍历,逐层将对应的子节点包含相同关键字组的且对应同一父节点的树节点合并。
在其中一个实施例中,语句生成模块108还用于接收输入或预设的分组数据表字段,使用GroupBy语句将所述分组数据表字段添加到所述生成的SQL语句中。
在其中一个实施例中,参数接收模块102还用于获取所述多维查询参数中的关键字对应的数据表字段的枚举类型,将所述多维查询参数中的关键字转换成与该关键字对应的数据表字段的枚举类型的关键字。
实施本发明实施例,将具有如下有益效果:
采用了上述多维数据库查询方法及装置之后,对于输入的多维查询参数,先生成树对象,树对象中包含了与多维查询参数中的每组关键字集合对应的由根节点到叶节点的多条路径,然后对树对象进行合并,将该多条路径合并为较少的合并关键字为关键字组的路径,然后根据该路径利用SQL语言中的IN操作符生成SQL语句,其中包含的由OR操作符连接的查询条件的个数则精简到了树对象进行合并后包含的路径的数量,而传统技术中生成的SQL语句中包含的由OR操作符连接的查询条件的个数为树对象合并前包含的路径的数量,因此,和传统技术相比,本发明生成的SQL语句的长度得到了精简,从而降低了维护难度,也提高了执行效率。
在一个实施例中,如图10所示,图10展示了一种运行上述多维数据库查询方法的基于冯诺依曼体系的计算机系统10。该计算机系统10可以是智能手机、平板电脑、掌上电脑,笔记本电脑或个人电脑等终端设备。具体的,可包括通过系统总线连接的外部输入接口1001、处理器1002、存储器1003和输出接口1004。其中,外部输入接口1001可选的至少可包括网络接口10012。存储器1003可包括外存储器10032(例如硬盘、光盘或软盘等)和内存储器10034。输出接口1004可包括显示屏10042和音响/喇叭10044等设备。
在本实施例中,本方法的运行基于计算机程序,该计算机程序的程序文件存储于前述基于冯诺依曼体系的计算机系统10的外存储器10032中,在运行时被加载到内存储器10034中,然后被编译为机器码之后传递至处理器1002中执行,从而使得基于冯诺依曼体系的计算机系统10中形成逻辑上的参数接收模块102,查询树生成模块104,查询树合并模块106和语句生成模块108。且在上述多维数据库查询方法执行过程中,输入的参数均通过外部输入接口1001接收,并传递至存储器1003中缓存,然后输入到处理器1002中进行处理,处理的结果数据或缓存于存储器1003中进行后续地处理,或被传递至输出接口1004进行输出。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (10)
1.一种多维数据库查询方法,其特征在于,包括:
接收输入的多维查询参数,所述多维查询参数包含至少一个关键字集合,所述关键字集合中的关键字各自对应一个预设的数据表字段;
生成树对象,遍历所述关键字集合,根据预设的字段顺序将所述遍历到的关键字集合中的关键字排列,生成由所述树对象的根节点到叶节点的路径添加到所述树对象中,所述路径上的树节点与所述关键字集合中的关键字按照所述字段顺序一一对应;
将所述树对象中递归包含有相同子节点的且对应同一父节点的树节点合并,所述合并得到的树节点中包含被合并的树节点中的关键字构成的关键字组;
遍历所述合并后的树对象中每个根节点到叶节点的路径,获取遍历到的路径上的树节点中的关键字组,根据in操作符生成遍历到的路径对应的查询条件式,通过or操作符连接所有路径对应的查询条件式生成SQL语句。
2.根据权利要求1所述的多维数据库查询方法,其特征在于,所述根据预设的字段顺序将所述遍历到的关键字集合中的关键字排列,生成由所述树对象的根节点到叶节点的路径添加到所述树对象中的步骤还包括:
按照预设的字段顺序遍历数据表字段,在所述遍历到的关键字集合中查找与所述遍历到的数据表字段对应的关键字,根据查找到的关键字以及查找顺序生成由所述树对象的根节点到叶节点的路径。
3.根据权利要求1所述的多维数据库查询方法,其特征在于,所述将所述树对象中递归包含有相同子节点的且对应同一父节点的树节点合并的步骤还包括:
由所述树对象的叶节点向根节点进行遍历,逐层将对应的子节点包含相同关键字组的且对应同一父节点的树节点合并。
4.根据权利要求1所述的多维数据库查询方法,其特征在于,所述通过or操作符连接所有路径对应的查询条件式生成SQL语句的步骤还包括:
接收输入或预设的分组数据表字段,使用GroupBy语句将所述分组数据表字段添加到所述生成的SQL语句中。
5.根据权利要求1至4任一项所述的多维数据库查询方法,其特征在于,所述接收输入的多维查询参数的步骤之后还包括:
获取所述多维查询参数中的关键字对应的数据表字段的枚举类型,将所述多维查询参数中的关键字转换成与该关键字对应的数据表字段的枚举类型的关键字。
6.一种多维数据库查询装置,其特征在于,包括:
参数接收模块,用于接收输入的多维查询参数,所述多维查询参数包含至少一个关键字集合,所述关键字集合中的关键字各自对应一个预设的数据表字段;
查询树生成模块,用于生成树对象,遍历所述关键字集合,根据预设的字段顺序将所述遍历到的关键字集合中的关键字排列,生成由所述树对象的根节点到叶节点的路径添加到所述树对象中,所述路径上的树节点与所述关键字集合中的关键字按照所述字段顺序一一对应;
查询树合并模块,用于将所述树对象中递归包含有相同子节点的且对应同一父节点的树节点合并,所述合并得到的树节点中包含被合并的树节点中的关键字构成的关键字组;
语句生成模块,用于遍历所述合并后的树对象中每个根节点到叶节点的路径,获取遍历到的路径上的树节点中的关键字组,根据in操作符生成遍历到的路径对应的查询条件式,通过or操作符连接所有路径对应的查询条件式生成SQL语句。
7.根据权利要求6所述的多维数据库查询装置,其特征在于,所述查询树生成模块还用于按照预设的字段顺序遍历数据表字段,在所述遍历到的关键字集合中查找与所述遍历到的数据表字段对应的关键字,根据查找到的关键字以及查找顺序生成由所述树对象的根节点到叶节点的路径。
8.根据权利要求6所述的多维数据库查询装置,其特征在于,所述查询树合并模块还用于由所述树对象的叶节点向根节点进行遍历,逐层将对应的子节点包含相同关键字组的且对应同一父节点的树节点合并。
9.根据权利要求6所述的多维数据库查询装置,其特征在于,所述语句生成模块还用于接收输入或预设的分组数据表字段,使用GroupBy语句将所述分组数据表字段添加到所述生成的SQL语句中。
10.根据权利要求6至9任一项所述的多维数据库查询装置,其特征在于,所述参数接收模块还用于获取所述多维查询参数中的关键字对应的数据表字段的枚举类型,将所述多维查询参数中的关键字转换成与该关键字对应的数据表字段的枚举类型的关键字。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510896785.XA CN105550241B (zh) | 2015-12-07 | 2015-12-07 | 多维数据库查询方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510896785.XA CN105550241B (zh) | 2015-12-07 | 2015-12-07 | 多维数据库查询方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105550241A true CN105550241A (zh) | 2016-05-04 |
CN105550241B CN105550241B (zh) | 2019-06-25 |
Family
ID=55829430
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510896785.XA Active CN105550241B (zh) | 2015-12-07 | 2015-12-07 | 多维数据库查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105550241B (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106682210A (zh) * | 2016-12-30 | 2017-05-17 | 广州华多网络科技有限公司 | 日志文件查询方法及装置 |
CN107133281A (zh) * | 2017-04-14 | 2017-09-05 | 浙江鸿程计算机系统有限公司 | 一种基于分组的全局多查询优化方法 |
CN107798026A (zh) * | 2016-09-05 | 2018-03-13 | 北京京东尚科信息技术有限公司 | 数据查询方法和装置 |
CN108563736A (zh) * | 2018-04-10 | 2018-09-21 | 口碑(上海)信息技术有限公司 | 基于数据特征查询数据的方法及装置 |
CN108874907A (zh) * | 2018-05-25 | 2018-11-23 | 北京明略软件系统有限公司 | 一种数据查询方法和装置、计算机可读存储介质 |
CN108932300A (zh) * | 2018-06-06 | 2018-12-04 | 成都深思科技有限公司 | 一种无限迭代的过滤分析方法、设备及存储介质 |
CN109118353A (zh) * | 2018-07-20 | 2019-01-01 | 中国邮政储蓄银行股份有限公司 | 风控模型的数据处理方法和装置 |
CN109213775A (zh) * | 2018-09-18 | 2019-01-15 | 深圳壹账通智能科技有限公司 | 搜索方法、装置、计算机设备和存储介质 |
CN109344050A (zh) * | 2018-08-20 | 2019-02-15 | 中国平安人寿保险股份有限公司 | 一种基于结构树的接口参数分析方法及装置 |
CN109978829A (zh) * | 2019-02-26 | 2019-07-05 | 深圳市华汉伟业科技有限公司 | 一种待检测对象的检测方法及其系统 |
CN109977175A (zh) * | 2019-03-20 | 2019-07-05 | 跬云(上海)信息科技有限公司 | 数据配置查询方法和装置 |
CN110569222A (zh) * | 2019-08-23 | 2019-12-13 | 浙江大搜车软件技术有限公司 | 链路追踪方法、装置、计算机设备和可读存储介质 |
CN111125159A (zh) * | 2019-12-24 | 2020-05-08 | 亚信科技(中国)有限公司 | 一种数据统计的方法及装置 |
CN112214662A (zh) * | 2020-10-12 | 2021-01-12 | 深圳壹账通智能科技有限公司 | 服务关系查询方法、装置、电子设备及存储介质 |
CN112860692A (zh) * | 2021-01-29 | 2021-05-28 | 城云科技(中国)有限公司 | 一种数据库表结构转换方法、装置及其电子设备 |
CN112860734A (zh) * | 2019-11-27 | 2021-05-28 | 中国石油天然气集团有限公司 | 地震数据多维度范围查询方法及装置 |
CN114547380A (zh) * | 2022-01-25 | 2022-05-27 | 北京元年科技股份有限公司 | 数据遍历查询方法、装置、电子设备及可读存储介质 |
CN116010438A (zh) * | 2022-12-22 | 2023-04-25 | 北京柏睿数据技术股份有限公司 | 一种数据库操作延迟计算的方法和系统 |
CN116150436A (zh) * | 2023-04-14 | 2023-05-23 | 北京锐服信科技有限公司 | 一种基于节点树的数据展示方法与系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080104053A1 (en) * | 2006-10-31 | 2008-05-01 | Business Objects, S.A. | Apparatus and method for categorical filtering of data |
CN101599011A (zh) * | 2008-06-05 | 2009-12-09 | 北京书生国际信息技术有限公司 | 文档处理系统和方法 |
CN101609461A (zh) * | 2009-07-29 | 2009-12-23 | 孟小峰 | 一种基于用户特征的个人核心数据空间查询系统和方法 |
CN102063466A (zh) * | 2010-12-03 | 2011-05-18 | 中国科学院软件研究所 | 基于策略的数据库强制访问控制方法及其系统 |
CN102243658A (zh) * | 2011-07-08 | 2011-11-16 | 百度在线网络技术(北京)有限公司 | 一种用于对多层结构数据进行数据平铺操作的方法和设备 |
CN102591952A (zh) * | 2011-12-28 | 2012-07-18 | 用友软件股份有限公司 | 基于语义的数据查询装置和基于语义的数据查询方法 |
US20120323885A1 (en) * | 2011-06-15 | 2012-12-20 | Microsoft Corporation | Query optimization techniques for business intelligence systems |
-
2015
- 2015-12-07 CN CN201510896785.XA patent/CN105550241B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080104053A1 (en) * | 2006-10-31 | 2008-05-01 | Business Objects, S.A. | Apparatus and method for categorical filtering of data |
CN101599011A (zh) * | 2008-06-05 | 2009-12-09 | 北京书生国际信息技术有限公司 | 文档处理系统和方法 |
CN101609461A (zh) * | 2009-07-29 | 2009-12-23 | 孟小峰 | 一种基于用户特征的个人核心数据空间查询系统和方法 |
CN102063466A (zh) * | 2010-12-03 | 2011-05-18 | 中国科学院软件研究所 | 基于策略的数据库强制访问控制方法及其系统 |
US20120323885A1 (en) * | 2011-06-15 | 2012-12-20 | Microsoft Corporation | Query optimization techniques for business intelligence systems |
CN102243658A (zh) * | 2011-07-08 | 2011-11-16 | 百度在线网络技术(北京)有限公司 | 一种用于对多层结构数据进行数据平铺操作的方法和设备 |
CN102591952A (zh) * | 2011-12-28 | 2012-07-18 | 用友软件股份有限公司 | 基于语义的数据查询装置和基于语义的数据查询方法 |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107798026A (zh) * | 2016-09-05 | 2018-03-13 | 北京京东尚科信息技术有限公司 | 数据查询方法和装置 |
CN106682210B (zh) * | 2016-12-30 | 2020-12-04 | 广州华多网络科技有限公司 | 日志文件查询方法及装置 |
CN106682210A (zh) * | 2016-12-30 | 2017-05-17 | 广州华多网络科技有限公司 | 日志文件查询方法及装置 |
CN107133281A (zh) * | 2017-04-14 | 2017-09-05 | 浙江鸿程计算机系统有限公司 | 一种基于分组的全局多查询优化方法 |
CN107133281B (zh) * | 2017-04-14 | 2020-12-15 | 浙江鸿程计算机系统有限公司 | 一种基于分组的全局多查询优化方法 |
CN108563736A (zh) * | 2018-04-10 | 2018-09-21 | 口碑(上海)信息技术有限公司 | 基于数据特征查询数据的方法及装置 |
CN108874907A (zh) * | 2018-05-25 | 2018-11-23 | 北京明略软件系统有限公司 | 一种数据查询方法和装置、计算机可读存储介质 |
CN108932300A (zh) * | 2018-06-06 | 2018-12-04 | 成都深思科技有限公司 | 一种无限迭代的过滤分析方法、设备及存储介质 |
CN109118353A (zh) * | 2018-07-20 | 2019-01-01 | 中国邮政储蓄银行股份有限公司 | 风控模型的数据处理方法和装置 |
CN109118353B (zh) * | 2018-07-20 | 2022-03-15 | 中国邮政储蓄银行股份有限公司 | 风控模型的数据处理方法和装置 |
CN109344050A (zh) * | 2018-08-20 | 2019-02-15 | 中国平安人寿保险股份有限公司 | 一种基于结构树的接口参数分析方法及装置 |
CN109344050B (zh) * | 2018-08-20 | 2023-07-21 | 中国平安人寿保险股份有限公司 | 一种基于结构树的接口参数分析方法及装置 |
CN109213775A (zh) * | 2018-09-18 | 2019-01-15 | 深圳壹账通智能科技有限公司 | 搜索方法、装置、计算机设备和存储介质 |
CN109978829A (zh) * | 2019-02-26 | 2019-07-05 | 深圳市华汉伟业科技有限公司 | 一种待检测对象的检测方法及其系统 |
CN109978829B (zh) * | 2019-02-26 | 2021-09-28 | 深圳市华汉伟业科技有限公司 | 一种待检测对象的检测方法及其系统 |
CN109977175A (zh) * | 2019-03-20 | 2019-07-05 | 跬云(上海)信息科技有限公司 | 数据配置查询方法和装置 |
US11281698B2 (en) | 2019-03-20 | 2022-03-22 | Kuyun (Shanghai) Information Technology Co., Ltd. | Data configuration query method and device |
CN109977175B (zh) * | 2019-03-20 | 2021-06-01 | 跬云(上海)信息科技有限公司 | 数据配置查询方法和装置 |
CN110569222A (zh) * | 2019-08-23 | 2019-12-13 | 浙江大搜车软件技术有限公司 | 链路追踪方法、装置、计算机设备和可读存储介质 |
CN110569222B (zh) * | 2019-08-23 | 2022-11-15 | 浙江大搜车软件技术有限公司 | 链路追踪方法、装置、计算机设备和可读存储介质 |
CN112860734A (zh) * | 2019-11-27 | 2021-05-28 | 中国石油天然气集团有限公司 | 地震数据多维度范围查询方法及装置 |
CN111125159A (zh) * | 2019-12-24 | 2020-05-08 | 亚信科技(中国)有限公司 | 一种数据统计的方法及装置 |
CN112214662A (zh) * | 2020-10-12 | 2021-01-12 | 深圳壹账通智能科技有限公司 | 服务关系查询方法、装置、电子设备及存储介质 |
CN112860692A (zh) * | 2021-01-29 | 2021-05-28 | 城云科技(中国)有限公司 | 一种数据库表结构转换方法、装置及其电子设备 |
CN114547380A (zh) * | 2022-01-25 | 2022-05-27 | 北京元年科技股份有限公司 | 数据遍历查询方法、装置、电子设备及可读存储介质 |
CN114547380B (zh) * | 2022-01-25 | 2022-11-15 | 北京元年科技股份有限公司 | 数据遍历查询方法、装置、电子设备及可读存储介质 |
CN116010438A (zh) * | 2022-12-22 | 2023-04-25 | 北京柏睿数据技术股份有限公司 | 一种数据库操作延迟计算的方法和系统 |
CN116010438B (zh) * | 2022-12-22 | 2023-11-28 | 北京柏睿数据技术股份有限公司 | 一种数据库操作延迟计算的方法和系统 |
CN116150436A (zh) * | 2023-04-14 | 2023-05-23 | 北京锐服信科技有限公司 | 一种基于节点树的数据展示方法与系统 |
CN116150436B (zh) * | 2023-04-14 | 2023-08-08 | 北京锐服信科技有限公司 | 一种基于节点树的数据展示方法与系统 |
Also Published As
Publication number | Publication date |
---|---|
CN105550241B (zh) | 2019-06-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105550241A (zh) | 多维数据库查询方法及装置 | |
US11210316B1 (en) | Join key recovery and functional dependency analysis to generate database queries | |
US20210049163A1 (en) | Data preparation context navigation | |
US7925658B2 (en) | Methods and apparatus for mapping a hierarchical data structure to a flat data structure for use in generating a report | |
JP5721818B2 (ja) | 検索におけるモデル情報群の使用 | |
US9754010B2 (en) | Generation of cube metadata and query statement based on an enhanced star schema | |
US7945561B1 (en) | Methods and apparatus for processing a query joining tables stored at different data sources | |
CN111542813A (zh) | 使用异构数据的对象模型来便于建立数据可视化 | |
US9747349B2 (en) | System and method for distributing queries to a group of databases and expediting data access | |
US7720838B1 (en) | Methods and apparatus for joining tables from different data sources | |
CN102214208B (zh) | 一种基于非结构化文本生成结构化信息实体的方法与设备 | |
CN102314497B (zh) | 一种用于识别标记语言文件主体内容的方法和设备 | |
CA2906669A1 (en) | Efficiently performing operations on distinct data values | |
CN110880136A (zh) | 配套产品的推荐方法、系统、设备和存储介质 | |
CN104317936A (zh) | 一种基于星型模型的rolap解析引擎设计方法及装置 | |
CN110837520A (zh) | 一种数据处理方法、平台及系统 | |
CN111611266A (zh) | 知识驱动的联合大数据查询和分析平台 | |
CN104750776A (zh) | 使用元数据访问数据库平台中的信息内容 | |
US11372826B2 (en) | Dynamic inclusion of custom columns into a logical model | |
US9639587B2 (en) | Social network analyzer | |
US20110078569A1 (en) | Value help user interface system and method | |
CN109388659A (zh) | 数据存储方法、装置和计算机可读存储介质 | |
CN105930354B (zh) | 存储模型转换方法和装置 | |
CN113962597A (zh) | 一种数据分析方法、装置、电子设备及存储介质 | |
CN112258244B (zh) | 确定目标物品所属任务的方法、装置、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CP02 | Change in the address of a patent holder | ||
CP02 | Change in the address of a patent holder |
Address after: 519000 High-tech Zone, Zhuhai City, Guangdong Province, Unit 1, Fourth Floor C, Building A, Headquarters Base No. 1, Qianwan Third Road, Tangjiawan Town Patentee after: ZHUHAI DUOWAN INFORMATION TECHNOLOGY LIMITED Address before: 511442 29 floors, B-1 Building, Wanda Commercial Square North District, Wanbo Business Center, Nancun Town, Panyu District, Guangzhou City, Guangdong Province Patentee before: ZHUHAI DUOWAN INFORMATION TECHNOLOGY LIMITED |