CN108241622B - 一种查询脚本的生成方法及装置 - Google Patents
一种查询脚本的生成方法及装置 Download PDFInfo
- Publication number
- CN108241622B CN108241622B CN201611204520.XA CN201611204520A CN108241622B CN 108241622 B CN108241622 B CN 108241622B CN 201611204520 A CN201611204520 A CN 201611204520A CN 108241622 B CN108241622 B CN 108241622B
- Authority
- CN
- China
- Prior art keywords
- data
- query
- judging
- grouping
- column
- 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.)
- Active
Links
Images
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/242—Query formulation
- G06F16/2433—Query languages
- G06F16/244—Grouping and aggregation
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Physics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种查询脚本的生成方法及装置,涉及计算机技术领域,主要目的是提高数据库的查询性能。所述方法包括:接收输入的查询参数;获取用于描述数据属性的元数据;根据所述查询参数和所述元数据构造分析树,所述分析树具有多个数据节点;判断所述分析树的每个数据节点是否符合预设聚合条件;如果是,则将符合预设聚合条件的数据节点进行聚合;根据所述聚合后的分析树生成查询脚本。本发明主要用于查询脚本的生成。
Description
技术领域
本发明涉及计算机领域,尤其是一种查询脚本的生成方法及装置。
背景技术
数据库是按照数据结构来组织、存储和管理数据的仓库,数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库***都在各个方面得到了广泛的应用,例如数据查询,当在软件***中进行数据查询时需要生成数据库执行查询操作的脚本,进而通过生成的查询脚本来实现数据查询。
现有技术的查询脚本生成方式主要通过生成对应功能的组件,进而在组件中输入查询参数生成数据库执行查询操作的脚本。然而在生成查询脚本的过程中会涉及到分组聚合操作,并且该分组聚合的操作是在生成脚本中的最后一个步骤执行,由于分组聚合操作需要将不在聚合函数中的查询列全部添加到数据库脚本分组语法中,使得数据库分组语法中的选择列过多,导致数据库的查询性能较差。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种脚本的生成方法及装置,能够提高数据库的查询性能。
一方面,本发明提供了一种查询脚本的生成方法,包括:
接收输入的查询参数;
获取用于描述数据属性的元数据;根据所述查询参数和所述元数据构造分析树,所述分析树具有多个数据节点;
判断所述分析树的每个数据节点是否符合预设聚合条件;
如果是,则将符合预设聚合条件的数据节点进行聚合;
根据所述聚合后的分析树生成查询脚本。
进一步地,所述分析树的数据节点与数据表对应,所述判断所述分析树的每个数据节点是否符合预设聚合条件包括:
获取所述数据节点对应的数据表,并确定所述数据表的查询列;
判断所述查询列中是否存在指标列,所述指标列指涉及数据计算的列;
如果是,则判断所述数据节点符合预设聚合条件;否则,判断所述数据节点不符合预设聚合条件。
进一步地,在判断所述查询列中存在指标列之后,在判断所述数据节点符合预设聚合条件之前,所述方法还包括:
获取包含分组语法字段的数据;
判断所述包含分组语法字段的数据是否存在于所述数据节点对应的数据表中;
如果是,则判断所述数据节点符合预设聚合条件;否则,判断所述数据节点不符合预设聚合条件。
进一步地,在判断所述包含分组语法字段的数据存在于所述数据节点对应的数据表中之后,在判断所述数据节点符合预设聚合条件之前,所述方法还包括:
判断所述查询列中除指标列之外的查询列是否均包含所述分组语法字段;
如果是,则判断所述数据节点符合预设聚合条件;否则,判断所述数据节点不符合预设聚合条件。
进一步地,在将符合预设聚合条件的数据节点进行聚合之前,所述方法还包括:
获取所述分析树中标识是否能够进行数据聚合的字段;
将所述标识是否能够进行数据聚合的字段设置为能够进行数据聚合;
所述根据所述聚合后的分析树生成查询脚本包括:
读取所述聚合后的分析树中每个数据节点对应的数据表中的数据信息;
将所述数据信息写入预设模板文件,生成所述查询脚本。
另一方面,本发明提供一种查询脚本的生成装置,包括:
接收单元,用于接收输入的查询参数;
第一获取单元,用于获取用于描述数据属性的元数据;
构造单元,用于根据所述查询参数和所述元数据构造分析树,所述分析树具有多个数据节点;
判断单元,用于判断所述分析树的每个数据节点是否符合预设聚合条件;
聚合单元,用于如果所述分析树的每个数据节点符合预设聚合条件,则将符合预设聚合条件的数据节点进行聚合;
生成单元,用于根据所述聚合后的分析树生成查询脚本。
进一步地,所述分析树的数据节点与数据表对应,所述判断单元包括:第一获取模块,用于获取所述数据节点对应的数据表,并确定所述数据表的查询列;
第一判断模块,用于判断所述查询列中是否存在指标列,所述指标列指涉及数据计算的列;
所述第一判断模块,还用于如果所述查询列中存在指标列,则判断所述数据节点符合预设聚合条件;
所述第一判断模块,还用于如果所述查询列中不存在指标列,则判断所述数据节点不符合预设聚合条件。
进一步地,所述判断单元还包括:
第二获取模块,用于在判断所述查询列中存在指标列之后,在判断所述数据节点符合预设聚合条件之前,获取包含分组语法字段的数据;
第二判断模块,用于判断所述包含分组语法字段的数据是否存在于所述数据节点对应的数据表中;
所述第二判断模块,还用于如果所述包含分组语法字段的数据存在于所述数据节点对应的数据表中,则判断所述数据节点符合预设聚合条件;
所述第二判断模块,还用于如果所述包含分组语法字段的数据不存在于所述数据节点对应的数据表中,则判断所述数据节点不符合预设聚合条件。
进一步地,所述判断单元还包括:
第三判断模块,用于在判断所述包含分组语法字段的数据存在于所述数据节点对应的数据表中之后,在判断所述数据节点符合预设聚合条件之前,判断所述查询列中除指标列之外的查询列是否均包含所述分组语法字段;
所述第三判断模块,还用于如果所述查询列中除指标列之外的查询列均包含所述分组语法字段,则判断所述数据节点符合预设聚合条件;
所述第三判断模块,还用于如果所述查询列中除指标列之外的查询列不包含所述分组语法字段,则判断所述数据节点不符合预设聚合条件。
进一步地,所述装置还包括:
第二获取单元,用于获取所述分析树中标识是否能够进行数据聚合的字段;
设置单元,用于将所述标识是否能够进行数据聚合的字段设置为能够进行数据聚合;
所述生成单元包括:
读取模块,用于读取所述聚合后的分析树中每个数据节点对应的数据表中的数据信息;
写入模块,用于将所述数据信息写入预设模板文件,生成所述查询脚本。
借由上述技术方案,本发明提供的一种查询脚本的生成方法及装置,根据查询参数和元数据构造分析树,这里的分析树的数据节点以数据表的形式记录数据信息,通过判断分析树的每个数据是否符合预设聚合条件,将符合预设聚合条件的数据节点进行聚合,使得在分析树的构造过程中尽可能的将符合聚合条件的分析树提前聚合,进而根据聚合后的分析树生成查询脚本,从而避免了生成脚本时数据库分组语法内的查询列数过多,影响数据库的查询性能。与现有技术的查询脚本的生成方法相比,本发明实施例通过在生成查询脚本的过程中将符合条件的预设聚合条件的分析树提前聚合,减少了生成的查询脚本中数据库分组语法内的查询列的列数,进而提高了数据库的查询效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的一种查询脚本的生成方法流程示意图;
图2示出了本发明实施例提供的另一种查询脚本的生成方法流程示意图;
图3示出了本发明实施例提供的一种分析树的结构示意图;
图4示出了本发明实施例提供的一种查询脚本的生成装置结构示意图;
图5示出了本发明实施例提供的另一种查询脚本的生成装置结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明实施例提供了一种查询脚本的生成方法流程示意图,如图1所示,所述方法包括:
101、接收输入的查询参数。
其中,查询参数为根据数据库中的业务信息构造出来的查询参数,参数查询是指某些情况下,需要创建可以使用多次,但每次使用不同值的查询,若要创建每次使用不同值的查询,可以在查询中使用参数,即参数是在运行查询时所提供值的占位符。通过获取查询参数,以便根据查询参数及分析树生成查询脚本。
102、获取用于描述数据属性的元数据。
其中,元数据主要是描述数据的属性信息,用来支持如只是存储位置、历史数据、资料查找、文件记录等功能,例如日常生活中的图例、图书馆目录卡和名片都可以看作是元数据。在关系型数据库管理***中,元数据描述了数据的结构和意义,例如在管理、维护SQLServer或者是开发数据库应用程序的时候,我们经常要获取一些涉及到数据库架构的信息,如某个数据库中的表和视图个数以及名称、某个表上定义的索引、某个视图中的列的个数等等。
103、根据所述查询参数和所述元数据构造分析树。其中,分析树是源代码的抽象语法结构的树状表示,每个分析树可以包括多个数据节点,每个数据节点都表示源代码中的一种结构,另外,不同数据节点之间有不同的上下层次关系,如一个数据节点可以存在1个或多个子节点,也可以不存在子节点,本发明实施例不做具体限定。
另外,分析树的数据节点可以以数据表的形式记录数据信息,这里数据表可以表格的形式,如一维表或者二维表等,本发明实施例对节点记录数据信息的形式不做限定。
需要说明的是,分析树为数据库根据数据结构建立的树结构的数据分析构造的图形,在进行数据查询时需要对分析树中的数据节点进行分组聚合操作,通过对多个数据节点执行分组聚合操作能够减少查询时处理的数据量,有效的提高查询效率。
104、判断所述分析树的每个数据节点是否符合预设聚合条件。
具体判断分析树的每个数据节点是否符合预设聚合条件的步骤可以包括但不限制于如下三个条件,首先判断分析树中的数据表是否为指标表,这里的指标表为包含有指标列的数据表,如果分析树中的数据表为指标表则说明该数据表中有涉及数据计算的列,如计算平均分数,计算最高分或者最低分等查询列,然后判断包含有分组语法字段的数据是否存在于数据节点对应的数据表中,这里包含分组语法字段用于将需要分组聚合的查询列进行聚合,如果包含分组语法字段的数据是存在于数据节点对应的数据表,则说明当前数据表中包括分组函数,最后判断数据表的查询列中除了指标列之外其余的查询列是否均包含有数据库分组语法字段,如果数据表的查询列除了指标列之外其余的查询列是否均包含分组语法字段,如果是,则说明除了需要计算的查询列,数据表中其余的列均需要使用分组函数,进而判断该分析树的每个数据节点符合预设聚合条件。
这里的预设聚合条件是为了在构造分析树的过程中将分析树中符合预设聚合条件的数据节点提前进行聚合,以减少数据库分组语法中查询列过多,从而提高数据库的查询性能。
105、如果所述分析树的每个数据节点符合预设聚合条件,则将符合预设聚合条件的数据节点进行聚合。
如果判断分析树的每个数据节点符合预设聚合条件,则说明该分析树的每个数据节点是可聚合的,进一步将符合预设聚合条件的数据节点采用聚合函数进行聚合。
上述常用的聚合函数与求和函数sum、最大值函数max、最小值函数min、平均值函数avg等用于计算查询列各项数值的函数,本发明实施例对所选择的聚合函数的类型不做限定。
106、根据所述聚合后的分析树生成查询脚本。
对于本发明实施例,通过对分析树中符合预设聚合条件的数据节点进行提前聚合,通过读取聚合后的分析树中每个数据节点对应的数据表中的数据信息,将数据信息写入预设模板文件生成查询脚本,提高了通过查询脚本进行数据查询的性能。
本发明实施例提供的一种查询脚本的生成方法,根据查询参数和元数据构造分析树,这里的分析树的数据节点以数据表的形式记录数据信息,通过判断分析树的每个数据是否符合预设聚合条件,将符合预设聚合条件的数据节点进行聚合,使得在分析树的构造过程中尽可能的将符合聚合条件的分析树提前聚合,进而根据聚合后的分析树生成查询脚本,从而避免了生成脚本时数据库分组语法内的查询列数过多,影响数据库的查询性能。与现有技术的查询脚本的生成方法相比,本发明实施例通过在生成查询脚本的过程中将符合条件的预设聚合条件的分析树提前聚合,减少了生成的查询脚本中数据库分组语法内的查询列的列数,进而提高了数据库的查询效率。
本发明实施例提供了另一种查询脚本的生成方法,如图2所示,所述方法包括:
201、接收输入的查询参数。
本步骤与图1所述步骤101所述的方法相同,这里不在赘述。
202、获取用于描述数据属性的元数据
需要说明的是,本发明实施例对获取用于描述数据属性的元数据的方法不做限定,可以使用SQL Sever提供的***存储过程与***函数来获取,***存储过程与***函数在***表和元数据之间提供了一个抽象层,使得无需直接查询***表就能获得当前数据库对象的元数据。
203、根据所述查询参数和所述元数据构造分析树。
在查询脚本的生成过程中通常使用分析树的结构来表征某些数据之间的关联关系,例如可以为企业上下级部门、栏目结构、商品分类等,而目前的各种局域关系的数据库,都是以数据表的形式记录存储数据信息,因此这里的分析树的节点也是以数据表的形式记录数据信息。
示例性的,对于一个食品族谱进行讲解,如图3所示,通过类别、颜色、品种组织食品,该图中示出了以食品为根节点的分析树,将食品分为水果和肉类两大类,分别以水果和肉类为子节点,进一步根据不同颜色的水果划分为黄色的香蕉和红色的樱桃,同理根据不同种类的肉类分为牛肉和猪肉。
204、获取所述数据节点对应的数据表,并确定所述数据表的查询列。
这里的数据表可以为二维表,记录二维表中每一行成为一个记录,或称为一个元组,记录二维表中每一列成为一个字段或称为一个属性。这里的查询列为二维表中的字段或者属性。
205、判断所述查询列中是否存在指标列。
对于本发明实施例,可以通过判断数据表是否为指标表的方式来判断查询列中是否存在指标列,这里的指标表为包含有指标列的数据表,指标列指的是数据表中涉及数据计算的列,例如计算总数、平均值、取最大值或者最小值等数值的查询列。
对于本发明实施例,通过判断分析树中数据表的查询列是否存在指标列,若存在指标列则说明分析树中的数据表是指标表,进一步判断出数据表中中是否存在需要计算的指标列,若存在则说明该指标列所涉及数据计算的数值需要通过其他查询列中数值的分组聚合操作来实现。
206、如果所述查询列中存在指标列,获取包含分组语法字段的数据。
其中,分组语法字段为根据指定的规则对数据进行分组操作,即首先将一个数据集划分为若干个小区域,然后针对若干个小区域进行数据处理,例如存在类别a、b、c,每个类别对应有各自的子类以及每个子类对应有各自的数量,当执行选择类别,对类别a、b、c的数量进行分类汇总,则返回的结果是a=18、b=19、c=37。
207、判断所述包含分组语法字段的数据是否存在于所述数据节点对应的数据表中。
对于本发明实施例,判断包含分组语法字段的数据是否来数据节点对应的数据表的步骤可以通过判断包含分组语法字段的数据是否来自数据表的查询列当中,如果不是,则进一步判断是否在数据表查询列之外的其他列当中,如果是,则说明分组语法字段必然来自分析树中的数据表,本发明实施例通过判断包含分组语法字段的数据是否来自数据节点对应的数据表来判断数据表中查询列是否存在分组聚合操作。
208、如果所述包含分组语法字段的数据存在于所述数据节点对应的数据表中,判断所述查询列中除指标列之外的查询列是否均包含所述分组语法字段。
本发明实施例通过判断数据表的查询列中除了指标列之外的查询列是否均包含分组语法字段来进一步确认数据表中除了指标列以外其余的所有查询列都参与到指标列的分组聚合操作中,从而说明根据非指标列的查询类的数值采用聚合函数能够计算得到指标列的数值。
209、如果所述查询列中除指标列之外的查询列是否均包含所述分组语法字段,则判断所述数据节点符合预设聚合条件。
这里的符合预设聚合条件指的是分析树的数据节点符合上述步骤205至步骤208中所有的判断条件,才能够确定该分析树的数据节点为可聚合的,对于本发明实施例,在判断数据节点符合聚合条件后,获取分析树中标识是否能够进行数据聚合的字段,通过将标识是否能够进行数据聚合的字段设置为能够进行数据聚合,即将能够进行数据聚合的字段设置为true,同时将该分析树的所有直接数据节点的标识字段也标记为可聚合。
210、根据所述聚合后的分析树生成查询脚本。
对于本发明实施例,根据所述聚合后的分析树生成查询脚本可以通过下述方法实现,首先读取聚合后分析树中每个数据节点对应数据表中的数据信息,然后将数据信息写入预设模板文件,生成查询脚本。
当判断出分析树的数据节点为可聚合的后,通过根据标识字段将分析树中的数据节点进行提前聚合,能够减少数据库分组语法中过多的查询列,提高了数据的查询性能。
对于本发明实施例,具体的应用场景可以如下所示,但不限于此,包括:在构造查询脚本的分析树时,给出一个包含有学生姓名、数学分数、语文分数、平均分、总分属性的数据表,进一步根据查询参数和元数据构造分析树,判断分析树中数据表的查询列是否存在涉及数据计算的指标列,如平均数或者总数等,如果存在,进一步判断判断包含库分组语法字段的数据是否来自分析树中的数据表的查询列,即判断出数据表中的查询列中包括数学分数和语文分数,通过数学分数和语文分数的数值之和计算总分,通过数学分数和语文分数的平均值计算平均分,存在分组聚合操作,进一步判断分析树中数据表的查询列除了指标列之外其余的查询列是否均包含有数据库分组语法的字段,即判断出数据表中的查询列除了平均分和总分属性之外其余的查询列学生姓名、数学分数、语文分数均为分组语法的字段,最后判断出该分析树的数据节点为可聚合的,并且将该分析树的标识字段标记为可聚合,从而根据标识字段将分析树进行聚合,通过根据聚合后的分析树生成成查询脚本。
由于现有技术的数据库在生成查询脚本的过程中,在涉及到分组聚合操作时会将分组聚合操作放到最后执行,由于分组聚合操作中会将不在聚合函数中的查询列加入到数据库分组语法中,使得数据库分组语法中的查询列过多,导致数据库的查询性能不理想,对于本发明实施例提供的另一种查询脚本的生成方法,通过在生成查询脚本的过程中将符合条件的预设聚合条件的分析树的数据节点提前进行聚合,减少了生成的查询脚本中数据库分组语法内的查询列的列数,进而提高了数据库的查询效率。
进一步地,作为图1所示方法的具体实现,本发明实施例提供一种查询脚本的生成装置,该装置实施例与前述方法实施例对应,为便于阅读,本装置不在对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容,如图4所示,所述装置包括:
接收单元31,可以用于接收输入的查询参数,所述接收单元31为本装置中接收查询参数的主要功能模块,其中,查询参数为根据数据库中的业务信息构造出来的查询参数;
第一获取单元32,可以用于获取用于描述数据属性的元数据,所述第一获取单元32为本装置中获取元数据的主要功能模块,具体可以使用SQLSever提供的***存储过程与***函数来获取;
构造单元33,可以用于根据所述查询参数和所述元数据构造分析树,所述分析树具有多个数据节点,所述构造单元33为本装置中构造分析树的主要功能模块;
判断单元34,可以用于判断所述分析树的每个数据节点是否符合预设聚合条件,所述判断单元34为本装置中判断数据节点是否符合预设聚合条件的主要功能模块,该预设聚合条件为了在构造分析树的过程中将符合条件的数据节点提前进行聚合;
聚合单元35,可以用于如果所述分析树的每个数据节点符合预设聚合条件,则将符合预设聚合条件的数据节点进行聚合,所述聚合单元35为本装置中将符合预设聚合条件的数据节点进行聚合的主要功能模块,具体通过聚合函数将分析树的数据节点进行聚合;
生成单元36,可以用于根据所述聚合后的分析树生成查询脚本,所述生成单元36为本装置中生成查询脚本的主要功能模块,具体通过读取聚合后的分析树中每个数据节点对应的数据表中的数据信息,将数据信息写入预设模板文件生成查询脚本。
本发明实施例提供的一种查询脚本的生成装置,
根据查询参数和元数据构造分析树,这里的分析树的数据节点以数据表的形式记录数据信息,通过判断分析树的每个数据是否符合预设聚合条件,将符合预设聚合条件的数据节点进行聚合,使得在分析树的构造过程中尽可能的将符合聚合条件的分析树提前聚合,进而根据聚合后的分析树生成查询脚本,从而避免了生成脚本时数据库分组语法内的查询列数过多,影响数据库的查询性能。与现有技术的查询脚本的生成方法相比,本发明实施例通过在生成查询脚本的过程中将符合条件的预设聚合条件的分析树提前聚合,减少了生成的查询脚本中数据库分组语法内的查询列的列数,进而提高了数据库的查询效率。
进一步地,如图5所示,本发明实施例提供另一种查询脚本的生成装置,所述判断单元34包括:
第一获取模块341,可以用于获取所述数据节点对应的数据表,并确定所述数据表的查询列;
第一判断模块342,可以用于判断所述查询列中是否存在指标列,所述指标列指涉及数据计算的列;
所述第一判断模块342,还可以用于如果所述查询列中存在指标列,则判断所述数据节点符合预设聚合条件;
所述第一判断模块342,还可以用于如果所述查询列中不存在指标列,则判断所述数据节点不符合预设聚合条件。
进一步地,所述判断单元34还包括:
第二获取模块343,可以在判断所述查询列中存在指标列之后,在判断所述数据节点符合预设聚合条件之前,用于获取包含分组语法字段的数据;
第二判断模块344,可以用于判断所述包含分组语法字段的数据是否存在于所述数据节点对应的数据表中;
所述第二判断模块344,还可以用于如果所述包含分组语法字段的数据存在于所述数据节点对应的数据表中,则判断所述数据节点符合预设聚合条件;
所述第二判断模块344,还可以用于如果所述包含分组语法字段的数据不存在于所述数据节点对应的数据表中,则判断所述数据节点不符合预设聚合条件。
进一步地,所述判断单元34还包括:
第三判断模块345,可以在判断所述包含分组语法字段的数据存在于所述数据节点对应的数据表中之后,在判断所述数据节点符合预设聚合条件之前,用于判断所述查询列中除指标列之外的查询列是否均包含所述分组语法字段;
所述第三判断模块345,还可以用于如果所述查询列中除指标列之外的查询列均包含所述分组语法字段,则判断所述数据节点符合预设聚合条件;
所述第三判断模块345,还可以用于如果所述查询列中除指标列之外的查询列不包含所述分组语法字段,则判断所述数据节点不符合预设聚合条件。
进一步地,所述装置还包括:
第二获取单元37,可以用于获取所述分析树中标识是否能够进行数据聚合的字段;
设置单元38,可以用于将所述标识是否能够进行数据聚合的字段设置为能够进行数据聚合;
所述生成单元36包括:
读取模块361,可以用于读取所述聚合后的分析树中每个数据节点对应的数据表中的数据信息;
写入模块362,可以用于将所述数据信息写入预设模板文件,生成所述查询脚本。对于本发明实施例提供的另一种查询脚本的生成方法,通过在生成查询脚本的过程中将符合条件的预设聚合条件的分析树的数据节点提前进行聚合,减少了生成的查询脚本中数据库分组语法内的查询列的列数,进而提高了数据库的查询效率。
上述的服务器包括处理器和存储器,上述接收单元31、第一获取单元、构造单元33、判断单元34、聚合单元35和生成单元36等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来节省人力,实现提高数据库的查询性能。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM),存储器包括至少一个存储芯片。
本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序代码:接收输入的查询参数;获取用于描述数据属性的元数据;根据所述查询参数和所述元数据构造分析树,所述分析树具有多个数据节点;判断所述分析树的每个数据节点是否符合预设聚合条件;如果是,则将符合预设聚合条件的数据节点进行聚合;根据所述聚合后的分析树生成查询脚本。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flashRAM)。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (12)
1.一种查询脚本的生成方法,其特征在于,包括:
接收输入的查询参数;
获取用于描述数据属性的元数据;
根据所述查询参数和所述元数据构造分析树,所述分析树具有多个数据节点,所述分析树的数据节点以数据表的形式记录数据信息;
判断所述分析树的每个数据节点是否符合预设聚合条件,包括:判断分析树中的数据表是否为指标表,所述指标表为包含有指标列的数据表;判断包含有分组语法字段的数据是否存在于数据节点对应的数据表中,所述包含分组语法字段用于将需要分组聚合的查询列进行聚合;如果包含分组语法字段的数据是存在于数据节点对应的数据表,则说明当前数据表中包括分组函数;最后判断数据表的查询列中除了指标列之外其余的查询列是否均包含有数据库分组语法字段,如果数据表的查询列除了指标列之外其余的查询列包含了分组语法字段,则说明除了需要计算的查询列,数据表中其余的列均需要使用分组函数,进而判断该分析树的每个数据节点符合预设聚合条件;
如果是,则将符合预设聚合条件的数据节点进行聚合;
根据所述聚合后的分析树生成查询脚本。
2.根据权利要求1所述的方法,其特征在于,所述分析树的数据节点与数据表对应,所述判断所述分析树的每个数据节点是否符合预设聚合条件包括:
获取所述数据节点对应的数据表,并确定所述数据表的查询列;
判断所述查询列中是否存在指标列,所述指标列指涉及数据计算的列;
如果是,则判断所述数据节点符合预设聚合条件;否则,判断所述数据节点不符合预设聚合条件。
3.根据权利要求2所述的方法,其特征在于,在判断所述查询列中存在指标列之后,在判断所述数据节点符合预设聚合条件之前,所述方法还包括:
获取包含分组语法字段的数据;
判断所述包含分组语法字段的数据是否存在于所述数据节点对应的数据表中;
如果是,则判断所述数据节点符合预设聚合条件;否则,判断所述数据节点不符合预设聚合条件。
4.根据权利要求3所述的方法,其特征在于,在判断所述包含分组语法字段的数据存在于所述数据节点对应的数据表中之后,在判断所述数据节点符合预设聚合条件之前,所述方法还包括:
判断所述查询列中除指标列之外的查询列是否均包含所述分组语法字段;
如果是,则判断所述数据节点符合预设聚合条件;否则,判断所述数据节点不符合预设聚合条件。
5.根据权利要求2-4中任一项所述的方法,其特征在于,在将符合预设聚合条件的数据节点进行聚合之前,所述方法还包括:
获取所述分析树中标识是否能够进行数据聚合的字段;
将所述标识是否能够进行数据聚合的字段设置为能够进行数据聚合;
所述根据所述聚合后的分析树生成查询脚本包括:
读取所述聚合后的分析树中每个数据节点对应的数据表中的数据信息;
将所述数据信息写入预设模板文件,生成所述查询脚本。
6.一种查询脚本的生成装置,其特征在于,包括:
接收单元,用于接收输入的查询参数;
第一获取单元,用于获取用于描述数据属性的元数据;
构造单元,用于根据所述查询参数和所述元数据构造分析树,所述分析树具有多个数据节点,所述分析树的数据节点以数据表的形式记录数据信息;
判断单元,用于判断所述分析树的每个数据节点是否符合预设聚合条件,包括:判断分析树中的数据表是否为指标表,所述指标表为包含有指标列的数据表;判断包含有分组语法字段的数据是否存在于数据节点对应的数据表中,所述包含分组语法字段用于将需要分组聚合的查询列进行聚合;如果包含分组语法字段的数据是存在于数据节点对应的数据表,则说明当前数据表中包括分组函数;最后判断数据表的查询列中除了指标列之外其余的查询列是否均包含有数据库分组语法字段,如果数据表的查询列除了指标列之外其余的查询列包含了分组语法字段,则说明除了需要计算的查询列,数据表中其余的列均需要使用分组函数,进而判断该分析树的每个数据节点符合预设聚合条件;
聚合单元,用于如果所述分析树的每个数据节点符合预设聚合条件,则将符合预设聚合条件的数据节点进行聚合;
生成单元,用于根据所述聚合后的分析树生成查询脚本。
7.根据权利要求6所述的装置,其特征在于,所述分析树的数据节点与数据表对应,所述判断单元包括:
第一获取模块,用于获取所述数据节点对应的数据表,并确定所述数据表的查询列;
第一判断模块,用于判断所述查询列中是否存在指标列,所述指标列指涉及数据计算的列;
所述第一判断模块,还用于如果所述查询列中存在指标列,则判断所述数据节点符合预设聚合条件;
所述第一判断模块,还用于如果所述查询列中不存在指标列,则判断所述数据节点不符合预设聚合条件。
8.根据权利要求7所述的装置,其特征在于,所述判断单元还包括:
第二获取模块,用于在判断所述查询列中存在指标列之后,在判断所述数据节点符合预设聚合条件之前,获取包含分组语法字段的数据;
第二判断模块,用于判断所述包含分组语法字段的数据是否存在于所述数据节点对应的数据表中;
所述第二判断模块,还用于如果所述包含分组语法字段的数据存在于所述数据节点对应的数据表中,则判断所述数据节点符合预设聚合条件;
所述第二判断模块,还用于如果所述包含分组语法字段的数据不存在于所述数据节点对应的数据表中,则判断所述数据节点不符合预设聚合条件。
9.根据权利要求8所述的装置,其特征在于,在判断所述数据节点符合预设聚合条件之前,所述判断单元还包括:
第三判断模块,用于在判断所述包含分组语法字段的数据存在于所述数据节点对应的数据表中之后,判断所述查询列中除指标列之外的查询列是否均包含所述分组语法字段;
所述第三判断模块,还用于如果所述查询列中除指标列之外的查询列均包含所述分组语法字段,则判断所述数据节点符合预设聚合条件;
所述第三判断模块,还用于如果所述查询列中除指标列之外的查询列不包含所述分组语法字段,则判断所述数据节点不符合预设聚合条件。
10.根据权利要求7-9中任一项所述的装置,其特征在于,所述装置还包括:
第二获取单元,用于获取所述分析树中标识是否能够进行数据聚合的字段;
设置单元,用于将所述标识是否能够进行数据聚合的字段设置为能够进行数据聚合;
所述生成单元包括:
读取模块,用于读取所述聚合后的分析树中每个数据节点对应的数据表中的数据信息;
写入模块,用于将所述数据信息写入预设模板文件,生成所述查询脚本。
11.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行权利要求1至权利要求5中任意一项所述的查询脚本的生成方法。
12.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行权利要求1至权利要求5中任意一项所述的查询脚本的生成方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611204520.XA CN108241622B (zh) | 2016-12-23 | 2016-12-23 | 一种查询脚本的生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611204520.XA CN108241622B (zh) | 2016-12-23 | 2016-12-23 | 一种查询脚本的生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108241622A CN108241622A (zh) | 2018-07-03 |
CN108241622B true CN108241622B (zh) | 2022-07-05 |
Family
ID=62703983
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611204520.XA Active CN108241622B (zh) | 2016-12-23 | 2016-12-23 | 一种查询脚本的生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108241622B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109840257B (zh) * | 2018-12-15 | 2023-11-21 | 中国平安人寿保险股份有限公司 | 数据库查询方法、装置、计算机装置及可读存储介质 |
CN111782670A (zh) * | 2020-06-29 | 2020-10-16 | 中国工商银行股份有限公司 | 数据资源操作自动处理的方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101246495A (zh) * | 2008-03-21 | 2008-08-20 | 深圳国人通信有限公司 | 一种构造查询方案及使用其进行数据查询和统计的方法 |
CN105912595A (zh) * | 2016-04-01 | 2016-08-31 | 华南理工大学 | 一种关系数据库的数据起源收集方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20140046876A1 (en) * | 2010-06-29 | 2014-02-13 | Morf Dynamics Pty Ltd | System and method of providing a computer-generated response |
KR101368024B1 (ko) * | 2012-03-29 | 2014-02-27 | 주식회사 엘지씨엔에스 | 스크립트 관리 방법, 이를 실행하는 스크립트 관리 서버 및 이를 저장한 기록 매체 |
-
2016
- 2016-12-23 CN CN201611204520.XA patent/CN108241622B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101246495A (zh) * | 2008-03-21 | 2008-08-20 | 深圳国人通信有限公司 | 一种构造查询方案及使用其进行数据查询和统计的方法 |
CN105912595A (zh) * | 2016-04-01 | 2016-08-31 | 华南理工大学 | 一种关系数据库的数据起源收集方法 |
Non-Patent Citations (1)
Title |
---|
多Agent聚合模型的研究与实现;郭改改;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20141115;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN108241622A (zh) | 2018-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105183735B (zh) | 数据的查询方法及查询装置 | |
CN110019218B (zh) | 数据存储与查询方法及设备 | |
CN107491487B (zh) | 一种全文数据库架构及位图索引创建、数据查询方法、服务器及介质 | |
CN108932257B (zh) | 多维度数据的查询方法及装置 | |
CN113112208A (zh) | 一种基于三维可视化模型的电力物资仓储管理方法 | |
US20180357278A1 (en) | Processing aggregate queries in a graph database | |
US10552423B2 (en) | Semantic tagging of nodes | |
CN110895544B (zh) | 一种接口数据处理方法、装置、***及存储介质 | |
JP2022050327A (ja) | デジタルツインおよびグラフベース構造を用いたコンピュータ実装システムおよび方法 | |
CN115905630A (zh) | 一种图数据库查询方法、装置、设备及存储介质 | |
CN108241622B (zh) | 一种查询脚本的生成方法及装置 | |
CN108241620B (zh) | 查询脚本的生成方法及装置 | |
CN114297204A (zh) | 一种异构数据源的数据存储、检索方法及装置 | |
US20130124484A1 (en) | Persistent flow apparatus to transform metrics packages received from wireless devices into a data store suitable for mobile communication network analysis by visualization | |
CN110765100B (zh) | 标签的生成方法、装置、计算机可读存储介质及服务器 | |
CN108241624B (zh) | 一种查询脚本的生成方法及装置 | |
CN110019357B (zh) | 数据库查询脚本生成方法及装置 | |
CN115293243A (zh) | 数据资产智能匹配的实现方法、装置及设备 | |
US20220342887A1 (en) | Predictive query processing | |
CN108121733B (zh) | 一种数据的查询方法及装置 | |
CN111125087A (zh) | 数据的存储方法及装置 | |
CN108228604B (zh) | 基于内存对象的模型构建方法、信息查询方法及装置 | |
JP2004192657A (ja) | 情報検索システム、情報検索方法および情報検索用プログラムを記録した記録媒体 | |
CN110609926A (zh) | 数据标签存储管理方法及装置 | |
CN115455035B (zh) | 数据查询模型构建方法和计算机可读存储介质 |
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 |
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. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |