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

文档序号:21930039发布日期:2020-08-21 14:53阅读:127来源:国知局
一种数据查询方法及装置、电子设备、计算机可读存储介质与流程

本发明涉及数据查询领域,尤其涉及一种数据查询方法及装置、电子设备、计算机可读存储介质。



背景技术:

数据统计和分析,通常是产品或者运营人员提出的数据统计需求。由于数据库中的数据采用特定方式进行存储,需要专业的开发人员获取其中的数据。因此为满足上述需要,需要由开发人员根据数据库实体,使用sql(结构化查询语言,structuredquerylanguage)人工编写,用于统计和分析的sql语句。其中,对数据库中的数据进行数据统计和分析,即为对数据库中相关数据的查询。

然而这种人工编写sql语句的方式对操作人员具有较高的要求。产品或者运营相关人员并不懂编程,无法完成编写sql语句的工作,需要将编写sql语句的工作分配至软件开发人员,这无疑降低了查询效率。



技术实现要素:

鉴于上述问题,本发明实施例提供一种数据查询方法及装置、电子设备、计算机可读存储介质,以解决现有技术中,人工编写sql语句查询数据库的查询效率低以及对操作人员要求高的问题。

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

获取用户输入的查询条件以及输出字段;

将所述查询条件写入预先创建的第一结构化查询语言查询语句的第一预设位置,得到第一结构化查询语言语句;

将所述输出字段写入预先创建的第二结构化查询语言查询语句的第二预设位置,得到第二结构化查询语言语句;

根据所述第一结构化查询语言语句以及所述第二结构化查询语言语句,生成待执行结构化查询语言语句;

执行所述待执行结构化查询语言语句,得到查询结果。

可选地,将所述查询条件写入预先创建的第一结构化查询语言查询语句的第一预设位置,得到第一结构化查询语言语句的步骤包括:

查询预设数据库,确定所述查询条件对应的结构化查询语言表示;

将所述结构化查询语言表示写入所述第一结构化查询语言查询语句的第一预设位置,得到第一结构化查询语言语句。

可选地,所述查询条件包括:至少一个查询字段以及每个查询字段对应的筛选值;

将所述结构化查询语言表示写入所述第一结构化查询语言查询语句的第一预设位置的步骤包括:

将所述查询字段对应的结构化查询语言表示写入所述第一结构化查询语言查询语句的select子句中;

将所述筛选值对应的结构化查询语言表示写入所述第一结构化查询语言查询语句的where子句中。

可选地,将所述输出字段写入预先创建的第二结构化查询语言查询语句的第二预设位置,得到第二结构化查询语言语句的步骤包括:

查询预设数据库,确定所述输出字段对应的结构化查询语言表示;

将所述结构化查询语言表示写入所述第二结构化查询语言查询语句的第二预设位置,得到第二结构化查询语言语句。

可选地,将所述结构化查询语言表示写入所述第二结构化查询语言查询语句的第二预设位置的步骤包括:

将所述查询字段对应的结构化查询语言表示写入所述第二结构化查询语言查询语句的leftjoin子句中。

可选地,所述输出字段包括:多个指示固有属性的第一输出字段以及多个指示非固有属性的第二输出字段;

将所述结构化查询语言表示写入所述第二结构化查询语言查询语句的第二预设位置的步骤包括:

分别将每个所述第一输出字段对应的结构化查询语言表示写入所述第二结构化查询语言查询语句的不同leftjoin子句中;

将所有第二输出字段对应的结构化查询语言表示通过unionall的关联方式写入所述第二结构化查询语言查询语句的同一leftjoin子句中;其中,同一leftjoin子句中仅被写入第一输出字段对应的结构化查询语言表示或者所述第二输出字段对应的结构化查询语言表示。

可选地,执行所述待执行结构化查询语言语句,得到查询结果的步骤包括:

通过explain函数获取所述待执行结构化查询语言语句的数据计算量;

在所述数据计算量大于或者等于预设阈值时,将所述待执行结构化查询语言语句发送至第一平台,在所述数据计算量小于预设阈值时,将所述待执行结构化查询语言语句发送至第二平台;

接收所述第一平台或所述第二平台执行所述待执行结构化查询语言语句得到的查询结果。

可选地,在所述获取用户输入的查询条件以及输出字段的步骤之后,所述方法还包括:

创建查询任务,并添加任务属性;

所述执行所述待执行结构化查询语言语句的步骤包括;

根据所述查询任务的任务属性,执行所述待执行结构化查询语言语句。

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

获取模块,用于获取用户输入的查询条件以及输出字段;

第一生成模块,用于将所述查询条件写入预先创建的第一结构化查询语言查询语句的第一预设位置,得到第一结构化查询语言语句;

第二生成模块,用于将所述输出字段写入预先创建的第二结构化查询语言查询语句的第二预设位置,得到第二结构化查询语言语句;

第三生成模块,用于根据所述第一结构化查询语言语句以及所述第二结构化查询语言语句,生成待执行结构化查询语言语句;

执行模块,用于执行所述待执行结构化查询语言语句,得到查询结果。

可选地,所述第一生成模块包括:

第一确定单元,用于查询预设数据库,确定所述查询条件对应的结构化查询语言表示;

第一生成单元,用于将所述结构化查询语言表示写入所述第一结构化查询语言查询语句的第一预设位置,得到第一结构化查询语言语句。

可选地,所述查询条件包括:至少一个查询字段以及每个查询字段对应的筛选值;

所述第一生成单元,具体用于将所述查询字段对应的结构化查询语言表示写入所述第一结构化查询语言查询语句的select子句中;将所述筛选值对应的结构化查询语言表示写入所述第一结构化查询语言查询语句的where子句中。

可选地,所述第二生成模块包括:

第二确定单元,用于查询预设数据库,确定所述输出字段对应的结构化查询语言表示;

第二生成单元,用于将所述结构化查询语言表示写入所述第二结构化查询语言查询语句的第二预设位置,得到第二结构化查询语言语句。

可选地,所述第二生成单元,具体用于将所述查询字段对应的结构化查询语言表示写入所述第二结构化查询语言查询语句的leftjoin子句中。

可选地,所述输出字段包括:多个指示固有属性的第一输出字段以及多个指示非固有属性的第二输出字段;

所述第二生成单元,具体用于分别将每个所述第一输出字段对应的结构化查询语言表示写入所述第二结构化查询语言查询语句的不同leftjoin子句中;将所有第二输出字段对应的结构化查询语言表示通过unionall的关联方式写入所述第二结构化查询语言查询语句的同一leftjoin子句中;其中,同一leftjoin子句中仅被写入第一输出字段对应的结构化查询语言表示或者所述第二输出字段对应的结构化查询语言表示。

可选地,执行模块包括:

计算单元,用于通过explain函数获取所述待执行结构化查询语言语句的数据计算量;

执行单元,用于在所述数据计算量大于或者等于预设阈值时,将所述待执行结构化查询语言语句发送至第一平台,在所述数据计算量小于预设阈值时,将所述待执行结构化查询语言语句发送至第二平台;

接收单元,用于接收所述第一平台或所述第二平台执行所述待执行结构化查询语言语句得到的查询结果。

可选地,所述装置还包括:

任务模块,用于创建查询任务,并添加任务属性;

所述执行模块,具体用于根据所述查询任务的任务属性,执行所述待执行结构化查询语言语句。

在本发明实施的第三方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现上述数据查询方法的步骤。

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

在本发明实施的第五方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述数据查询方法。

针对在先技术,本发明具备如下优点:

本发明提供的数据查询方法,可以获取用户输入的查询条件以及输出字段;将查询条件写入预先创建的第一结构化查询语言查询语句的第一预设位置,得到第一结构化查询语言语句。通过将查询条件写入符合结构化查询语言规范的第一结构化查询语言查询语句,从而自动生成依据查询条件筛选数据的第一结构化查询语言语句。将输出字段写入预先创建的第二结构化查询语言查询语句的第二预设位置,得到第二结构化查询语言语句。通过将输出字段写入符合结构化查询语言规范的第二结构化查询语言查询语句,从而自动生成按输出字段输出数据的第二结构化查询语言语句。根据第一结构化查询语言语句以及第二结构化查询语言语句,生成待执行结构化查询语言语句;执行待执行结构化查询语言语句,得到查询结果。本发明分别通过查询条件和输出字段,生成两段结构化查询语言语句。然后拼接为待执行的结构化查询语言语句。从而实现了用于查询并按需输出的结构化查询语言语句的自动生成。通过执行自动生成的待执行的结构化查询语言语句,可以得到查询结果。相较于人工编写结构化查询语言语句进行数据查询的过程,本发明节省了大量时间,提升了查询效率;同时也降低了对操作人员的要求。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的数据查询方法的步骤流程图之一;

图2为本发明实施例提供的数据查询方法的步骤流程图之二;

图3为本发明实施例提供的数据查询方法的步骤流程图之三;

图4为本发明实施例提供的数据查询方法的步骤流程图之四;

图5为本发明实施例提供的数据查询方法的步骤流程图之五;

图6为本发明实施例提供的数据查询方法的应用界面展示图;

图7为本发明实施例提供的数据查询方法的应用架构图;

图8为本发明实施例提供的数据查询装置的结构框图之一;

图9为本发明实施例提供的数据查询装置的结构框图之二;

图10为本发明实施例提供的数据查询装置的结构框图之三;

图11为本发明实施例提供的电子设备的结构框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。

在本发明的各种实施例中,应理解,下述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

参见图1,本发明实施例提供了一种数据查询方法,该方法包括:

步骤101,获取用户输入的查询条件以及输出字段。

应当说明的是,查询条件为关键字、筛选值以及运算符号构成的固定格式的信息。例如查询页面中包括第一区域和第二区域;其中第一区域包含多个关键字;第二区域为一输入框。用户通过拖拽的方式,将第一区域中的关键字拖拽至第二区域,然后通过选择的方式,添加关于关键字的筛选值以及运算符号,从而生成查询条件。查询页面中还可以包括第三区域,该第三区域为一输入框,用于添加输出字段。可以通过拖拽的方式,将第一区域中的关键字拖拽至第三区域,从而形成输出字段。

步骤102,将查询条件写入预先创建的第一sql(结构化查询语言,structuredquerylanguage)查询语句的第一预设位置,得到第一sql语句。

应当说明的是,第一sql查询语句为符合sql语言规范的具有查询功能的语句。执行第一sql语句时,可以将预设数据库中符合查询条件的数据筛选出来。

步骤103,将输出字段写入预先创建的第二sql查询语句的第二预设位置,得到第二sql语句。

应当说明的是,第二sql查询语句为符合sql语言规范的具有查询功能的语句。执行第二sql语句时,可以将符合查询条件的数据按照输出字段输出。

步骤104,根据第一sql语句以及第二sql语句,生成待执行sql语句。

应当说明的是,通过拼接的方式将第一sql语句和第二sql语句,添加到一预设sql语句模板中,从而生成待执行sql语句,该待执行sql语句为一段可执行的sql代码。

步骤105,执行待执行sql语句,得到查询结果。

应当说明的是,查询结果为按照查询条件在预设数据库中查到的数据中,与输出字段相匹配的信息。

本发明实施例中,可以获取用户输入的查询条件以及输出字段;将查询条件写入预先创建的第一sql查询语句的第一预设位置,得到第一sql语句。通过将查询条件写入符合sql规范的第一sql查询语句,从而自动生成依据查询条件筛选数据的第一sql语句。将输出字段写入预先创建的第二sql查询语句的第二预设位置,得到第二sql语句。通过将输出字段写入符合sql规范的第二sql查询语句,从而自动生成按输出字段输出数据的第二sql语句。根据第一sql语句以及第二sql语句,生成待执行sql语句;执行待执行sql语句,得到查询结果。本发明分别通过查询条件和输出字段,生成两段sql语句。然后拼接为待执行的sql语句。从而实现了用于查询并按需输出的sql语句的自动生成。通过执行自动生成的待执行的sql语句,可以得到查询结果。相较于人工编写sql语句进行数据查询的过程,本发明节省了大量时间,提升了查询效率;同时也降低了对操作人员的要求。

图2是本发明实施例提供的另一种数据查询方法的步骤流程图,如图2所示,该方法包括:

步骤201,获取用户输入的查询条件以及输出字段。

应当说明的是,查询条件为关键字、筛选值以及运算符号构成的固定格式的信息。例如在查询页面中包括第一区域和第二区域;其中第一区域包含多个关键字;第二区域为一输入框。用户通过拖拽的方式,将第一区域中的关键字拖拽至第二区域,然后通过选择的方式,添加关于关键字的筛选值以及运算符号,从而生成查询条件。查询页面中还可以包括第三区域,该第三区域为一输入框,用于添加输出字段。可以通过拖拽的方式,将第一区域中的关键字拖拽至第三区域,从而形成输出字段。

步骤202,查询预设数据库,确定查询条件对应的sql表示。

应当说明的是,预设数据库通过表格的形式存储数据。较佳的,可以建立模型,将不同的数据表抽象为不同的实体,例如针对视频网站,用于存储视频相关数据的视频表为一实体,用于存储网站用户相关数据的用户表为另一实体。将实体的固有属性抽象为维度,例如维度可以为用户昵称、用户注册时间等,其不会随时间变化。将实体的分时段属性抽象为指标,例如用户的播放量、用户的播放时长等,其会随时间变化。

实体的名称、各维度的名称以及各指标的名称分别对应不同的sql表示,并且所有sql表示同样存储于数据库中。查询条件为涉及维度和/或指标的查询信息。查询条件对应的sql表示为查询条件中维度和/或指标对应的sql表示。

步骤203,将sql表示写入第一sql查询语句的第一预设位置,得到第一sql语句。

应当说明的是,查询条件包括:至少一个查询字段以及每个查询字段对应的筛选值;该查询字段为指标或者维度。因此将sql表示写入第一sql查询语句的第一预设位置的步骤包括:

将查询字段对应的sql表示写入第一sql查询语句的select子句中;将筛选值对应的sql表示写入第一sql查询语句的where子句中。

例如查询条件为uid中包含有1,2,3的数据;则查询字段对应的sql表示为uid,筛选值为1,2,3;则生成的第一sql语句为:

当然查询字段的数量可以为多个,即可以由多个指标和/或维度,构成查询条件。多个查询字段之间通过join的方式关联。例如查询条件为uid中包含有1,2,3的数据;并且用户品类为影视或者纪录片;则生成的第一sql语句为:

步骤204,将输出字段写入预先创建的第二sql查询语句的第二预设位置,得到第二sql语句。

应当说明的是,第二sql查询语句为符合sql语言规范的具有查询功能的语句。执行第二sql语句时,可以将符合查询条件的数据按照输出字段输出。

步骤205,根据第一sql语句以及第二sql语句,生成待执行sql语句。

应当说明的是,通过拼接的方式将第一sql语句和第二sql语句,添加到一预设sql语句模板中,从而生成待执行sql语句,该待执行sql语句为一段可执行的sql代码。

步骤206,执行待执行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语句进行数据查询的过程,本发明节省了大量时间,提升了查询效率;同时也降低了对操作人员的要求。

图3是本发明实施例提供的另一种数据查询方法的步骤流程图,如图3所示,该方法包括:

步骤301,获取用户输入的查询条件以及输出字段。

应当说明的是,查询条件为关键字、筛选值以及运算符号构成的固定格式的信息。例如在查询页面中包括第一区域和第二区域;其中第一区域包含多个关键字;第二区域为一输入框。用户通过拖拽的方式,将第一区域中的关键字拖拽至第二区域,然后通过选择的方式,添加关于关键字的筛选值以及运算符号,从而生成查询条件。查询页面中还可以包括第三区域,该第三区域为一输入框,用于添加输出字段。可以通过拖拽的方式,将第一区域中的关键字拖拽至第三区域,从而形成输出字段。

步骤302,将查询条件写入预先创建的第一sql查询语句的第一预设位置,得到第一sql语句。

应当说明的是,第一sql查询语句为符合sql语言规范的具有查询功能的语句。执行第一sql语句时,可以将预设数据库中符合查询条件的数据筛选出来。

步骤303,查询预设数据库,确定输出字段对应的sql表示。

应当说明的是,预设数据库通过表格的形式存储数据。较佳的,可以建立模型,将不同的数据表抽象为不同的实体,例如针对视频网站,用于存储视频相关数据的视频表为一实体,用于存储网站用户相关数据的用户表为另一实体。将实体的固有属性抽象为维度,例如维度可以为用户昵称、用户注册时间等,其不会随时间变化。将实体的分时段属性抽象为指标,例如用户的播放量、用户的播放时长等,其会随时间变化。

实体的名称、各维度的名称以及各指标的名称分别对应不同的sql表示,并且所有sql表示同样存储于数据库中。输出字段为维度或指标。

步骤304,将sql表示写入第二sql查询语句的第二预设位置,得到第二sql语句。

应当说明的是,将查询字段对应的sql表示写入第二sql查询语句的leftjoin子句中。

例如,输出字段为uid,则生成的第二sql语句为:

当然输出字段的数量可以为多个。较佳的,输出字段包括:多个指示固有属性的第一输出字段以及多个指示非固有属性的第二输出字段。即输出字段包括多个维度以及多个指标。针对每一输出字段生成一段sql代码,然后将生成的多段sql代码拼接,形成第二sql语句。

具体的,将查询字段对应的sql表示写入第二sql查询语句的leftjoin子句中的步骤包括:

分别将每个第一输出字段对应的sql表示写入所述第二sql查询语句的不同leftjoin子句中;将所有第二输出字段对应的sql表示通过unionall的关联方式写入所述第二sql查询语句的同一leftjoin子句中;其中,同一leftjoin子句中仅被写入第一输出字段对应的sql表示或者所述第二输出字段对应的sql表示。由于第二输出字段用于指示非固有属性,即随时间变化的指标,例如播放量、点赞数等。因此多个第二输出字段应当具有统一的时间范围,即应当统计在相同时间范围内各第二输出字段指示的数据。为减少代码量,可以先将所有第二输出字段对应的sql表示,通过unionall的关联方式进行关联。然后将关联后的结果写入第二sql查询语句的同一leftjoin子句中,从而无需将每一第二输出字段写入不同leftjoin子句中,减少了第二sql语句的代码量。

例如输出字段包括uid和注册时间,则生成的第二sql语句为:

步骤305,根据第一sql语句以及第二sql语句,生成待执行sql语句。

应当说明的是,通过拼接的方式将第一sql语句和第二sql语句,添加到一预设sql语句模板中,从而生成待执行sql语句,该待执行sql语句为一段可执行的sql代码。

步骤306,执行待执行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语句进行数据查询的过程,本发明节省了大量时间,提升了查询效率;同时也降低了对操作人员的要求。

图4是本发明实施例提供的另一种数据查询方法的步骤流程图,如图4所示,该方法包括:

步骤401,获取用户输入的查询条件以及输出字段。

应当说明的是,查询条件为关键字、筛选值以及运算符号构成的固定格式的信息。例如在查询页面中包括第一区域和第二区域;其中第一区域包含多个关键字;第二区域为一输入框。用户通过拖拽的方式,将第一区域中的关键字拖拽至第二区域,然后通过选择的方式,添加关于关键字的筛选值以及运算符号,从而生成查询条件。查询页面中还可以包括第三区域,该第三区域为一输入框,用于添加输出字段。可以通过拖拽的方式,将第一区域中的关键字拖拽至第三区域,从而形成输出字段。

步骤402,将查询条件写入预先创建的第一sql查询语句的第一预设位置,得到第一sql语句。

应当说明的是,第一sql查询语句为符合sql语言规范的具有查询功能的语句。执行第一sql语句时,可以将预设数据库中符合查询条件的数据筛选出来。

步骤403,将输出字段写入预先创建的第二sql查询语句的第二预设位置,得到第二sql语句。

应当说明的是,第二sql查询语句为符合sql语言规范的具有查询功能的语句。执行第二sql语句时,可以将符合查询条件的数据按照输出字段输出。

步骤404,根据第一sql语句以及第二sql语句,生成待执行sql语句。

应当说明的是,通过拼接的方式将第一sql语句和第二sql语句,添加到一预设sql语句模板中,从而生成待执行sql语句,该待执行sql语句为一段可执行的sql代码。

步骤405,通过explain函数获取待执行sql语句的数据计算量。

步骤406,在数据计算量大于或者等于预设阈值时,将待执行sql语句发送至第一平台;在数据计算量小于预设阈值时,将待执行sql语句发送至第二平台。

应当说明的是,第一平台和第二平台均为第三方平台。该第三方平台为具有执行sql语句功能的平台,并且第三方平台设置有数据库。执行sql语句时,在数据库中筛选数据。第三方平台可以为hive(数据仓库工具)或者impala,则第一平台为hive,第二平台为impala。即数据计算量超过预设阈值,则向hive发送待执行sql语句;数据计算量未超过预设阈值,则向impala发送待执行sql语句。

步骤407,接收第一平台或第二平台执行待执行sql语句得到的查询结果。

应当说明的是,查询结果通常包含大量数据,较佳的,还可以在接收到查询结果之后,选择预设数量的结果数据。当然也可以在生成的待执行sql语句中,添加限定查询结果数量的语句。

本发明实施例中,可以获取用户输入的查询条件以及输出字段;将查询条件写入预先创建的第一sql查询语句的第一预设位置,得到第一sql语句。通过将查询条件写入符合sql规范的第一sql查询语句,从而自动生成依据查询条件筛选数据的第一sql语句。将输出字段写入预先创建的第二sql查询语句的第二预设位置,得到第二sql语句。通过将输出字段写入符合sql规范的第二sql查询语句,从而自动生成按输出字段输出数据的第二sql语句。通过explain函数获取待执行sql语句的数据计算量。在数据计算量大于或者等于预设阈值时,将待执行sql语句发送至第一平台;在数据计算量小于预设阈值时,将待执行sql语句发送至第二平台。借由第三方平台进行处理,可以减轻数据开发的工作量。并且根据数据计算量以及不同的第三方平台的优缺点,灵活选择合适的第三方平台执行待执行sql语句,可以及时有效的从第三方平台获取查询结果。接收第一平台或第二平台执行待执行sql语句得到的查询结果。本发明分别通过查询条件和输出字段,生成两段sql语句。然后拼接为待执行的sql语句。从而实现了用于查询并按需输出的sql语句的自动生成。通过第三方平台执行自动生成的待执行的sql语句,可以快速得到查询结果。相较于人工编写sql语句进行数据查询的过程,本发明节省了大量时间,提升了查询效率;同时也降低了对操作人员的要求。

图5是本发明实施例提供的另一种数据查询方法的步骤流程图,如图5所示,该方法包括:

步骤501,获取用户输入的查询条件以及输出字段。

应当说明的是,查询条件为关键字、筛选值以及运算符号构成的固定格式的信息。例如在查询页面中包括第一区域和第二区域;其中第一区域包含多个关键字;第二区域为一输入框。用户通过拖拽的方式,将第一区域中的关键字拖拽至第二区域,然后通过选择的方式,添加关于关键字的筛选值以及运算符号,从而生成查询条件。查询页面中还可以包括第三区域,该第三区域为一输入框,用于添加输出字段。可以通过拖拽的方式,将第一区域中的关键字拖拽至第三区域,从而形成输出字段。

步骤502,创建查询任务,并添加任务属性。

应当说明的是,任务属性包括单次执行和定时执行。

步骤503,将查询条件写入预先创建的第一sql查询语句的第一预设位置,得到第一sql语句。

应当说明的是,第一sql查询语句为符合sql语言规范的具有查询功能的语句。执行第一sql语句时,可以将预设数据库中符合查询条件的数据筛选出来。

步骤504,将输出字段写入预先创建的第二sql查询语句的第二预设位置,得到第二sql语句。

应当说明的是,第二sql查询语句为符合sql语言规范的具有查询功能的语句。执行第二sql语句时,可以将符合查询条件的数据按照输出字段输出。

步骤505,根据第一sql语句以及第二sql语句,生成待执行sql语句。

应当说明的是,通过拼接的方式将第一sql语句和第二sql语句,添加到一预设sql语句模板中,从而生成待执行sql语句,该待执行sql语句为一段可执行的sql代码。

步骤506,根据查询任务的任务属性,执行待执行sql语句,得到查询结果。

应当说明的是,当创建查询任务时,用户选择的任务属性为单次执行,则仅执行一次该待执行sql语句。当创建查询任务时,用户选择的任务属性为定时执行,则周期性的在每天或每周的某一时刻执行该待执行sql语句。

本发明实施例中,可以获取用户输入的查询条件以及输出字段;创建查询任务,并添加任务属性。将查询条件写入预先创建的第一sql查询语句的第一预设位置,得到第一sql语句。通过将查询条件写入符合sql规范的第一sql查询语句,从而自动生成依据查询条件筛选数据的第一sql语句。将输出字段写入预先创建的第二sql查询语句的第二预设位置,得到第二sql语句。通过将输出字段写入符合sql规范的第二sql查询语句,从而自动生成按输出字段输出数据的第二sql语句。根据第一sql语句以及第二sql语句,生成待执行sql语句;根据查询任务,执行待执行sql语句,得到查询结果。本发明分别通过查询条件和输出字段,生成两段sql语句。然后拼接为待执行的sql语句。从而实现了用于查询并按需输出的sql语句的自动生成。通过查询任务的任务属性单次执行或者定时执行自动生成的待执行的sql语句,可以灵活得到查询结果。相较于人工编写sql语句进行数据查询的过程,本发明节省了大量时间,提升了查询效率,降低了对操作人员的要求;同时也为用户提供了更多的选择,可以根据用户需求,挑选得到查询结果的时机。

如图6所示,为本发明实施例提供的数据查询方法的应用界面展示图;例如针对视频类型网站,根据建立的模型,将不同的数据表抽象为不同的实体,即用于存储视频相关数据的视频表为一实体,用于存储网站用户相关数据的用户表为另一实体。将实体的固有属性抽象为维度,例如维度可以为用户昵称、用户注册时间等,其不会随时间变化。将实体的分时段属性抽象为指标,例如用户的播放量、用户的播放时长等,其会随时间变化。

图6中左侧区域展示各维度和各指标信息。如生产类、粉丝类、分发类、展现量、被评论量等为指标。筛选条件以及输出字段区域中的数据,可以由用户拖拽左侧区域中的各维度和各指标形成。还可以根据查询动作建立任务,如图6中的任务名称为演示-1的任务,对任务添加任务属性,可以为单次执行或者定时执行。还可以限制行数,如图6所示,将行数限制为1000;则得到的查询结果仅显示1000条数据。

图6中的筛选条件为uid中包含1,2,3;并且用户评论为影视或者纪录片;并且正片播放量在2020-02-10~2020-02-16期间超过10000的数据。输出字段为uid、认证时间以及正片播放量。

根据上述筛选条件生成的第一sql语句为:

根据上述输出字段,生成的第二sql语句为:

根据第一sql语句以及第二sql语句生成的待执行sql语句为:

本发明实施例中,分别通过查询条件和输出字段,生成两段sql语句。然后拼接为待执行sql语句。从而实现了用于查询并按需输出的sql语句的自动生成。通过执行自动生成的待执行sql语句,可以得到查询结果。相较于人工编写sql语句进行数据查询的过程,本发明节省了大量时间,提升了查询效率;同时也降低了对操作人员的要求。

如图7所示,为本发明实施例提供的数据查询方法的应用架构图,其中,ui(用户界面,userinterface)供用户输入查询条件以及输出字段。任务生成器用于根据用户的输入,生成查询任务,并将查询任务保存至mysql数据库。sql生成器根据查询任务中的查询条件以及输出字段生成待执行的hivesql。具体的,首先圈定数据范围t_filter,根据查询条件将查询到的数据保存于临时表t_filter中;根据输出字段确定维度输出以及指标输出;sql优化,将临时表中的重复数据去除;关联输出与临时表t_filter,最终生成待执行hivesql。

限流用于限制同时执行任务的数量,例如限定每个用户同时运行的任务不超过5个,但不限于此。一次性任务用于保证任务仅执行一次。定时任务用于保证在定时时间执行任务。任务恢复用于任务异常处理,通过监听任务状态判断任务是否异常。若监听到任务状态则更新任务状态;若没有监听到任务状态则重新提交任务。任务运行队列用于将任务依次提交到第三方平台hadoop,hadoop执行任务中的sql语句在hdfs(hadoop分布式文件系统,hadoopdistributedfilesystem)中获取到查询结果,并将查询结果的前预设数量的数据写入mysql数据库中。

本发明实施例,根据查询条件和输出字段,可以自动生成用于查询并按需输出的sql语句。相较于人工编写sql语句进行数据查询的过程,本发明节省了大量时间,提升了查询效率;同时也降低了对操作人员的要求。

参见图8,本发明实施例还提供了一种数据查询装置,该装置包括:

获取模块81,用于获取用户输入的查询条件以及输出字段;

第一生成模块82,用于将查询条件写入预先创建的第一sql查询语句的第一预设位置,得到第一sql语句;

第二生成模块83,用于将输出字段写入预先创建的第二sql查询语句的第二预设位置,得到第二sql语句;

第三生成模块84,用于根据第一sql语句以及第二sql语句,生成待执行sql语句;

执行模块85,用于执行待执行sql语句,得到查询结果。

可选的,参见图9,第一生成模块82包括:

第一确定单元821,用于查询预设数据库,确定查询条件对应的sql表示;

第一生成单元822,用于将sql表示写入第一sql查询语句的第一预设位置,得到第一sql语句。

可选地,查询条件包括:至少一个查询字段以及每个查询字段对应的筛选值;

第一生成单元822,具体用于将查询字段对应的sql表示写入第一sql查询语句的select子句中;将筛选值对应的sql表示写入第一sql查询语句的where子句中。

可选地,如图10所示,第二生成模块83包括:

第二确定单元831,用于查询预设数据库,确定输出字段对应的sql表示;

第二生成单元832,用于将sql表示写入第二sql查询语句的第二预设位置,得到第二sql语句。

可选地,第二生成单元832,具体用于将查询字段对应的sql表示写入第二sql查询语句的leftjoin子句中。

可选地,输出字段包括:多个指示固有属性的第一输出字段以及多个指示非固有属性的第二输出字段;

第二生成单元832,具体用于分别将每个第一输出字段对应的sql表示写入第二sql查询语句的不同leftjoin子句中;将所有第二输出字段对应的sql表示通过unionall的关联方式写入第二sql查询语句的同一leftjoin子句中;其中,同一leftjoin子句中仅被写入第一输出字段对应的sql表示或者第二输出字段对应的sql表示。

可选地,执行模块85包括:

计算单元,用于通过explain函数获取待执行sql语句的数据计算量;

执行单元,用于在数据计算量大于或者等于预设阈值时,将待执行sql语句发送至第一平台,在数据计算量小于预设阈值时,将待执行sql语句发送至第二平台;

接收单元,用于接收第一平台或第二平台执行待执行sql语句得到的查询结果。

可选地,该装置还包括:

任务模块,用于创建查询任务,并添加任务属性;

执行模块,具体用于根据查询任务的任务属性,执行待执行sql语句。

本发明实施例提供的数据查询装置能够实现图1至图5的方法实施例中数据查询方法实现的各个过程,为避免重复,这里不再赘述。

本发明的实施例中,数据查询装置包括:获取模块,用于获取用户输入的查询条件以及输出字段;第一生成模块,用于将查询条件写入预先创建的第一结构化查询语言查询语句的第一预设位置,得到第一结构化查询语言语句;第二生成模块,用于将输出字段写入预先创建的第二结构化查询语言查询语句的第二预设位置,得到第二结构化查询语言语句;第三生成模块,用于根据第一结构化查询语言语句以及第二结构化查询语言语句,生成待执行结构化查询语言语句;执行模块,用于执行待执行结构化查询语言语句,得到查询结果。本发明分别通过查询条件和输出字段,生成两段sql语句。然后拼接为待执行的sql语句。从而实现了用于查询并按需输出的sql语句的自动生成。通过执行自动生成的待执行的sql语句,可以得到查询结果。相较于人工编写sql语句进行数据查询的过程,本发明节省了大量时间,提升了查询效率;同时也降低了对操作人员的要求。

本发明实施例还提供了一种电子设备,如图11所示,包括处理器1101、通信接口1102、存储器1103和通信总线1104,其中,处理器1101,通信接口1102,存储器1103通过通信总线1104完成相互间的通信;

存储器1103,用于存放计算机程序;

处理器1101,用于执行存储器1103上所存放的程序时,实现如下步骤:

获取用户输入的查询条件以及输出字段;

将所述查询条件写入预先创建的第一sql查询语句的第一预设位置,得到第一sql语句;

将所述输出字段写入预先创建的第二sql查询语句的第二预设位置,得到第二sql语句;

根据所述第一sql语句以及所述第二sql语句,生成待执行sql语句;

执行所述待执行sql语句,得到查询结果。

上述终端提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述终端与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,简称ram),也可以包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的数据查询方法。

在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中所述的数据查询方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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