CN114238378A - 基于sql查询引擎的查询方法、装置、计算机设备及介质 - Google Patents
基于sql查询引擎的查询方法、装置、计算机设备及介质 Download PDFInfo
- Publication number
- CN114238378A CN114238378A CN202111555487.6A CN202111555487A CN114238378A CN 114238378 A CN114238378 A CN 114238378A CN 202111555487 A CN202111555487 A CN 202111555487A CN 114238378 A CN114238378 A CN 114238378A
- Authority
- CN
- China
- Prior art keywords
- screening
- condition
- sql
- level
- screening condition
- 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.)
- Pending
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
-
- 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/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- 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/284—Relational databases
Abstract
本申请提供了一种基于SQL查询引擎的查询方法、装置、计算机设备及介质。其中,根据该方法,基于用户的筛选操作,电子设备可以生成筛选表达式,并对筛选表达式进行分析,得到第一筛选条件。电子设备还可以基于筛选映射表,得到第一筛选条件对应的SQL语句,并根据该SQL语句,来利用SQL查询引擎进行查询,最终得到查询结果。通过上述方法,用户无需关注SQL底层如何生成及运行在何种数据库上面,大大降低了没有技术开发背景的用户的学习成本,扩大了SQL查询引擎的适用人群,也极大的提高了分析效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种基于SQL查询引擎的查询方法、装置、计算机设备及介质。
背景技术
在如今这个飞速发展的信息时代中,线上数据增长迅速,许多组织和企业都需要对数据进行分析管理。在对数据进行分析管理的过程中,数据查询必不可少。
对于一些SQL查询引擎来说,查询请求主要是SQL语句,因此,这些SQL查询引擎对不熟悉SQL的用户并不友好,大大缩小了SQL查询引擎的适用人群。
例如,Presto是一个开源的分布式SQL查询引擎,适用于交互式分析查询,数据量支持GB到PB字节。Presto支持在线数据查询,包括Hive,关系数据库(MySQL、Oracle)以及专有数据存储。一条Presto查询可以将多个数据源的数据进行合并,可以跨越整个组织进行分析。另外,Presto支持查询结果快速响应。Presto主要用来处理响应时间小于1秒到几分钟的场景。然而,使用Presto时的查询请求主要是SQL语句,这一点对一些并不熟悉SQL的人员(例如,数据分析人员、运营人员等)并不友好。
因此,如何扩大SQL查询引擎的适用人群,使得没有技术开发背景的用户也可以使用SQL查询引擎来进行查询是目前亟需解决的问题。
发明内容
本申请提供了一种基于SQL查询引擎的查询方法、装置、计算机设备及介质。其中,根据该方法,电子设备可以提供筛选条件以供用户选择,还可以基于筛选表达式来确定用户选择的筛选条件,并生成相应的SQL语句,将该SQL语句作为查询请求输入至SQL查询引擎,从而实现查询。通过这种方式进行查询,用户无需关注SQL底层如何生成及运行在何种数据库上面,使得没有技术开发背景的用户(例如,数据分析人员、运营人员等)对交互页面的学习成本几乎为零,极大的提高了分析效率。
第一方面,本申请提供了一种基于SQL查询引擎的查询方法。该方法可以应用于电子设备。该方法可以包括:响应于第一操作,生成筛选表达式;所述第一操作为针对数据源中的数据的筛选操作;对所述筛选表达式进行分析,得到第一筛选条件;基于筛选映射表,得到所述第一筛选条件对应的SQL语句;所述筛选映射表包括筛选条件与SQL语句的对应关系;所述筛选条件与所述数据源中的数据之间存在对应关系;所述筛选条件包括所述第一筛选条件;根据所述第一筛选条件对应的SQL语句,利用所述SQL查询引擎进行查询,并得到查询结果。
在本申请提供的方案中,用户可以通过选择筛选条件来进行查询,而无需编写SQL语句作为SQL查询引擎的查询请求。这也就意味着,用户无需关注SQL底层如何生成及运行在何种数据库上面,可以大大降低没有技术开发背景的用户对交互页面的学习成本,极大的提高了分析效率。
结合第一方面,在第一方面可能的一种实现方式中,所述基于筛选映射表,得到所述第一筛选条件对应的SQL语句之前,所述方法还包括:对所述筛选条件进行划分,得到不同级别的筛选条件;根据所述不同级别的筛选条件,生成不同级别的SQL语句;根据所述不同级别的筛选条件与所述不同级别的SQL语句的对应关系,建立所述筛选映射表。
结合第一方面,在第一方面可能的一种实现方式中,所述对所述筛选条件进行划分,具体包括:根据所述数据源的名称、所述数据源中的源表的表名、所述源表中的数据对应的字段名,以及所述数据源中的数据的范围,对所述筛选条件进行划分,得到一级筛选条件、二级筛选条件、三级筛选条件和四级筛选条件;所述一级筛选条件用于对所述数据源进行筛选;所述二级筛选条件用于对所述数据源中的源表进行筛选;所述三级筛选条件用于对所述字段名进行筛选;所述四级筛选条件用于对所述数据源中的数据的范围进行筛选;所述根据所述不同级别的筛选条件,生成不同级别的SQL语句,具体包括:针对所述一级筛选条件或所述二级筛选条件或所述三级筛选条件,生成一级SQL语句;针对所述一级筛选条件和所述二级筛选条件,生成二级SQL语句;针对所述一级筛选条件、所述二级筛选条件和所述三级筛选条件,生成三级SQL语句;针对所述四级筛选条件,生成四级SQL语句。
结合第一方面,在第一方面可能的一种实现方式中,所述基于筛选映射表,得到所述第一筛选条件对应的SQL语句,具体包括:根据所述第一筛选条件的级别,在所述筛选映射表中查找与所述第一筛选条件的级别对应的SQL语句;确定所述第一筛选条件包括的筛选标识,并将所述筛选标识对应填入所述与所述第一筛选条件的级别对应的SQL语句中,得到所述第一筛选条件对应的SQL语句;所述筛选标识用于确定所述第一筛选条件对应的SQL语句。
结合第一方面,在第一方面可能的一种实现方式中,所述根据所述第一筛选条件对应的级别,在所述筛选映射表中查找与所述第一筛选条件对应的SQL语句,具体包括:在所述第一筛选条件由所述一级筛选条件或所述二级筛选条件或所述三级筛选条件组成的情况下,在所述筛选映射表中查找一级SQL语句;在所述第一筛选条件由所述一级筛选条件和所述二级筛选条件组成的情况下,在所述筛选映射表中查找二级SQL语句;在所述第一筛选条件由所述三级筛选条件,以及所述一级筛选条件和所述二级筛选条件中的至少一种筛选条件组成的情况下,在所述筛选映射表中查找三级SQL语句;在所述第一筛选条件包括所述四级筛选条件的情况下,在筛选映射表中查找四级SQL语句。
结合第一方面,在第一方面可能的一种实现方式中,在所述响应于第一操作,生成筛选表达式之前,所述方法还包括:给所述数据源中的源表设置表名,将所述源表的表名与所述源表中的数据所对应的字段名进行关联,并建立关联表;所述关联表包括所述源表的所述表名与所述字段名之间的对应关系;所述筛选条件包括所述表名和所述字段名。
结合第一方面,在第一方面可能的一种实现方式中,所述基于筛选映射表,得到所述第一筛选条件对应的SQL语句之前,所述方法还包括:基于所述关联表,生成相应的SQL查询语句,并建立所述筛选映射表;所述筛选映射表用于对所述关联表包括的所述表名与所述字段名进行查询。
第二方面,本申请提供了一种基于SQL查询引擎的查询装置。该装置可以包括:筛选表达式确定单元,用于响应于第一操作,生成筛选表达式;所述第一操作为针对数据源中的数据的筛选操作;分析单元,用于对所述筛选表达式进行分析,得到第一筛选条件;SQL语句确定单元,用于基于筛选映射表,得到所述第一筛选条件对应的SQL语句;所述筛选映射表包括筛选条件与SQL语句的对应关系;所述筛选条件与所述数据源中的数据之间存在对应关系;所述筛选条件包括所述第一筛选条件;查询单元,用于根据所述第一筛选条件对应的SQL语句,利用所述SQL查询引擎进行查询,并得到查询结果。
结合第二方面,在第二方面可能的一种实现方式中,所述装置还可以包括:筛选映射表确定单元,用于对所述筛选条件进行划分,得到不同级别的筛选条件;根据所述不同级别的筛选条件,生成不同级别的SQL语句;根据所述不同级别的筛选条件与所述不同级别的SQL语句的对应关系,建立所述筛选映射表。
结合第二方面,在第二方面可能的一种实现方式中,所述筛选映射表确定单元,在用于所述对所述筛选条件进行划分时,具体用于:根据所述数据源的名称、所述数据源中的源表的表名、所述源表中的数据对应的字段名,以及所述数据源中的数据的范围,对所述筛选条件进行划分,得到一级筛选条件、二级筛选条件、三级筛选条件和四级筛选条件;所述一级筛选条件用于对所述数据源进行筛选;所述二级筛选条件用于对所述数据源中的源表进行筛选;所述三级筛选条件用于对所述字段名进行筛选;所述四级筛选条件用于对所述数据源中的数据的范围进行筛选;所述筛选映射表确定单元,在用于所述根据所述不同级别的筛选条件,生成不同级别的SQL语句时,具体用于:针对所述一级筛选条件或所述二级筛选条件或所述三级筛选条件,生成一级SQL语句;针对所述一级筛选条件和所述二级筛选条件,生成二级SQL语句;针对所述一级筛选条件、所述二级筛选条件和所述三级筛选条件,生成三级SQL语句;针对所述四级筛选条件,生成四级SQL语句。
结合第二方面,在第二方面可能的一种实现方式中,所述SQL语句确定单元,在用于基于筛选映射表,得到所述第一筛选条件对应的SQL语句时,具体用于:根据所述第一筛选条件的级别,在所述筛选映射表中查找与所述第一筛选条件的级别对应的SQL语句;确定所述第一筛选条件包括的筛选标识,并将所述筛选标识对应填入所述与所述第一筛选条件的级别对应的SQL语句中,得到所述第一筛选条件对应的SQL语句;所述筛选标识用于确定所述第一筛选条件对应的SQL语句。
结合第二方面,在第二方面可能的一种实现方式中,所述SQL语句确定单元,在用于所述根据所述第一筛选条件对应的级别,在所述筛选映射表中查找与所述第一筛选条件对应的SQL语句时,具体用于:在所述第一筛选条件由所述一级筛选条件或所述二级筛选条件或所述三级筛选条件组成的情况下,在所述筛选映射表中查找一级SQL语句;在所述第一筛选条件由所述一级筛选条件和所述二级筛选条件组成的情况下,在所述筛选映射表中查找二级SQL语句;在所述第一筛选条件由所述三级筛选条件,以及所述一级筛选条件和所述二级筛选条件中的至少一种筛选条件组成的情况下,在所述筛选映射表中查找三级SQL语句;在所述第一筛选条件包括所述四级筛选条件的情况下,在筛选映射表中查找四级SQL语句。
结合第二方面,在第二方面可能的一种实现方式中,所述装置还可以包括:关联表确定单元,用于给所述数据源中的源表设置表名,将所述源表的表名与所述源表中的数据所对应的字段名进行关联,并建立关联表;所述关联表包括所述源表的所述表名与所述字段名之间的对应关系;所述筛选条件包括所述表名和所述字段名。
结合第二方面,在第二方面可能的一种实现方式中,所述装置还可以包括:筛选映射表确定单元,用于基于所述关联表,生成相应的SQL查询语句,并建立所述筛选映射表;所述筛选映射表用于对所述关联表包括的所述表名与所述字段名进行查询。
第三方面,本申请提供了一种计算机设备,其特征在于,包括:处理器和存储器,所述存储器存储有计算机程序,上述处理器执行上述存储器中的计算机程序以实现执行如第一方面及第一方面可能的实现方式中任一种所描述的方法。
第四方面,本申请提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,当上述计算机程序在计算机上运行时,使得上述计算机执行如第一方面及第一方面可能的实现方式中任一种所描述的方法。
可以理解地,上述提供的第二方面提供的基于SQL查询引擎的查询装置、第三方面提供的一种计算机设备、第四方面提供的一种计算机可读存储介质均用于执行第一方面所提供的基于SQL查询引擎的查询方法。因此,其所能达到的有益效果可参考第一方面所提供的有益效果,此处不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本申请实施例提供的一种基于SQL查询引擎的查询方法的流程图;
图2为本申请实施例提供的一种基于SQL查询引擎的查询装置的示意图;
图3为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
本申请以下实施例中所使用的术语只是为了描述特定实施例的目的,而并非旨在作为对本申请的限制。如在本申请的说明书和所附权利要求书中所使用的那样,单数表达形式“一个”、“一种”、“所述”、“上述”、“该”和“这一”旨在也包括复数表达形式,除非其上下文中明确地有相反指示。还应当理解,本申请中使用的术语“和/或”是指并包含一个或多个所列出项目的任何或所有可能组合。
为了扩大SQL查询引擎(例如,Presto)的适用人群,使得更多没有技术开发背景的用户也能使用SQL查询引擎进行查询,本申请提供了一种基于SQL查询引擎的查询方法。通过该方法,基于用户的筛选操作,电子设备可以生成筛选表达式,并对筛选表达式进行分析,得到第一筛选条件。电子设备还可以基于筛选映射表,得到第一筛选条件对应的SQL语句,并根据该SQL语句,来利用SQL查询引擎进行查询,最终得到查询结果。
下面对本申请提供的一种基于SQL查询引擎的查询方法进行详细描述,如图1所示,该基于SQL查询引擎的查询方法可以包括以下步骤:
S101:响应于第一操作,电子设备生成筛选表达式。
可理解,用户可以通过在电子设备上进行第一操作来确定第一筛选条件,响应于该第一操作,电子设备可以生成筛选表达式。可理解,第一操作可以为作用在电子设备的显示屏上的操作。该第一操作可以包括但不限于鼠标点击、触控、声控等形式。
在本申请的一些实施例中,电子设备可以显示筛选条件,用户可以通过鼠标点击、触摸等方式在电子设备所显示的筛选条件中选择第一筛选条件。
在本申请的一些实施例中,电子设备可以显示多个筛选条件,本申请对电子设备显示的筛选条件的数量不作限制。
可理解,筛选表达式可以为由自然语言描述的筛选条件之间的关系。也就是说,没有技术开发背景的用户也可以理解筛选表达式所表示的含义。
示例性的,筛选表达式可以为(属于{A}OR属于{B})AND{APP首次登录}<=‘20200101’。
在本申请的一些实施例中,电子设备生成筛选表达式之后,还可以存储该筛选表达式。可理解,电子设备还可以根据调用权限的开放情况来对筛选表达式进行分类存储。例如,将筛选表达式分为第一类别筛选表达式和第二类别筛选表达式来进行存储。其中,第一类别筛选表达式的调用权限不开放,而第二类别筛选表达式的调用权限开放。也就是说,第一类别筛选表达式仅供执行第一操作的用户来调用,而不对其他用户开放,但是第二类别筛选表达式可以供其他用户调用。
在本申请的一些实施例中,用户在调用筛选表达式的过程中,可以对筛选表达式进行编辑,以更好地满足自身的查询需求。
S102:电子设备对筛选表达式进行分析,得到第一筛选条件。
可理解,电子设备可以对筛选表达式进行分析,从而得到用户从筛选条件中确定的第一筛选条件,以及该第一筛选条件之间的关系。可理解,筛选条件可以包括第一筛选条件。也就是说,可以将第一筛选条件理解为筛选条件的子集。还需要说明的是,筛选条件与数据源中的数据之间存在对应关系。
在本申请的一些实施例中,筛选表达式可以包括第一筛选条件,以及该第一筛选条件之间的关系。例如,筛选表达式中的第一筛选条件可以通过OR或者AND进行连接。其中,OR表示的是“或者”的含义,AND表示的是“和”的含义。也就是说,筛选表达式所包括的第一筛选条件之间可能存在选择关系,也可能存在联合关系。在这种情况下,电子设备可以根据筛选表达式中的OR和AND来对筛选表达式进行拆分,从而确定第一筛选条件和该第一筛选条件之间的关系。
示例性的,筛选表达式可以为上文所提及的(属于{A}OR属于{B})AND{APP首次登录}<=‘20200101’。电子设备可以根据OR和AND对该筛选表达式进行拆分,将该筛选表达式拆分为:属于{A}、属于{B}和{APP首次登录}<=‘20200101’。可理解,第一筛选条件为:属于{A}、属于{B}和{APP首次登录}<=‘20200101’。其中。属于{A}和属于{B}之间通过OR连接,这两个条件为选择关系。而{APP首次登录}<=‘20200101’与其他条件之间通过AND连接,它们属于联合关系。进一步的,电子设备可以确定该筛选表达式所表示的含义为筛选属于{A}或者属于{B},并且APP首次登录时间不晚于2020年1月1日的数据。
在本申请的一些实施例中,执行步骤S102之前,电子设备可以给数据源中的源表设置表名。可理解,源表中的数据可以与一个或多个字段名相对应。电子设备可以将设置的源表的表名与该源表中的数据所对应的字段名相关联,并建立关联表。该关联表可以包括源表的表名与字段名之间的对应关系。
示例性的,电子设备可以确定数据源中的一个源表的表名为A。该源表中的数据可以包括年龄数据、性别数据。即该源表中的数据对应的字段名为年龄和性别。电子设备可以将A与年龄,以及性别相关联。
在本申请的一些实施例中,筛选条件可以与表名和/或字段名之间存在对应关系。在这种情况下,表名和/或字段名的表示方式与筛选条件的表示方式可能并不完全一致。例如,根据上文,第一筛选条件可以为属于{A}。其中,A为源表的表名。也就是说,第一筛选条件为属于{A}所表示的含义为:表名为A的源表中的数据。再例如,筛选条件可以为年龄不大于30岁。
在本申请的一些实施例中,筛选条件可以包括表名和字段名。在这种情况下,表名和/或字段名的表示方式与筛选条件的表示方式一致。例如,筛选条件可以包括A。筛选条件为A所表示的含义为:表名为A的源表中的数据。
在本申请的一些实施例中,数据源中的源表可以包括公司的业务口径信息。在这种情况下,电子设备可以给筛选条件设置优先级。若接收到操作指令,电子设备可以首先显示优先级高的筛选条件。
S103:电子设备基于筛选映射表,得到第一筛选条件对应的SQL语句。
可理解,电子设备可以基于筛选映射表,确定第一筛选条件对应的SQL语句。其中,筛选映射表包括筛选条件与SQL语句的映射关系。
首先对SQL进行简要说明。
SQL(Structured Query Language)是具有数据操纵和数据定义等多种功能的数据库语言,这种语言具有交互性特点,能为用户提供极大的便利。可理解,SQL可以分为两个部分:数据操作语言和数据定义语言。
其中,数据操作语言(Data Manipulation Language,DML)是用于数据库操作,对数据库其中的对象和数据运行访问工作的编程语句,通常是数据库专用编程语言之中的一个子集。数据定义语言(Data Definition Language,DDL)是用于描述数据库中要存储的现实世界实体的语言。
SQL是用于执行查询的语法。但是SQL语言也包含用于更新、插入和删除记录的语法。SQL中的DML部分主要用于查询,而DDL部分主要用于更新、插入、删除等。
由于SQL查询引擎的主要功能就是查询,所以在此只简要介绍SQL用于查询的DML部分,对DDL部分不作说明。
查询和更新指令构成了SQL的DML部分。例如,SELECT-从数据库表中获取数据;UPDATE-更新数据库表中的数据;DELETE-从数据库表中删除数据;INSERT INTO-向数据库表中插入数据。
可理解,电子设备可以建立筛选条件和SQL的数据获取指令(SELECT)之间的映射关系,并生成筛选映射表。
在本申请的一些实施例中,电子设备可以基于表名和字段名之间的关联表,生成相应的SQL查询语句,从而建立筛选映射表。具体地,电子设备可以将表名和/或字段名填入SQL的数据获取指令的相应位置,从而得到可用于查询的SQL语句。
示例性的,根据上文,源表的表名A与字段名(年龄和性别)存在对应关系。电子设备可以基于该对应关系,生成针对A中的年龄的SQL查询语句。即SELECT年龄FROM A。电子设备还可以基于该对应关系,生成针对A中的性别的SQL查询语句。即SELECT性别FROM A。
示例性的,筛选条件可以包括属于{A}。电子设备可以确定属于{A}所对应的SQL语句。即SELECT A。
在本申请的一些实施例中,在执行步骤S103之前,电子设备可以对筛选条件进行划分,得到不同级别的筛选条件。然后,电子设备可以针对不同级别的筛选条件,生成相应级别的SQL语句。电子设备还可以根据不同级别的筛选条件与相应级别的SQL语句之间的对应关系,建立筛选映射表。也就是说,电子设备可以在相同级别的筛选条件和SQL语句之间建立对应关系。通过这种方式,无需针对每一个筛选条件生成相应的SQL语句,而是针对每一个级别的筛选条件生成相应级别的SQL语句,大大减少了建立映射表时所需要的数据处理过程,节约了时间,可以更高效地建立筛选条件和SQL语句之间的映射表。
在本申请的一些实施例中,电子设备可以根据数据源的名称、数据源中的源表的表名、源表中的数据对应的字段名,以及数据源中的数据的范围,对筛选条件进行划分,得到一级筛选条件、二级筛选条件、三级筛选条件和四级筛选条件。其中,一级筛选条件用于对数据源进行筛选;二级筛选条件用于对数据源中的源表进行筛选;三级筛选条件用于对字段名进行筛选;四级筛选条件用于对数据源中的数据的范围进行筛选。
在本申请的一些实施例中,电子设备可以针对一级筛选条件或二级筛选条件或三级筛选条件,生成一级SQL语句。电子设备还可以针对一级筛选条件和二级筛选条件,生成二级SQL语句。电子设备还可以针对一级筛选条件、二级筛选条件和三级筛选条件,生成三级SQL语句。电子设备还可以针对四级筛选条件,生成四级SQL语句。
可理解,电子设备还可以根据其他方式来对筛选条件进行划分。示例性的,电子设备可以对筛选条件进行划分,将表名作为一级筛选条件,将字段名作为二级筛选条件。电子设备可以根据一级筛选条件,生成一级SQL语句。即SELECT表名。电子设备可以根据二级筛选条件,生成二级SQL语句。即SELECT字段名FROM表名。
在本申请的一些实施例中,电子设备执行步骤S102,确定第一筛选条件之后,可以根据第一筛选条件的级别,在筛选映射表中查找与第一筛选条件的级别对应的SQL语句。电子设备还可以根据第一筛选条件的具体内容,以及与第一筛选条件的级别相同的SQL语句,确定第一筛选条件对应的SQL语句。
具体地,若电子设备确定的第一筛选条件为一级筛选条件或二级筛选条件或三级筛选条件,电子设备可以在筛选映射表中查找一级SQL语句。也就是说,在第一筛选条件仅为一级筛选条件、二级筛选条件和三级筛选条件中的一种的情况下,电子设备可以对应查找一级SQL语句。若电子设备确定的第一筛选条件由一级筛选条件和二级筛选条件组成,电子设备可以在筛选映射表中查找二级SQL语句。也就是说,在第一筛选条件仅包括一级筛选条件和二级筛选条件这两种类型的筛选条件的情况下,电子设备可以对应查找二级SQL语句。若电子设备确定的第一筛选条件由三级筛选条件,以及一级筛选条件和二级筛选条件中的至少一种筛选条件组成,电子设备可以在筛选映射表中查找三级SQL语句。也就是说,在第一筛选条件仅包括三级筛选条件,以及二级筛选条件和/或三级筛选条件的情况下,电子设备可以对应查找三级SQL语句。若电子设备确定的第一筛选条件包括四级筛选条件,电子设备可以对应查找四级SQL语句。
在本申请的一些实施例中,电子设备确定与第一筛选条件的级别对应的SQL语句之后,还可以确定第一筛选条件包括的筛选标识,将该筛选标识对应填入与第一筛选条件的级别对应的SQL语句中的相应位置,从而得到第一筛选条件对应的SQL语句。可理解,第一筛选条件对应的SQL语句可以作为SQL查询引擎的查询请求来进行查询,而与第一筛选条件的级别对应的SQL语句不能直接作为SQL查询引擎的查询请求来进行查询。
可理解,本申请中所提及的筛选标识可以包括数据源的名称、源表的表名、字段名、数据范围。这里所提及的数据范围可以指的是数值。
在本申请的一些实施例中,电子设备可以给筛选标识划分级别。可理解,电子设备在确定第一筛选条件包括的筛选标识的过程中,可以根据筛选标识的级别逐步确定。例如,电子设备可以将数据源的名称划分为一级筛选标识,将源表的表名划分为二级筛选标识,将字段名划分为三级筛选标识,将数据范围划分为四级筛选标识。电子设备可以首先确定第一筛选条件中是否存在一级筛选标识,然后再依次确定第一筛选条件中是否存在二级筛选标识、三级筛选标识和四级筛选标识。
示例性的,电子设备可以确定第一筛选条件为属于{A}和年龄。可理解,第一筛选条件既包括一级筛选条件,又包括二级筛选条件。电子设备可以在筛选映射表中查找二级SQL语句。即SELECT字段名FROM表名。电子设备还可以根据第一筛选条件的具体内容,确定需要筛选的表名和字段名,生成第一筛选条件所对应的SQL语句。即SELECT年龄FROM A。
在本申请的一些实施例中,电子设备执行步骤S102所确定的第一筛选条件可以包括多个级别的筛选条件。在这种情况下,电子设备可以根据该多个级别的筛选条件之间的关系,来确定该第一筛选条件对应的SQL语句。
具体地,若电子设备确定的第一筛选条件由一级筛选条件或二级筛选条件或三级筛选条件中的一种类型的筛选条件以及四级筛选条件组成,电子设备可以确定第一筛选条件中不同级别的筛选条件之间的关系,然后电子设备将从筛选映射表中查找所得的一级SQL语句和四级SQL语句根据该关系进行组合,得到与第一筛选条件的级别对应的SQL语句。
例如,若第一筛选条件中不同级别的筛选条件之间的关系为联合关系,则电子设备确定的一级SQL语句和四级SQL语句之间的关系也是联合关系。也就是说,查询请求既包括一级SQL语句对应的内容,又包括四级SQL语句对应的内容。可理解,最终得到的查询结果为分别根据一级SQL语句和四级SQL语句进行查询所得的查询结果的合集。
具体地,若电子设备确定的第一筛选条件由一级筛选条件和二级筛选条件这两种类型的筛选条件以及四级筛选条件组成,电子设备可以确定第一筛选条件中不同级别的筛选条件之间的关系,然后电子设备将从筛选映射表中查找所得的二级SQL语句和四级SQL语句根据该关系进行组合,得到与第一筛选条件的级别对应的SQL语句。
具体地,若电子设备确定的第一筛选条件由三级筛选条件、一级筛选条件和/或二级筛选条件,以及四级筛选条件组成,电子设备可以确定第一筛选条件中不同级别的筛选条件之间的关系,然后电子设备将从筛选映射表中查找所得的三级SQL语句和四级SQL语句根据该关系进行组合,得到与第一筛选条件的级别对应的SQL语句。
在本申请的一些实施例中,电子设备确定第一筛选条件所对应的SQL语句之后,还可以对该SQL语句进行检查,即判断该SQL语句是否为合理语句。例如,电子设备可以对第一筛选条件所对应的SQL语句进行语法检查。语法检查包括对SQL语句中的关键词、分隔符等进行检查。
S104:电子设备根据第一筛选条件对应的SQL语句,利用SQL查询引擎进行查询,并得到查询结果。
可理解,电子设备可以将第一筛选条件对应的SQL语句作为查询请求,利用SQL查询引擎对数据源中的数据进行查询,并得到查询结果,即查询所得的数据。该查询所得的数据即为用户筛选后所得的数据。可理解,本申请所提及的SQL查询引擎包括但不限于Presto。
在本申请的一些实施例中,查询结果可以通过表格形式显示在电子设备上。
综上所述,本申请提供的基于SQL查询引擎的查询方法可以提供筛选条件以供用户选择,还可以基于筛选表达式来确定用户选择的筛选条件,并生成相应的SQL语句,将该SQL语句作为查询请求输入至SQL查询引擎,从而实现查询。通过这种方式进行查询,用户无需关注SQL底层如何生成及运行在何种数据库上面,使得没有技术开发背景的用户(例如,数据分析人员、运营人员等)对交互页面的学习成本几乎为零,极大的提高了分析效率。
上述实施例详细阐述了本申请所提供的基于SQL查询引擎的查询方法。为了便于更好的实施上述方案,相应地,下面还提供用于配合实施的相关装置。
如图2所示,图2为本申请实施例提供的一种基于SQL查询引擎的查询装置的示意图,该基于SQL查询引擎的查询装置用于执行上述图1所示的基于SQL查询引擎的查询方法。本申请对该基于SQL查询引擎的查询装置的功能单元的划分不做限定,可以根据需要对该基于SQL查询引擎的查询装置中的各个单元进行增加、减少或合并。此外,基于SQL查询引擎的查询装置中的各个单元的操作和/或功能分别为了实现上述图1所描述的方法的相应流程,为了简洁,在此不再赘述。
图2示例性的提供了一种功能单元的划分:基于SQL查询引擎的查询装置200可以包括筛选表达式确定单元210、分析单元220、SQL语句确定单元230和查询单元240。
筛选表达式确定单元210,用于响应于第一操作,生成筛选表达式。其中,第一操作为针对数据源中的数据的筛选操作。
分析单元220,用于对筛选表达式进行分析,得到第一筛选条件。
SQL语句确定单元230,用于基于筛选映射表,得到第一筛选条件对应的SQL语句。其中,筛选映射表包括筛选条件与SQL语句的对应关系。筛选条件与数据源中的数据之间存在对应关系。筛选条件包括第一筛选条件。
查询单元240,用于根据第一筛选条件对应的SQL语句,利用SQL查询引擎进行查询,并得到查询结果。
在本申请的一些实施例中,基于SQL查询引擎的查询装置200还可以包括:关联表确定单元250。关联表确定单元250可以用于:给数据源中的源表设置表名,将源表的表名与源表中的数据所对应的字段名进行关联,并建立关联表。该关联表包括源表的表名与字段名之间的对应关系。筛选条件可以包括表名和字段名。
在本申请的一些实施例中,基于SQL查询引擎的查询装置200还可以包括:筛选映射表确定单元260。
在本申请的一些实施例中,筛选映射表确定单元260可以用于:基于关联表,生成相应的SQL查询语句,并建立筛选映射表。筛选映射表用于对关联表包括的表名与字段名进行查询。
在本申请的一些实施例中,筛选映射表确定单元260可以用于:对筛选条件进行划分,得到不同级别的筛选条件;根据不同级别的筛选条件,生成不同级别的SQL语句;根据不同级别的筛选条件与不同级别的SQL语句的对应关系,建立筛选映射表。
在本申请的一些实施例中,基于SQL查询引擎的查询装置还可以包括:存储单元和分类单元。存储单元可以用于存储筛选表达式。分类单元可以用于根据调用权限的开放情况来对筛选表达式进行分类,得到第一类别筛选表达式和第二类别筛选表达式。其中,第一类别筛选表达式的调用权限不开放,第二类别筛选表达式的调用权限开放。
参见图3,图3为本申请实施例提供的一种电子设备的结构示意图。其中,所述电子设备300可以是前述实施例中的依赖关系的基于SQL查询引擎的查询装置200。如图3所示,电子设备300包括:处理器310、通信接口320以及存储器330,所示处理器310、通信接口320以及存储器330通过内部总线340相互连接。
处理器310、通信接口320和存储器330可通过总线方式连接,也可通过无线传输等其他手段实现通信。本申请实施例以通过总线340连接为例,其中,总线340可以是外设部件互连标准(Peripheral Component Interconnect,PCI)总线或扩展工业标准结构(Extended Industry Standard Architecture,EISA)总线等。所述总线340可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
所述处理器310可以由一个或者多个通用处理器构成,例如中央处理器(CentralProcessing Unit,CPU),或者CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(Application-Specific Integrated Circuit,ASIC)、可编程逻辑器件(ProgrammableLogic Device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(ComplexProgrammable Logic Device,CPLD)、现场可编程逻辑门阵列(Field-Programmable GateArray,FPGA)、通用阵列逻辑(Generic Array Logic,GAL)或其任意组合。处理器310执行各种类型的数字存储指令,例如存储在存储器330中的软件或者固件程序,它能使电子设备300提供较宽的多种服务。
具体地,所述处理器310可以由至少一个通用处理器构成,例如中央处理器(Central Processing Unit,CPU),或者CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(Application-Specific Integrated Circuit,ASIC)、可编程逻辑器件(Programmable Logic Device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)、现场可编程逻辑门阵列(Field-Programmable Gate Array,FPGA)、通用阵列逻辑(Generic Array Logic,GAL)或其任意组合。处理器310执行各种类型的数字存储指令,例如存储在存储器330中的软件或者固件程序,它能使电子设备300提供较宽的多种服务。在本申请的一些实施例中,处理器310可以用于执行图1所示的基于SQL查询引擎的查询方法。
存储器330可以包括易失性存储器(Volatile Memory),例如随机存取存储器(Random Access Memory,RAM);存储器330也可以包括非易失性存储器(Non-VolatileMemory),例如只读存储器(Read-Only Memory,ROM)、快闪存储器(Flash Memory)、硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);存储器330还可以包括上述种类的组合。其中,存储器330可以存储有应用程序代码以及程序数据。存储器330的代码可以包括实现筛选表达式确定单元功能的代码、实现分析单元功能的代码、实现SQL语句确定单元功能的代码和实现查询单元功能的代码。可理解,筛选表达式确定单元的功能包括图2所示的筛选表达式确定单元210的功能。例如,响应于第一操作,生成筛选表达式。分析单元的功能包括图2所示的分析单元220的功能。例如,对筛选表达式进行分析,得到第一筛选条件。SQL语句确定单元的功能包括图2所示的SQL语句确定单元230的功能。例如,基于筛选映射表,得到第一筛选条件对应的SQL语句。查询单元的功能包括图2所示的查询单元240的功能。例如,根据第一筛选条件对应的SQL语句,利用SQL查询引擎进行查询,并得到查询结果。
在本申请的一些实施例中,存储器330的代码还可以包括实现关联表确定单元功能的代码和实现筛选映射表确定单元功能的代码。可理解,关联表确定单元的功能包括图2所示的关联表确定单元250的功能。例如,给数据源中的源表设置表名,将源表的表名与源表中的数据所对应的字段名进行关联,并建立关联表。筛选映射表确定单元的功能包括图2所示的筛选映射表确定单元260的功能。例如,基于关联表,生成相应的SQL查询语句,并建立筛选映射表。
在本申请的一些实施例中,存储器330还可以包括存储单元。存储单元可以用于存储筛选表达式。
可理解,存储器330的代码具体可用于执行前述实施例中的步骤S101-步骤S104,在此不再赘述。
通信接口320可以为有线接口(例如以太网接口),可以为内部接口(例如高速串行计算机扩展总线(Peripheral Component Interconnect express,PCIe)总线接口)、有线接口(例如以太网接口)或无线接口(例如蜂窝网络接口或使用无线局域网接口),用于与其他设备或模块进行通信。
需要说明的,图3仅仅是本申请实施例的一种可能的实现方式,实际应用中,所述电子设备还可以包括更多或更少的部件,这里不作限制。关于本申请实施例中未示出或未描述的内容,可参见前述图1所述实施例中的相关阐述,这里不再赘述。图3所示的电子设备还可以是多个计算节点构成的计算机集群,本申请不作具体限定。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在处理器上运行时,图1所示的方法流程得以实现。
本申请实施例还提供一种计算机程序产品,当所述计算机程序产品在处理器上运行时,图1所示的方法流程得以实现。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(Digital Subscriber Line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质(例如,高密度数字视频光盘(Digital Video Disc,DVD)、或者半导体介质。半导体介质可以是SSD。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种基于SQL查询引擎的查询方法,其特征在于,应用于电子设备,所述方法包括:
响应于第一操作,生成筛选表达式;所述第一操作为针对数据源中的数据的筛选操作;
对所述筛选表达式进行分析,得到第一筛选条件;
基于筛选映射表,得到所述第一筛选条件对应的SQL语句;所述筛选映射表包括筛选条件与SQL语句的对应关系;所述筛选条件与所述数据源中的数据之间存在对应关系;所述筛选条件包括所述第一筛选条件;
根据所述第一筛选条件对应的SQL语句,利用所述SQL查询引擎进行查询,并得到查询结果。
2.如权利要求1所述的方法,其特征在于,所述基于筛选映射表,得到所述第一筛选条件对应的SQL语句之前,所述方法还包括:
对所述筛选条件进行划分,得到不同级别的筛选条件;
根据所述不同级别的筛选条件,生成不同级别的SQL语句;
根据所述不同级别的筛选条件与所述不同级别的SQL语句的对应关系,建立所述筛选映射表。
3.如权利要求2所述的方法,其特征在于,所述对所述筛选条件进行划分,具体包括:
根据所述数据源的名称、所述数据源中的源表的表名、所述源表中的数据对应的字段名,以及所述数据源中的数据的范围,对所述筛选条件进行划分,得到一级筛选条件、二级筛选条件、三级筛选条件和四级筛选条件;所述一级筛选条件用于对所述数据源进行筛选;所述二级筛选条件用于对所述数据源中的源表进行筛选;所述三级筛选条件用于对所述字段名进行筛选;所述四级筛选条件用于对所述数据源中的数据的范围进行筛选;
所述根据所述不同级别的筛选条件,生成不同级别的SQL语句,具体包括:
针对所述一级筛选条件或所述二级筛选条件或所述三级筛选条件,生成一级SQL语句;
针对所述一级筛选条件和所述二级筛选条件,生成二级SQL语句;
针对所述一级筛选条件、所述二级筛选条件和所述三级筛选条件,生成三级SQL语句;
针对所述四级筛选条件,生成四级SQL语句。
4.如权利要求2或3所述的方法,其特征在于,所述基于筛选映射表,得到所述第一筛选条件对应的SQL语句,具体包括:
根据所述第一筛选条件的级别,在所述筛选映射表中查找与所述第一筛选条件的级别对应的SQL语句;
确定所述第一筛选条件包括的筛选标识,并将所述筛选标识对应填入所述与所述第一筛选条件的级别对应的SQL语句中,得到所述第一筛选条件对应的SQL语句;所述筛选标识用于确定所述第一筛选条件对应的SQL语句。
5.如权利要求4所述的方法,其特征在于,所述根据所述第一筛选条件对应的级别,在所述筛选映射表中查找与所述第一筛选条件对应的SQL语句,具体包括:
在所述第一筛选条件由所述一级筛选条件或所述二级筛选条件或所述三级筛选条件组成的情况下,在所述筛选映射表中查找一级SQL语句;
在所述第一筛选条件由所述一级筛选条件和所述二级筛选条件组成的情况下,在所述筛选映射表中查找二级SQL语句;
在所述第一筛选条件由所述三级筛选条件,以及所述一级筛选条件和所述二级筛选条件中的至少一种筛选条件组成的情况下,在所述筛选映射表中查找三级SQL语句;
在所述第一筛选条件包括所述四级筛选条件的情况下,在筛选映射表中查找四级SQL语句。
6.如权利要求1所述的方法,其特征在于,在所述响应于第一操作,生成筛选表达式之前,所述方法还包括:
给所述数据源中的源表设置表名,将所述源表的表名与所述源表中的数据所对应的字段名进行关联,并建立关联表;所述关联表包括所述源表的所述表名与所述字段名之间的对应关系;所述筛选条件包括所述表名和所述字段名。
7.如权利要求6所述的方法,其特征在于,所述基于筛选映射表,得到所述第一筛选条件对应的SQL语句之前,所述方法还包括:
基于所述关联表,生成相应的SQL查询语句,并建立所述筛选映射表;所述筛选映射表用于对所述关联表包括的所述表名与所述字段名进行查询。
8.一种基于SQL查询引擎的查询装置,其特征在于,所述装置包括用于执行如权利要求1至7任一权利要求所述的方法的单元。
9.一种计算机设备,其特征在于,包括:处理器和存储器,所述存储器存储有计算机程序,所述处理器执行所述存储器中的计算机程序以实现如权利要求1至7任一权利要求所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,当所述计算机程序在计算机上运行时,使得所述计算机执行如权利要求1至7任一权利要求所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111555487.6A CN114238378A (zh) | 2021-12-17 | 2021-12-17 | 基于sql查询引擎的查询方法、装置、计算机设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111555487.6A CN114238378A (zh) | 2021-12-17 | 2021-12-17 | 基于sql查询引擎的查询方法、装置、计算机设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114238378A true CN114238378A (zh) | 2022-03-25 |
Family
ID=80758615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111555487.6A Pending CN114238378A (zh) | 2021-12-17 | 2021-12-17 | 基于sql查询引擎的查询方法、装置、计算机设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114238378A (zh) |
-
2021
- 2021-12-17 CN CN202111555487.6A patent/CN114238378A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102591421B1 (ko) | 의도 추천 방법, 장치, 기기 및 저장매체 | |
US8108367B2 (en) | Constraints with hidden rows in a database | |
CN108038222B (zh) | 用于信息系统建模和数据访问的实体-属性框架的系统 | |
WO2017076263A1 (zh) | 融合知识库处理方法和装置及知识库管理系统、存储介质 | |
US9390176B2 (en) | System and method for recursively traversing the internet and other sources to identify, gather, curate, adjudicate, and qualify business identity and related data | |
US10942926B2 (en) | Identification, and query, of semantically-related database tables | |
US10296505B2 (en) | Framework for joining datasets | |
US20220035847A1 (en) | Information retrieval | |
KR101355273B1 (ko) | 컴퓨팅 시스템 및 그 실행 제어 방법과, 그 실행 제어 프로그램을 기록한 기록 매체 | |
US20200342029A1 (en) | Systems and methods for querying databases using interactive search paths | |
US11615076B2 (en) | Monolith database to distributed database transformation | |
US9158599B2 (en) | Programming framework for applications | |
CN108664509A (zh) | 一种即席查询的方法、装置及服务器 | |
US9984108B2 (en) | Database joins using uncertain criteria | |
CN110109951B (zh) | 一种关联查询的方法、数据库应用系统及服务器 | |
CN110874366A (zh) | 数据处理、查询方法和装置 | |
US11847121B2 (en) | Compound predicate query statement transformation | |
CN115543428A (zh) | 一种基于策略模板的模拟数据生成方法和装置 | |
CN114238378A (zh) | 基于sql查询引擎的查询方法、装置、计算机设备及介质 | |
CN113779068A (zh) | 数据查询方法、装置、设备及存储介质 | |
CN113221528A (zh) | 基于openEHR模型的临床数据质量评估规则的自动生成与执行方法 | |
CN112596719A (zh) | 一种生成前后端代码的方法和系统 | |
CN111143322A (zh) | 一种数据标准治理系统及方法 | |
CN112783758A (zh) | 测试案例库与特征库生成方法、设备及存储介质 | |
CN116680299B (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 |