CN112364051B - 一种数据查询方法及装置 - Google Patents

一种数据查询方法及装置 Download PDF

Info

Publication number
CN112364051B
CN112364051B CN202011338416.6A CN202011338416A CN112364051B CN 112364051 B CN112364051 B CN 112364051B CN 202011338416 A CN202011338416 A CN 202011338416A CN 112364051 B CN112364051 B CN 112364051B
Authority
CN
China
Prior art keywords
field
target
calculation
aliases
information
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
Application number
CN202011338416.6A
Other languages
English (en)
Other versions
CN112364051A (zh
Inventor
张晓锋
郑灿双
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN202011338416.6A priority Critical patent/CN112364051B/zh
Publication of CN112364051A publication Critical patent/CN112364051A/zh
Application granted granted Critical
Publication of CN112364051B publication Critical patent/CN112364051B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/242Query formulation
    • G06F16/2433Query languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/279Recognition of textual entities
    • G06F40/284Lexical analysis, e.g. tokenisation or collocates

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Linguistics (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • General Health & Medical Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请公开了一种数据查询方法及装置,所述方法包括:接收包括目标数据对应的目标字段别名的数据查询指令;获取目标字段别名对应的目标语句,基于预设分隔符对目标语句进行切分,得到第一数量个元字符;对元字符进行词法分析,生成第二数量个初始字符组;基于预设运算函数对初始字符组进行拼接处理,得到第三数量个目标字符组;对目标字符组进行字段识别,得到目标语句的目标字段名信息;利用目标字段名信息确定与目标字段别名对应的目标标准字段名;基于目标标准字段名查询目标数据。利用本申请实施例提供的技术方案可以提升识别出的字段别名和标准字段名的精准性,进而提高数据查询的准确性。

Description

一种数据查询方法及装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据查询方法及装置。
背景技术
随着计算机技术及数据库的发展,SQL(Structure Query Languge,结构化查询语言)作为一种数据库专用的计算机编程语言得到了广泛应用。
目前,在利用SQL语句查询数据时,常常是正则表达式匹配的方式从用户输入SQL语句中获取查询的标准字段名和字段别名,但现有的结合正则表达式识别标准字段名和字段别名常常会出现字符切分匹配错误,无法全面的识别出SQL语句的标准字段名和字段别名,导致数据查询时,无法准确的查询到数据。因此,需要提供更可靠或更有效的方案。
发明内容
本申请提供了一种数据查询方法及装置,可以提升识别出的字段别名和标准字段名的精准性,进而提高数据查询的准确性。
一方面,本申请提供了一种数据查询方法,所述方法包括:
接收数据查询指令,所述数据查询指令包括目标数据对应的目标字段别名;
获取所述目标字段别名对应的目标语句,基于预设分隔符对所述目标语句进行切分,得到第一数量个元字符;
对所述第一数量个元字符进行词法分析,生成第二数量个初始字符组;
基于预设运算函数对所述第二数量个初始字符组进行拼接处理,得到第三数量个目标字符组;
对所述第三数量个目标字符组进行字段识别,得到所述目标语句的目标字段名信息,所述目标字段名信息包括一一对应的字段别名和标准字段名;
根据所述目标字段名信息确定与所述目标字段别名对应的目标标准字段名;
基于所述目标标准字段名查询所述目标数据。
可选的,所述方法还包括:
响应于计算字段创建指令,展示计算字段编辑页面,所述计算字段编辑页面包括计算字段编辑区域,以及第一已有字段信息,所述第一已有字段信息为所述字段信息中字段别名或所述字段注释信息中的字段中文名;
响应于基于所述第一已有字段信息触发的字段选取指令,将选取的字段输入所述计算字段编辑区域;
响应于第一目标运算函数的输入指令,将所述第一目标运算函数输入所述计算字段编辑区域;
响应于计算字段确认指令,获取所述计算字段编辑区域内的第一计算字段,所述第一计算字段为根据所述选取的字段和所述第一目标运行函数生成的;
基于所述第一计算字段更新所述字段信息。
可选的,所述方法还包括:
响应于新增计算字段指令,展示新增计算字段编辑页面,所述新增计算字段编辑页面包括新增计算字段编辑区域和包括所述第一计算字段的第二已有字段信息;
响应于基于所述第二已有字段信息触发的计算字段选取指令,将选取的计算字段输入所述新增计算字段编辑区域;
响应于第二目标运算函数的输入指令,将所述第二目标运算函数输入所述新增计算字段编辑区域;
响应于新增计算字段确认指令,获取所述新增计算字段编辑区域内的第二计算字段,所述第二计算字段为根据所述选取的计算字段和所述第二目标运行函数生成的;
基于所述第二计算字段更新所述字段信息。
另一方面提供了一种数据查询装置,所述装置包括:
数据查询指令接收模块,用于接收数据查询指令,所述数据查询指令包括目标数据对应的目标字段别名;
目标语句获取模块,用于获取所述目标字段别名对应的目标语句;
目标语句切分模块,用于基于预设分隔符对所述目标语句进行切分,得到第一数量个元字符;
词法分析模块,用于对所述第一数量个元字符进行词法分析,生成第二数量个初始字符组;
拼接处理模块,用于基于预设运算函数对所述第二数量个初始字符组进行拼接处理,得到第三数量个目标字符组;
字段识别模块,用于对所述第三数量个目标字符组进行字段识别,得到所述目标语句的目标字段名信息,所述目标字段名信息包括一一对应的字段别名和标准字段名;
目标标准字段名确定模块,用于根据所述目标字段名信息确定与所述目标字段别名对应的目标标准字段名;
第一目标数据查询模块,用于基于所述目标标准字段名查询所述目标数据。
另一方面提供了一种数据查询设备,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如上述的数据查询方法。
另一方面提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如上述的数据查询方法。
本申请提供的数据查询方法及装置,具有如下技术效果:
本申请在数据查询过程中,通过预设分隔符对查询字段(目标字段别名)对应的原始SQL语句(目标语句)进行切分,并结合词法分析和预设运算函数对切分得到的元字符进行拼接,可以有效保证字段字符划分的准确性,以提升识别出的字段别名和标准字段名的精准性,进而可以准确确定出需要查询的数据的目标标准字段名,并基于该目标标准字段名准确查询到目标数据。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案和优点,下面将对实施例或现有技术描述中所需要使用的附图作简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它附图。
图1是本申请实施例提供的一种数据查询系统的示意图;
图2是本申请实施例提供的一种数据查询方法的流程示意图;
图3是本申请实施例提供的一种字段信息创建页面的示意图;
图4是本申请实施例提供的一种展示有字段信息的字段信息创建页面的示意图;
图5是本申请实施例提供的一种计算字段编辑页面的示意图;
图6是本申请实施例提供的一种新增计算字段编辑页面的示意图;
图7是本申请实施例提供的一种数据查询界面的示意图;
图8是本申请实施例提供的实对所述第三数量个目标字符组进行字段识别,得到所述目标语句的目标字段名信息的流程示意图;
图9是本申请实施例提供的另一种数据查询方法的流程示意图;
图10是本申请实施例提供的一种数据查询装置的结构示意图;
图11是本申请实施例提供的一种实现数据查询方法的服务器的硬件结构框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或服务器不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
请参阅图1,图1是本申请实施例提供的一种数据查询系统的示意图,如图1所示,该系统可以包括终端01、服务器02和数据库03。
本说明书实施例中,终端01可以用于面向用户提供触发数据查询指令的数据查询页面。可选的,终端01可以包括智能手机、台式计算机、平板电脑、笔记本电脑、智能音箱、数字助理、增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备、智能可穿戴设备等类型的实体设备。也可以包括运行于上述实体设备上的软体,例如应用程序、网站等。
本说明书实施例中,服务器02可以用于接收终端01发送的数据查询指令,并基于该数据查询指令进行数据查询处理。可选的,服务器02可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(ContentDeliveryNetwork,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器。
本说明书实施例中,数据库(Database),可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。可选的,数据库03可以是关系型数据库,也可以为非关系型数据库。
在实际应用中,服务器02在数据查询处理过程中,可以结合具体的数据查询需求从数据03获取相应的数据。
本说明书实施例中,上述终端、服务器和数据库可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
此外,需要说明的是,上述图1对应的系统架构仅仅是本说明书实施例提供的一种数据查询系统的架构,在实际应用中,还可以包括其他系统架构。例如,数据查询处理也可以在终端侧实现等。
本申请实施例涉及的系统可以是由客户端、多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)通过网络通信的形式连接形成的分布式系统。
以分布式系统为区块链系统为例,由多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)和客户端形成,节点之间形成组成的点对点(P2P,Peer To Peer)网络,P2P协议是一个运行在传输控制协议(TCP,Transmission Control Protocol)协议之上的应用层协议。在分布式系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层。
以下介绍本申请一种数据查询方法,图2是本申请实施例提供的一种数据查询方法的流程示意图,本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或服务器产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境)。具体的如图2所示,所述方法可以包括:
S201:接收数据查询指令。
本说明书实施例中,数据查询指令可以包括目标数据对应的目标字段别名。可选的,目标数据可以为需要查询的一个或多个数据。相应的,目标数据对应的目标字段别名可以包括一个或多个字段别名。本说明书实施例中,多个为至少两个。
在实际应用中,某一数据可以对应一个数据名称或多个数据名称,可选的,一个数据的数据名称可以包括字段中文名和非字段中文名,其中,字段中文名往往是是为了便于用户识别该数据。非字段中文名可以包括字段别名和标准字段名。其中,标准字段名可以为数据在数据库中的名称。在实际应用中,显示查询结果时,数据库会显示每个SELECT后面指定的输出列,在有些情况下,显示的列的名称(标准字段名)会很长或者名称不够直观,这时可以指定列的别名(即字段别名)。
本说明书实施例中,在进行数据查询之前可以预先构建可查询数据的字段信息,相应的,上述方法还可以包括:
响应于在字段信息创建页面触发的对目标语句的解析指令,解析所述目标语句,得到所述目标语句中的字段别名;
创建包括所述目标语句中的字段别名的字段信息;
展示所述字段信息。
本说明书实施例中,目标语句可以为SQL语句,在一个具体的实施例中,如图3所示,图3是本申请实施例提供的一种字段信息创建页面的示意图,可选的,该字段信息创建页面可以包括可查询数据对应的文件夹、表中文名、数据库名和目标语句(SQL语句)的输入区域,以及目标语句的解析触发区域。具体的,用户可以在该字段信息创建页面输入目标语句,并通过点击解析触发区域等触发方式来触发对目标语句的解析指令。相应的,响应于该解析指令,可以执行目标语句的解析,得到目标语句中的字段别名;并基于该字段别名创建字段信息。
在另一个可选的实施例中,上述字段信息还可以包括与所述目标语句中的字段别名一一对应的字段注释编辑区域,上述方法还包括:
响应于字段注释确认指令,获取所述字段注释确认指令对应的字段注释编辑区域的字段注释信息;
基于所述字段注释信息更新所述字段信息。
本说明书实施例中,字段注释编辑区域可以包括字段中文名添加、字段类型添加、备注添加、删除字段等操作的区域,具体的可以结合实际应用需求进行配置。相应的,字段注释信息可以包括但不限于字段中文名、字段类型、备注等。
在一个具体的实施例中,如图4所示,图4是本申请实施例提供的一种展示有字段信息的字段信息创建页面的示意图,其中,字段信息中的字段名即字段别名。用户可以结合实际应用需求为字段名添加字段中文名、字段类型。备注信息、或对某一行字段信息进行删除、上移、下移等操作,以更好的完整字段信息。
在一个可选的实施例中,为了应对各种查询需求,上述方法还可以包括:
响应于计算字段创建指令,展示计算字段编辑页面,所述计算字段编辑页面包括计算字段编辑区域,以及第一已有字段信息,所述第一已有字段信息为所述字段信息中字段别名或所述字段注释信息中的字段中文名;
响应于基于所述第一已有字段信息触发的字段选取指令,将选取的字段输入所述计算字段编辑区域;
响应于第一目标运算函数的输入指令,将所述第一目标运算函数输入所述计算字段编辑区域;
响应于计算字段确认指令,获取所述计算字段编辑区域内的第一计算字段,所述第一计算字段为根据所述选取的字段和所述第一目标运行函数生成的;
基于所述第一计算字段更新所述字段信息。
本说明书实施例中,第一计算字段可以为基于已有的非标准字段名构建的计算字段,本说明书实施例中,非标准字段名可以包括字段别名和字段中文名。
本说明书实施例中,终端侧可以提供可供用户触发计算字段创建指令的触发页面,相应的,在用户触发计算字段创建指令之后,可以展示计算字段编辑页面,以便用户根据实际需求进行计算字段的编辑。在一个具体的实施例中,如图5所示,图5是本申请实施例提供的一种计算字段编辑页面的示意图。从图5中可见,用户可以根据需求结合已有字段(即第一已有字段信息)来编辑计算字段,可选的,用户可以直接点击已有字段中非标准字段名(字段中文名或字段别名)来选取字段;一般的,为了便于用户识别,可以将数据对应的字段中文名显示在已有字段中。可选的,用户也可以通过输入非标准字段名从大量已有字段中选取需要的字段,并结合输入的第一目标运算函数,生成第一计算字段。
本说明书实施例中,更新到目标语句的字段信息中的第一计算字段可以作为一个新的字段信息,供后续查询使用。
本说明书实施例中,结合包括非标准字段名的字段信息,可以向用户提供计算字段的编辑功能,以更灵活,更全面的应对后续的查询需求。
在一个可选的实施例中,为了更好的应对各种查询需求,可以支持基于计算字段编辑计算字段的功能,相应的,上述方法还可以包括:
响应于新增计算字段指令,展示新增计算字段编辑页面,所述新增计算字段编辑页面包括新增计算字段编辑区域和包括所述第一计算字段的第二已有字段信息;
响应于基于所述第二已有字段信息触发的计算字段选取指令,将选取的计算字段输入所述新增计算字段编辑区域;
响应于第二目标运算函数的输入指令,将所述第二目标运算函数输入所述新增计算字段编辑区域;
响应于新增计算字段确认指令,获取所述新增计算字段编辑区域内的第二计算字段,所述第二计算字段为根据所述选取的计算字段和所述第二目标运行函数生成的;
基于所述第二计算字段更新所述字段信息。
本说明书实施例中,第一目标运算函数和第二目标运算函数可以为用户结合实际需求选取的运算符和/或SQL函数。
本说明书实施例中,第二已有字段信息还可以包括字段信息中的字段别名和字段中文名。具体的,第二计算字段可以为基于已有的计算字段构建的计算字段。
本说明书实施例中,终端侧可以提供可供用户触发新增计算字段指令的触发页面,相应的,在用户触发新增计算字段指令之后,可以展示新增计算字段编辑页面,以便用户根据实际需求进行计算字段的编辑。在一个具体的实施例中,如图6所示,图6是本申请实施例提供的一种新增计算字段编辑页面的示意图。从图6中可见,用户可以根据需求结合已有字段(即第二已有字段信息)中的计算字段来编辑新的计算字段,可选的,用户可以直接点击已有字段中的计算字段来选取字段;可选的,用户也可以通过计算字段从大量已有字段中选取需要的计算字段,并结合输入的第二目标运算函数,生成第二计算字段。
本说明书实施例中,更新到目标语句的字段信息中的第二计算字段可以作为一个新的字段信息,供后续查询使用。
本说明书实施例中,结合构建的计算字段,可以向用户提供使用计算字段编辑新的计算字段的功能,以更灵活,更全面的应对后续的查询需求。
在实际应用中,终端侧可以提供数据查询界面,在一个可选的实施例中,如图7所示,图7是本申请实施例提供的一种数据查询界面的示意图;该数据查询界面中可以包括可查询数据的字段信息(以下简称查询字段信息),该查询字段信息中包括可查询数据的非标准字段名,可选的,该非标准字段名可以为可查询数据对应的字段别名,可选的,该非标准字段名也可以为字段中文名;每一可查询数据对应的字段中文名和字段别名之间一一对应。可选的,该查询字段信息可折叠可展开。在展开状态下,用户可以结合需求通过点击、拖动等触发方式选取至少一个字段别名或至少一个字段中文名。
可选的,该数据查询界面还可以包括字段搜索区域,相应的,用户可以在字段搜索区域通过输入需要查询数据的字段的字段中文名或字段别名来选取字段信息中相应的字段。
进一步的,在用户选取完需要查询的数据的字段别名或字段中文名之后,可以通过点击查询触发按钮等方式来触发数据查询指令。
本说明书实施例中,通过预先构建包括字段别名、字段中文名、计算字段的字段信息,可以更好的满足用户的查询需求,提供了有力的数据支持。
S203:获取所述目标字段别名对应的目标语句,基于预设分隔符对所述目标语句进行切分,得到第一数量个元字符。
在实际应用中,数据库中是结合标准字段名来存储数据的,由于在数据查询时,查询指令中的字段名是字段别名;相应的,本说明书实施例中,可以获取目标字段别名对应的目标语句,并通过对目标语句进行字段识别,来确定目标字段别名对应的目标标准字段名。
本说明书实施例中,目标语句可以为原始的SQL查询语句,在一个具体的实施例中,可以先基于预设分隔符对所述目标语句进行切分,得到第一数量个元字符。本说明书实施例中,元字符可以为基于预设分隔符切分后得到的最小单位的字符。具体的,预设分隔符可以包括至少一个数据库所对应的分隔符。可选的,可以结合实际应用需求,将需要查询的数据所在的全部数据库的分割分隔符作为上述预设分隔符。
在一个具体的实施例中,预设分隔符可以包括但不限于:
″<=>″,″\r\n″,″!=″,″>=″,″<=″,″<>″,″<<″,″>>″,″:=″,″\\″,″&&″,″||″,″:=″,″/*″,″*/″,″--″,″>″,″<″,″|″,″=″,″^″,″(″,″)″,″\t″,″\n″,″′″,″\″″,″`″,″,″,″@″,″″,″+″,″-″,″*″,″/″,″;″
在一个具体的实施例中,假设目标语句为:
Select user_id,user_name,user_id>100,log_times>20\n from t_users
相应的,该目标语句对应的第一数量个元字符依次为:[Select]、[user_id]、[,]、[user_name]、[,]、[user_id]、[>]、[100]、[,]、[log_times]、[>]、[20]、[\]、[n]、[from]、[t_users]
此外,需要说明的是,上述仅仅是为了便于区分不同元字符,在每个元字符外添加中括号,在实际应用中,元字符并不包括中括号。
S205:对所述第一数量个元字符进行词法分析,生成第二数量个初始字符组。
本说明书实施例中,在得到第一数量个元字符之后,可以对第一数量个元字符进行词法分析,生成第二数量个初始字符组。具体的,可以结合词法分析结果,将具有词法关联元字符拼接成同一个初始字符组。在一个具体的实施例中,具有词法关联的元字符可以包括但不限于可以组成转义字符串或声明变量或注释语句的至少两个相邻的元字符,中间具有连接符的三个相邻元字符,预设对称符与所述预设对称符之间的元字符等。
在一个具体的实施例中,预设对称符可以包括但不限于引号,括号等。
在一个具体的实施例中,如上述[\]、[n]在基于预设分隔符进行切分后,被切分成两个元字符,相应的,由于\n属于转义字符串,即相邻的元字符[\]、[n]具有词法关联,相应的,可以将相邻的两个元字符[\]、[n]进行拼接,得到初始字符组:\n。
在另一个具体的实施例中,假设某个目标语句中包括声明变量@b,相应的,在基于预设分隔符进行切分后,被切分成两个元字符[@]、[b],相应的,由于@b属于声明变量,即相邻的元字符[@]、[b]具有词法关联,相应的,可以将相邻的两个元字符[@]、[b]进行拼接,得到初始字符组:@b。
本说明书实施例中,在结合预设分隔符将目标语句进行切分后的元字符之后,通过对元字符的词法分析,可以将具有词法关联的元字符进行拼接,可以有效避免对目标语句中字段的错误切分,提升字段切分精准性。
S207:基于预设运算函数对所述第二数量个初始字符组进行拼接处理,得到第三数量个目标字符组。
本说明书实施例中,预设运算函数可以数据库语句中运算符和SQL函数。在一个具体的实施例中,SQL函数可以包括但不限于sum(指的是返回某一单元格区域中数字、逻辑值及数字的文本表达式之和)、count(用于对给定数据集合或者单元格区域中数据的个数进行计数)、cast(用于将某种数据类型的表达式显式转换为另一种数据类型)、collate(用于对字符进行排序)、isnumeric(检测变量是否为数字或数字字符串)、isdate(用于判断括号内的是否是日期)等函数;运算符可以包括但不限于算数运算符、比较运算符、逻辑运算符和位运算符。
在一个具体的实施例中,假设目标语句中包括:
sum(pay_amount)/count(user_id)
相应的,在基于预设分隔符进行切分后,得到第一数量个元字符可以为:[sum]、[(]、[pay_amount]、[)]、[/]、[count]、[(]、[user_id]、[)]。进一步的,通过对第一数量个元字符进行词法分析,得到第二数量个初始字符组为:sum、(pay_amount)、/、count、(user_id)。进一步的,基于预设运算函数对第二数量个初始字符组进行关联处理,得到第三数量个目标字符组可以为:sum(pay_amount)/count(user_id)。
本说明书实施例中,第一数量大于等于第二数量;第二数量大于等于第三数量。
本说明书实施例中,在基于对元字符的词法分析,将具有词法关联的元字符进行拼接后,进一步结合预设运算函数,可以更好的避免对目标语句中字段的错误切分,提升字段切分精准性。
S209:对所述第三数量个目标字符组进行字段识别,得到所述目标语句的目标字段名信息,所述目标字段名信息包括一一对应的字段别名和标准字段名;
在一个具体的实施例中,如图8所示,对所述第三数量个目标字符组进行字段识别,得到所述目标语句的目标字段名信息可以包括:
S2091:从所述第三数量个目标字符组中识别出预设关键字。
S2093:将对应的两个预设关键字之间的目标字符组作为字段字符。
S2095:从所述字段字符的目标字符组中查找字段分隔符。
S2097:基于所述字段分隔符将所述字段字符的目标字符组划分成第四数量个字符串。
S2099:基于所述第四数量个字符串,确定所述目标字段名信息。
本说明书实施例中,预设关键字可以包括但不限于SQL语句中的select,from。在实际应用中,字段字符往往出现在select和from之间,相应的,可以将select,from之间的目标字符组作为字段字符,由于select,from之间的可能有多个目标字符组,相应的,可以找到其中的字段分隔符(在一个具体的实施例中,字段分隔符可以为逗号),相应的,可以将两个逗号间的目标字符组作为一个字符串,并从每个字符串中识别出字段别名和标准字段名。
在一个具体的实施例中,基于所述第四数量个字符串,确定所述目标字段名信息可以包括:
当任一字符串中包括一个目标字符组时,将所述一个目标字符组作为字段别名和标准字段名;
当任一字符串中包括至少两个目标字符组时,判断所述至少两个目标字符组中末尾的目标字符组是否满足预设条件,当所述末尾的目标字符组满足预设条件时,将所述末尾的目标字符组作为字符别名,并从所述至少两个目标字符组中非末尾的目标字符组中提取标准字符别名。
本说明书实施例中,预设条件可以为目标字符组为非SQL关键字、非数字、非分隔符和非运算符,且该目标字符组的前一个非空格目标字符组为非运算符。
在一个可选的实施例中,在目标语句包括用户使用自定义的计算字段的情况下,为了提高对计算字段的识别准确率,当任一字符串中包括一个目标字符组时,上述方法还可以包括:
判断所述目标语句是否属于分组语句;
当所述目标语句不属于分组语句,且任一字符串中包括聚合函数时,将所述包括聚合函数的字符串作为字段别名和标准字段名。
本说明书实施例中,可以通过判断目标语句(SQL语句)中是否包括分组函数(GROUP BY)来识别该目标语句是否为分组语句,进一步的,当目标语句为非分组语句(即不属于分组语句)时,可以判断该目标语句对应的字符串是否包括聚合函数,当任一字符串中包括聚合函数时,该字符串中的目标字符组为子查询,即该目标字符组为一个独立的计算字段,相应的,可以直接将该包括聚合函数的字符串作为字段别名和标准字段名,避免出现报错的情况。
在一个具体的实施例中,假设目标语句为:
Select page_id,(pay_amount/100)pay,case when auth_type>1 then 1 elseo end auth_type fromt_pages
相应的,该目标语句对应的字符串可以包括以下三个:
page_id、(pay_amount/100)pay、case when auth_type>1 then 1 else o endauth_type。
由于第一个字符串中只有一个目标字符组page_id,相应的,可以直接将该普通的字段比如page_id可以直接获取到。第二个字符串包括两个目标字符组:(pay_amount/100)、pay,且pay满足预设条件,相应的,pay可以作为字段别名;并从(pay_amount/100)中提取pay_amount作为标准字段名。第三个字符串包括两个目标字符组:case when auth_type>1 then 1 else o end、auth_type;且auth_type满足预设条件,相应的,auth_type可以作为字段别名;并从case when auth_type>1 then 1 else o end、auth_type中提取auth_type作为标准字段名。
在另一个具体的实施例中,假设目标语句对应的字符串中包括sum(pay_amount)/count(user_id),且目标语句为非分组语句,相应的,由于sum和count属于聚合函数,可以直接将sum(pay_amount)/count(user_id)作为字段别名和标准字段名。
本说明书实施例中,结合预设分隔符对目标语句进行切分,并结合词法分析和预设运算函数对切分得到的元字符进行拼接,可以有效保证字段字符划分的准确性,进而提升字段识别的精准性。
S211:根据所述目标字段名信息确定与所述目标字段别名对应的目标标准字段名。
S213:基于所述目标标准字段名查询所述目标数据。
本说明书实施例中,可以结合目标标准字段名从数据库的相应数据表中获取目标数据。
在一个可选的实施例中,当目标数据包括至少两个数据时,目标标准字段名包括至少两个标准字段名;相应的,可以根据基于至少两个标准字段名分别从数据库的相应数据表获取这至少两个数据,并根据这至少两个数据生成目标数据。
在一个可选的实施例中,在查询到目标数据后,可以展示目标数据,以便用户可以直观的查看目标数据。
由以上本说明书实施例提供的技术方案可见,本说明书在数据查询过程中,通过预设分隔符对查询字段(目标字段别名)对应的原始SQL语句(目标语句)进行切分,并结合词法分析和预设运算函数对切分得到的元字符进行拼接,可以有效保证字段字符划分的准确性,以提升识别出的字段别名和标准字段名的精准性,进而可以准确确定出需要查询的数据的目标标准字段名,并基于该目标标准字段名准确查询到目标数据。
在另一些实施例中,如图9所示,数据查询指令还可以包括目标数据对应的查询计算字段,相应的,上述方法还可以包括:
S215:解析所述查询计算字段,得到所述查询计算字段对应的字段别名和目标计算字段。
S217:判断所述目标计算字段是否包括其他字段别名,所述其他字段别名为所述目标字段名信息中除所述对应的字段别名以外的任一字段别名;
S219:当所述目标计算字段包括所述其他字段别名时,判断所述其他字段别名对应的计算字段是否包括所述其他字段别名;
S221:当所述其他字段别名对应的计算字段未包括所述其他字段别名时,从所述目标字段名信息中获取所述其他字段别名对应的标准字段别名,利用所述其他字段别名对应的标准字段别名更新所述目标计算字段,基于更新后的目标计算字段查询所述目标数据;
S223:当所述其他字段别名对应的计算字段包括所述其他字段别名时,判断所述其他字段别名是否独立出现在所述其他字段别名对应的计算字段中;
S225:当所述其他字段别名未独立出现在所述其他字段别名对应的计算字段中时,从所述目标字段名信息中获取所述其他字段别名对应的标准字段别名,利用所述其他字段别名对应的标准字段别名更新所述目标计算字段,基于更新后的目标计算字段查询所述目标数据;
S227:当所述目标计算字段不包括所述其他字段别名,或,所述其他字段别名独立出现在所述其他字段别名对应的计算字段中时,基于所述目标计算字段查询所述目标数据。
本说明书实施例中,目标计算字段可以为获取字段别名所使用的计算字段。在一个具体的实施例中,假设查询计算字段为:
“sum(notify_result)/sum(notify_count)as notify_rate”对应的字段别名和目标计算字段分别为:notify_rate和sum(notify_result)/sum(notify_count)。
其中,notify_rate表示消息发送成功率,notify_result表示消息通知结果,相应的,sum(notify_result)可以为成功发送的消息的数量,notify_count表示消息通知计数,相应的,sum(notify_count)表示消息通知数量。
本说明书实施例中,字段别名对应的计算字段可以为字段别名自身的计算字段,即计算该字段别名的计算字段,例如字段别名notify_result自身的计算字段可以为:wx_notify_res+1 as notify_result,其中,wx_notify_res为notify_result对应的标准字段名。
在一个可选的实施例中,可以目标字段名信息中一一对应的字段别名和标准字段名按照字段别名或者标准字段名的字符串长度倒序排序(其中,=>左侧为字段别名,=>右侧为标准字段名);如
notify_result=>wx_notify_res;
notify_count=>wx_notify_count;
进一步的,可以依次判断其他字段别名是否出现在目标计算字段中,如目标计算字段sum(notify_result)/sum(notify_count)包含字段别名notify_result;相应的,可以判断notify_result是否出现在该字段自身的计算字段中,如果没有出现,就更新目标计算字段;比如notify_result没有出现在其自身的计算字段wx_notify_res+1 as notify_result中,相应的,可以用wx_notify_res替换目标计算字段中的notify_result,实现对目标计算字段的更新,更新后的目标计算字段可以为:sum(wx_notify_res)/sum(notify_count)。如目标计算字段不包含其他字段别名,即该目标计算字段本身就是标准计算字段名,相应的,可以直接基于该目标计算字段查询目标数据;
进一步的,如果字段别名出现在其本身的计算字段中,如notify_count在计算字段wx_notify_count中,判断它是否为一个独立的字段名称出现在字段公式中。如公式notify_count+1中notify_count是独立出现,则该目标计算字段本身就是标准计算字段名,可以直接基于该目标计算字段查询目标数据;而wx_notify_count作为整体出现,则可以用wx_notify_count替换目标计算字段中的notify_count,实现对目标计算字段的更新,更新后的目标计算字段可以为:sum(wx_notify_res)/sum(wx_notify_count)。
在一个可选的实施例中,当查询计算字段中包括字段中文名时,在解析所述查询计算字段之前,上述方法还可以包括:
将所述查询计算字段拆分成多个子字段;
对所述多个子字段与所述目标语句对应的字段信息中字段中文名进行匹配;
在任一子字段与所述字段信息中字段中文名相匹配的情况下,从所述字段信息中获取存在相匹配的字段中文名的子字段的字段别名;
基于所述存在相匹配的字段中文名的子字段的字段别名更新所述查询计算字段;
相应的,所述解析所述查询计算字段包括解析更新后的查询计算字段。
本说明书实施例中,可以将存在相匹配的字段中文名的子字段替换成所述相匹配的字段中文名对应的字段别名,以实现对查询计算字段的更新。
本说明书实施例中,在进行计算字段解析之前,先将计算字段中的字段中文名替换成字段别名,在支持用户按照便于识别的方式创建计算字段的同时,可以有效避免后续的识别错误。
在另一可选的实施例中,当所述其他字段别名未独立出现在所述其他字段别名对应的计算字段中时,上述方法还可以包括:
判断所述目标计算字段中与所述其他字段别名的相邻的字符是否为连接符;
当所述相邻的字符是所述连接符时,从所述目标字段名信息中获取所述其他字段别名对应的标准字段别名,利用所述其他字段别名对应的标准字段别名更新所述目标计算字段,基于更新后的目标计算字段查询所述目标数据;
当所述相邻的字符不是所述连接符时,基于所述目标计算字段查询所述目标数据。
在一个可选的实施例中,可以通过正则匹配来识别出上述相邻的字符为连接符的其他字段别名。
本说明书实施例中,在其他字段别名以独立的字段名称出现在其自身的计算字段中,可以该其他字段别名替换成标准字段别名,以避免通过连接符与该其他字段别名连接的字段在查询时的干扰,有效避免计算字段的识别错误。
本说明书实施例中,充分考虑计算字段的特性,对计算字段在识别过程中的各种情况进行分析,可以有效保证数据查询过程中利用计算字段执行分组、聚合、筛选、排序等操作时,可以准确的查询到目标数据。
本申请实施例还提供了一种数据查询装置,如图10所示,所述装置包括:
数据查询指令接收模块1010,用于接收数据查询指令,所述数据查询指令包括目标数据对应的目标字段别名;
目标语句获取模块1020,用于获取所述目标字段别名对应的目标语句;
目标语句切分模块1030,用于基于预设分隔符对所述目标语句进行切分,得到第一数量个元字符;
词法分析模块1040,用于对所述第一数量个元字符进行词法分析,生成第二数量个初始字符组;
拼接处理模块1050,用于基于预设运算函数对所述第二数量个初始字符组进行拼接处理,得到第三数量个目标字符组;
字段识别模块1060,用于对所述第三数量个目标字符组进行字段识别,得到所述目标语句的目标字段名信息,所述目标字段名信息包括一一对应的字段别名和标准字段名;
目标标准字段名确定模块1070,用于根据所述目标字段名信息确定与所述目标字段别名对应的目标标准字段名;
第一目标数据查询模块1080,用于基于所述目标标准字段名查询所述目标数据。
可选的,所述字段识别模块包括:
预设关键字识别单元,用于从所述第三数量个目标字符组中识别出预设关键字;
字段字符确定单元,用于将对应的两个预设关键字之间的目标字符组作为字段字符;
字段分隔符查找单元,用于从所述字段字符的目标字符组中查找字段分隔符;
目标字符组划分单元,用于基于所述字段分隔符将所述字段字符的目标字符组划分成第四数量个字符串;
目标字段名信息确定单元,用于基于所述第四数量个字符串,确定所述目标字段名信息。
可选的,所述目标字段名信息确定单元包括:
第一目标字段名信息确定子单元,用于当任一字符串中包括一个目标字符组时,将所述一个目标字符组作为字段别名和标准字段名;
第二目标字段名信息确定子单元,用于当任一字符串中包括至少两个目标字符组时,判断所述至少两个目标字符组中末尾的目标字符组是否满足预设条件,当所述末尾的目标字符组满足预设条件时,将所述末尾的目标字符组作为字符别名,并从所述至少两个目标字符组中非末尾的目标字符组中提取标准字符别名。
可选的,当任一字符串中包括一个目标字符组时,所述目标字段名信息确定单元还包括:
分组语句识别单元,用于判断所述目标语句是否属于分组语句;
第三目标字段名信息确定子单元,用于当所述目标语句不属于分组语句,且任一字符串中包括聚合函数时,将所述包括聚合函数的字符串作为字段别名和标准字段名。
可选的,所述数据查询指令还包括所述目标数据对应的查询计算字段,所述方法还包括:
查询计算字段解析模块,用于解析所述查询计算字段,得到所述查询计算字段对应的字段别名和目标计算字段;
第一判断模块,用于判断所述目标计算字段是否包括其他字段别名,所述其他字段别名为所述目标字段名信息中除所述对应的字段别名以外的任一字段别名;
第二判断模块,用于当所述第一判断模块判断的结果为是时,判断所述其他字段别名对应的计算字段是否包括所述其他字段别名;
第一计算字段更新及数据查询模块,用于当所述第二判断模块判断的结果为否时,从所述目标字段名信息中获取所述其他字段别名对应的标准字段别名,利用所述其他字段别名对应的标准字段别名更新所述目标计算字段,基于更新后的目标计算字段查询所述目标数据;
第三判断模块,用于当所述第二判断模块判断的结果为是时,判断所述其他字段别名是否独立出现在所述其他字段别名对应的计算字段中;
第二计算字段更新及数据查询模块,用于当所述第三判断模块判断的结果为否时,从所述目标字段名信息中获取所述其他字段别名对应的标准字段别名,利用所述其他字段别名对应的标准字段别名更新所述目标计算字段,基于更新后的目标计算字段查询所述目标数据;
第二目标数据查询模块,用于当所述第一判断模块判断的结果为否,或,所述第三判断模块判断的结果为是时,基于所述目标计算字段查询所述目标数据。
可选的,所述装置还包括:
字段拆分模块,用于将所述查询计算字段拆分成多个子字段;
字段匹配模块,用于对所述多个子字段与所述目标语句对应的字段信息中字段中文名进行匹配;
字段别名获取模块,用于在任一子字段与所述字段信息中字段中文名相匹配的情况下,从所述字段信息中获取存在相匹配的字段中文名的子字段的字段别名;
查询计算字段更新模块,用于基于所述存在相匹配的字段中文名的子字段的字段别名更新所述查询计算字段;
相应的,所述查询计算字段解析模块用于解析更新后的查询计算字段。
可选的,所述装置还包括:
第四判断模块,用于第三判断模块判断的结果为否时,判断所述目标计算字段中与所述其他字段别名的相邻的字符是否为连接符;
第三计算字段更新及数据查询模块,用于当第四判断模块判断的结果为是时,从所述目标字段名信息中获取所述其他字段别名对应的标准字段别名,利用所述其他字段别名对应的标准字段别名更新所述目标计算字段,基于更新后的目标计算字段查询所述目标数据;
第三目标数据查询模块,用于当所述第四判断模块判断的结果为否时,基于所述目标计算字段查询所述目标数据。
可选的,所述装置还包括:
目标语句解析模块,用于响应于在字段信息创建页面触发的对目标语句的解析指令,解析所述目标语句,得到所述目标语句中的字段别名;
字段信息创建模块,用于创建包括所述目标语句中的字段别名的字段信息;
字段信息展示模块,用于展示所述字段信息。
可选的,所述字段信息还包括与所述目标语句中的字段别名一一对应的字段注释编辑区域,所述装置还包括:
字段注释信息获取模块,用于响应于字段注释确认指令,获取所述字段注释确认指令对应的字段注释编辑区域的字段注释信息;
第一字段信息更新模块,用于基于所述字段注释信息更新所述字段信息。
可选的,所述装置还包括:
计算字段编辑页面展示模块,用于响应于计算字段创建指令,展示计算字段编辑页面,所述计算字段编辑页面包括计算字段编辑区域,以及第一已有字段信息,所述第一已有字段信息为所述字段信息中字段别名或所述字段注释信息中的字段中文名;
字段选取模块,用于响应于基于所述第一已有字段信息触发的字段选取指令,将选取的字段输入所述计算字段编辑区域;
第一目标运算函数的输入模块,用于响应于第一目标运算函数的输入指令,将所述第一目标运算函数输入所述计算字段编辑区域;
第一计算字段生成模块,用于响应于计算字段确认指令,获取所述计算字段编辑区域内的第一计算字段,所述第一计算字段为根据所述选取的字段和所述第一目标运行函数生成的;
第二字段信息更新模块,用于基于所述第一计算字段更新所述字段信息。
可选的,所述装置还包括:
新增计算字段编辑页面展示模块,用于响应于新增计算字段指令,展示新增计算字段编辑页面,所述新增计算字段编辑页面包括新增计算字段编辑区域和包括所述第一计算字段的第二已有字段信息;
计算字段选取模块,用于响应于基于所述第二已有字段信息触发的计算字段选取指令,将选取的计算字段输入所述新增计算字段编辑区域;
第二目标运算函数的输入模块,用于响应于第二目标运算函数的输入指令,将所述第二目标运算函数输入所述新增计算字段编辑区域;
第二计算字段生成模块,用于响应于新增计算字段确认指令,获取所述新增计算字段编辑区域内的第二计算字段,所述第二计算字段为根据所述选取的计算字段和所述第二目标运行函数生成的;
第三字段信息更新模块,用于基于所述第二计算字段更新所述字段信息。所述的装置实施例中的装置与方法实施例基于同样的申请构思。
本申请实施例提供了一种数据查询服务器,该数据查询服务器包括处理器和存储器,该存储器中存储有至少一条指令、或至少一段程序,该至少一条指令、或该至少一段程序由该处理器加载并执行以实现如上述方法实施例所提供的数据查询方法。
存储器可用于存储软件程序以及模块,处理器通过运行存储在存储器的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、功能所需的应用程序等;存储数据区可存储根据所述设备的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器还可以包括存储器控制器,以提供处理器对存储器的访问。
本申请实施例所提供的方法实施例可以在移动终端、计算机终端、服务器或者类似的运算装置中执行。以运行在服务器上为例,图11是本申请实施例提供的一种实现数据查询方法的服务器的硬件结构框图。如图11所示,该服务器1100可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(Central Processing Units,CPU)1110(处理器1110可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器1130,一个或一个以上存储应用程序1123或数据1122的存储介质1120(例如一个或一个以上海量存储设备)。其中,存储器1130和存储介质1120可以是短暂存储或持久存储。存储在存储介质1120的程序可以包括一个或一个以上模块,每个模块可以包括对服务器中的一系列指令操作。更进一步地,中央处理器1110可以设置为与存储介质1120通信,在服务器1100上执行存储介质1120中的一系列指令操作。服务器1100还可以包括一个或一个以上电源1160,一个或一个以上有线或无线网络接口1150,一个或一个以上输入输出接口1140,和/或,一个或一个以上操作系统1121,例如Windows ServerTM,MacOS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
输入输出接口1140可以用于经由一个网络接收或者发送数据。上述的网络具体实例可包括服务器1100的通信供应商提供的无线网络。在一个实例中,输入输出接口1140包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,输入输出接口1140可以为射频(RadioFrequency,RF)模块,其用于通过无线方式与互联网进行通讯。
本领域普通技术人员可以理解,图11所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,服务器1100还可包括比图11中所示更多或者更少的组件,或者具有与图11所示不同的配置。
本申请的实施例还提供了一种存储介质,所述存储介质可设置于设备之中以保存用于实现方法实施例中一种数据查询方法相关的至少一条指令、或至少一段程序,该至少一条指令或该至少一段程序由该处理器加载并执行以实现上述方法实施例提供的数据查询方法。
本申请的实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述各种可选实现方式中提供的方法。
可选地,在本实施例中,上述存储介质可以位于计算机网络的多个网络服务器中的至少一个网络服务器。可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
由上述本申请提供的数据查询方法、装置、服务器或存储介质的实施例可见,本申请中在数据查询过程中,通过预设分隔符对查询字段(目标字段别名)对应的原始SQL语句(目标语句)进行切分,并结合词法分析和预设运算函数对切分得到的元字符进行拼接,可以有效保证字段字符划分的准确性,以提升识别出的字段别名和标准字段名的精准性,进而可以准确确定出需要查询的数据的目标标准字段名,并基于该目标标准字段名准确查询到目标数据。
需要说明的是:上述本申请实施例先后顺序仅仅为了描述,不代表实施例的优劣。且上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置和服务器实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指示相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的较佳实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。

Claims (22)

1.一种数据查询方法,其特征在于,所述方法包括:
接收数据查询指令,所述数据查询指令包括目标数据对应的目标字段别名;
获取所述目标字段别名对应的目标语句,基于预设分隔符对所述目标语句进行切分,得到第一数量个元字符;
对所述第一数量个元字符进行词法分析,生成第二数量个初始字符组;
基于预设运算函数对所述第二数量个初始字符组进行拼接处理,得到第三数量个目标字符组;
从所述第三数量个目标字符组中识别出预设关键字;
将对应的两个预设关键字之间的目标字符组作为字段字符;
从所述字段字符的目标字符组中查找字段分隔符;
基于所述字段分隔符将所述字段字符的目标字符组划分成第四数量个字符串;
基于所述第四数量个字符串,确定目标字段名信息,所述目标字段名信息包括一一对应的字段别名和标准字段名;
根据所述目标字段名信息确定与所述目标字段别名对应的目标标准字段名;
基于所述目标标准字段名查询所述目标数据。
2.根据权利要求1所述的方法,其特征在于,所述基于所述第四数量个字符串,确定所述目标字段名信息包括:
当任一字符串中包括一个目标字符组时,将所述一个目标字符组作为字段别名和标准字段名;
当任一字符串中包括至少两个目标字符组时,判断所述至少两个目标字符组中末尾的目标字符组是否满足预设条件,当所述末尾的目标字符组满足预设条件时,将所述末尾的目标字符组作为字符别名,并从所述至少两个目标字符组中非末尾的目标字符组中提取标准字符别名。
3.根据权利要求1所述的方法,其特征在于,当任一字符串中包括一个目标字符组时,所述方法还包括:
判断所述目标语句是否属于分组语句;
当所述目标语句不属于分组语句,且任一字符串中包括聚合函数时,将所述包括聚合函数的字符串作为字段别名和标准字段名。
4.根据权利要求1所述的方法,其特征在于,所述数据查询指令还包括所述目标数据对应的查询计算字段,所述方法还包括:
解析所述查询计算字段,得到所述查询计算字段对应的字段别名和目标计算字段;
判断所述目标计算字段是否包括其他字段别名,所述其他字段别名为所述目标字段名信息中除所述对应的字段别名以外的任一字段别名;
当所述目标计算字段包括所述其他字段别名时,判断所述其他字段别名对应的计算字段是否包括所述其他字段别名;
当所述其他字段别名对应的计算字段未包括所述其他字段别名时,从所述目标字段名信息中获取所述其他字段别名对应的标准字段别名,利用所述其他字段别名对应的标准字段别名更新所述目标计算字段,基于更新后的目标计算字段查询所述目标数据;
当所述其他字段别名对应的计算字段包括所述其他字段别名时,判断所述其他字段别名是否独立出现在所述其他字段别名对应的计算字段中;
当所述其他字段别名未独立出现在所述其他字段别名对应的计算字段中时,从所述目标字段名信息中获取所述其他字段别名对应的标准字段别名,利用所述其他字段别名对应的标准字段别名更新所述目标计算字段,基于更新后的目标计算字段查询所述目标数据;
当所述目标计算字段不包括所述其他字段别名,或,所述其他字段别名独立出现在所述其他字段别名对应的计算字段中时,基于所述目标计算字段查询所述目标数据。
5.根据权利要求4所述的方法,其特征在于,在解析所述查询计算字段之前,所述方法还包括:
将所述查询计算字段拆分成多个子字段;
对所述多个子字段与所述目标语句对应的字段信息中字段中文名进行匹配;
在任一子字段与所述字段信息中字段中文名相匹配的情况下,从所述字段信息中获取存在相匹配的字段中文名的子字段的字段别名;
基于所述存在相匹配的字段中文名的子字段的字段别名更新所述查询计算字段;
相应的,所述解析所述查询计算字段包括解析更新后的查询计算字段。
6.根据权利要求4所述的方法,其特征在于,当所述其他字段别名未独立出现在所述其他字段别名对应的计算字段中时,所述方法还包括:
判断所述目标计算字段中与所述其他字段别名的相邻的字符是否为连接符;
当所述相邻的字符是所述连接符时,从所述目标字段名信息中获取所述其他字段别名对应的标准字段别名,利用所述其他字段别名对应的标准字段别名更新所述目标计算字段,基于更新后的目标计算字段查询所述目标数据;
当所述相邻的字符不是所述连接符时,基于所述目标计算字段查询所述目标数据。
7.根据权利要求1至6任一所述的方法,其特征在于,所述方法还包括:
响应于在字段信息创建页面触发的对目标语句的解析指令,解析所述目标语句,得到所述目标语句中的字段别名;
创建包括所述目标语句中的字段别名的字段信息;
展示所述字段信息。
8.根据权利要求7所述的方法,其特征在于,所述字段信息还包括与所述目标语句中的字段别名一一对应的字段注释编辑区域,所述方法还包括:
响应于字段注释确认指令,获取所述字段注释确认指令对应的字段注释编辑区域的字段注释信息;
基于所述字段注释信息更新所述字段信息。
9.根据权利要求8所述的方法,其特征在于,所述方法还包括:
响应于计算字段创建指令,展示计算字段编辑页面,所述计算字段编辑页面包括计算字段编辑区域,以及第一已有字段信息,所述第一已有字段信息为所述字段信息中字段别名或所述字段注释信息中的字段中文名;
响应于基于所述第一已有字段信息触发的字段选取指令,将选取的字段输入所述计算字段编辑区域;
响应于第一目标运算函数的输入指令,将所述第一目标运算函数输入所述计算字段编辑区域;
响应于计算字段确认指令,获取所述计算字段编辑区域内的第一计算字段,所述第一计算字段为根据所述选取的字段和所述第一目标运行函数生成的;
基于所述第一计算字段更新所述字段信息。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
响应于新增计算字段指令,展示新增计算字段编辑页面,所述新增计算字段编辑页面包括新增计算字段编辑区域和包括所述第一计算字段的第二已有字段信息;
响应于基于所述第二已有字段信息触发的计算字段选取指令,将选取的计算字段输入所述新增计算字段编辑区域;
响应于第二目标运算函数的输入指令,将所述第二目标运算函数输入所述新增计算字段编辑区域;
响应于新增计算字段确认指令,获取所述新增计算字段编辑区域内的第二计算字段,所述第二计算字段为根据所述选取的计算字段和所述第二目标运行函数生成的;
基于所述第二计算字段更新所述字段信息。
11.一种数据查询装置,其特征在于,所述装置包括:
数据查询指令接收模块,用于接收数据查询指令,所述数据查询指令包括目标数据对应的目标字段别名;
目标语句获取模块,用于获取所述目标字段别名对应的目标语句;
目标语句切分模块,用于基于预设分隔符对所述目标语句进行切分,得到第一数量个元字符;
词法分析模块,用于对所述第一数量个元字符进行词法分析,生成第二数量个初始字符组;
拼接处理模块,用于基于预设运算函数对所述第二数量个初始字符组进行拼接处理,得到第三数量个目标字符组;
字段识别模块,所述字段识别模块包括:预设关键字识别单元,用于从所述第三数量个目标字符组中识别出预设关键字;字段字符确定单元,用于将对应的两个预设关键字之间的目标字符组作为字段字符;字段分隔符查找单元,用于从所述字段字符的目标字符组中查找字段分隔符;目标字符组划分单元,用于基于所述字段分隔符将所述字段字符的目标字符组划分成第四数量个字符串;目标字段名信息确定单元,用于基于所述第四数量个字符串,确定目标字段名信息,所述目标字段名信息包括一一对应的字段别名和标准字段名;
目标标准字段名确定模块,用于根据所述目标字段名信息确定与所述目标字段别名对应的目标标准字段名;
第一目标数据查询模块,用于基于所述目标标准字段名查询所述目标数据。
12.根据权利要求11所述的装置,其特征在于,所述目标字段名信息确定单元包括:
第一目标字段名信息确定子单元,用于当任一字符串中包括一个目标字符组时,将所述一个目标字符组作为字段别名和标准字段名;
第二目标字段名信息确定子单元,用于当任一字符串中包括至少两个目标字符组时,判断所述至少两个目标字符组中末尾的目标字符组是否满足预设条件,当所述末尾的目标字符组满足预设条件时,将所述末尾的目标字符组作为字符别名,并从所述至少两个目标字符组中非末尾的目标字符组中提取标准字符别名。
13.根据权利要求11所述的装置,其特征在于,当任一字符串中包括一个目标字符组时,所述目标字段名信息确定单元还包括:
分组语句识别单元,用于判断所述目标语句是否属于分组语句;
第三目标字段名信息确定子单元,用于当所述目标语句不属于分组语句,且任一字符串中包括聚合函数时,将所述包括聚合函数的字符串作为字段别名和标准字段名。
14.根据权利要求11所述的装置,其特征在于,所述数据查询指令还包括所述目标数据对应的查询计算字段,所述装置还包括:
查询计算字段解析模块,用于解析所述查询计算字段,得到所述查询计算字段对应的字段别名和目标计算字段;
第一判断模块,用于判断所述目标计算字段是否包括其他字段别名,所述其他字段别名为所述目标字段名信息中除所述对应的字段别名以外的任一字段别名;
第二判断模块,用于当所述第一判断模块判断的结果为是时,判断所述其他字段别名对应的计算字段是否包括所述其他字段别名;
第一计算字段更新及数据查询模块,用于当所述第二判断模块判断的结果为否时,从所述目标字段名信息中获取所述其他字段别名对应的标准字段别名,利用所述其他字段别名对应的标准字段别名更新所述目标计算字段,基于更新后的目标计算字段查询所述目标数据;
第三判断模块,用于当所述第二判断模块判断的结果为是时,判断所述其他字段别名是否独立出现在所述其他字段别名对应的计算字段中;
第二计算字段更新及数据查询模块,用于当所述第三判断模块判断的结果为否时,从所述目标字段名信息中获取所述其他字段别名对应的标准字段别名,利用所述其他字段别名对应的标准字段别名更新所述目标计算字段,基于更新后的目标计算字段查询所述目标数据;
第二目标数据查询模块,用于当所述第一判断模块判断的结果为否,或,所述第三判断模块判断的结果为是时,基于所述目标计算字段查询所述目标数据。
15.根据权利要求14所述的装置,其特征在于,所述装置还包括:
字段拆分模块,用于将所述查询计算字段拆分成多个子字段;
字段匹配模块,用于对所述多个子字段与所述目标语句对应的字段信息中字段中文名进行匹配;
字段别名获取模块,用于在任一子字段与所述字段信息中字段中文名相匹配的情况下,从所述字段信息中获取存在相匹配的字段中文名的子字段的字段别名;
查询计算字段更新模块,用于基于所述存在相匹配的字段中文名的子字段的字段别名更新所述查询计算字段;
相应的,所述查询计算字段解析模块用于解析更新后的查询计算字段。
16.根据权利要求14所述的装置,其特征在于,所述装置还包括:
第四判断模块,用于第三判断模块判断的结果为否时,判断所述目标计算字段中与所述其他字段别名的相邻的字符是否为连接符;
第三计算字段更新及数据查询模块,用于当第四判断模块判断的结果为是时,从所述目标字段名信息中获取所述其他字段别名对应的标准字段别名,利用所述其他字段别名对应的标准字段别名更新所述目标计算字段,基于更新后的目标计算字段查询所述目标数据;
第三目标数据查询模块,用于当所述第四判断模块判断的结果为否时,基于所述目标计算字段查询所述目标数据。
17.根据权利要求11至16任一所述的装置,其特征在于,所述装置还包括:
目标语句解析模块,用于响应于在字段信息创建页面触发的对目标语句的解析指令,解析所述目标语句,得到所述目标语句中的字段别名;
字段信息创建模块,用于创建包括所述目标语句中的字段别名的字段信息;
字段信息展示模块,用于展示所述字段信息。
18.根据权利要求17所述的装置,其特征在于,所述字段信息还包括与所述目标语句中的字段别名一一对应的字段注释编辑区域,所述装置还包括:
字段注释信息获取模块,用于响应于字段注释确认指令,获取所述字段注释确认指令对应的字段注释编辑区域的字段注释信息;
第一字段信息更新模块,用于基于所述字段注释信息更新所述字段信息。
19.根据权利要求18所述的装置,其特征在于,所述装置还包括:
计算字段编辑页面展示模块,用于响应于计算字段创建指令,展示计算字段编辑页面,所述计算字段编辑页面包括计算字段编辑区域,以及第一已有字段信息,所述第一已有字段信息为所述字段信息中字段别名或所述字段注释信息中的字段中文名;
字段选取模块,用于响应于基于所述第一已有字段信息触发的字段选取指令,将选取的字段输入所述计算字段编辑区域;
第一目标运算函数的输入模块,用于响应于第一目标运算函数的输入指令,将所述第一目标运算函数输入所述计算字段编辑区域;
第一计算字段生成模块,用于响应于计算字段确认指令,获取所述计算字段编辑区域内的第一计算字段,所述第一计算字段为根据所述选取的字段和所述第一目标运行函数生成的;
第二字段信息更新模块,用于基于所述第一计算字段更新所述字段信息。
20.根据权利要求19所述的装置,其特征在于,所述装置还包括:
新增计算字段编辑页面展示模块,用于响应于新增计算字段指令,展示新增计算字段编辑页面,所述新增计算字段编辑页面包括新增计算字段编辑区域和包括所述第一计算字段的第二已有字段信息;
计算字段选取模块,用于响应于基于所述第二已有字段信息触发的计算字段选取指令,将选取的计算字段输入所述新增计算字段编辑区域;
第二目标运算函数的输入模块,用于响应于第二目标运算函数的输入指令,将所述第二目标运算函数输入所述新增计算字段编辑区域;
第二计算字段生成模块,用于响应于新增计算字段确认指令,获取所述新增计算字段编辑区域内的第二计算字段,所述第二计算字段为根据所述选取的计算字段和所述第二目标运行函数生成的;
第三字段信息更新模块,用于基于所述第二计算字段更新所述字段信息。
21.一种数据查询设备,其特征在于,所述设备包括处理器和存储器,所述存储器中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由所述处理器加载并执行以实现如权利要求1至10任一项所述的数据查询方法。
22.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令或至少一段程序,所述至少一条指令或所述至少一段程序由处理器加载并执行以实现如权利要求1至10任一项所述的数据查询方法。
CN202011338416.6A 2020-11-25 2020-11-25 一种数据查询方法及装置 Active CN112364051B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011338416.6A CN112364051B (zh) 2020-11-25 2020-11-25 一种数据查询方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011338416.6A CN112364051B (zh) 2020-11-25 2020-11-25 一种数据查询方法及装置

Publications (2)

Publication Number Publication Date
CN112364051A CN112364051A (zh) 2021-02-12
CN112364051B true CN112364051B (zh) 2024-03-15

Family

ID=74534254

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011338416.6A Active CN112364051B (zh) 2020-11-25 2020-11-25 一种数据查询方法及装置

Country Status (1)

Country Link
CN (1) CN112364051B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115238692A (zh) * 2022-06-29 2022-10-25 青岛海尔科技有限公司 一种地点名称识别方法、系统、装置及存储介质
CN114996280B (zh) * 2022-08-01 2022-10-25 每日互动股份有限公司 一种数据表的字段信息纠正方法、装置、设备及介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1904896A (zh) * 2005-07-28 2007-01-31 株式会社东芝 结构化文档处理装置、搜索装置及结构化文档系统和方法
CN101520851A (zh) * 2008-02-29 2009-09-02 富士通株式会社 字符信息识别装置和方法
KR20180061891A (ko) * 2016-11-30 2018-06-08 정준용 로그 생성기 및 그를 포함하는 빅 데이터 분석 전처리 시스템
CN108241670A (zh) * 2016-12-26 2018-07-03 北京国双科技有限公司 数据库语句生成方法及装置
CN111639078A (zh) * 2020-05-25 2020-09-08 北京百度网讯科技有限公司 数据查询方法、装置、电子设备以及可读存储介质

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1904896A (zh) * 2005-07-28 2007-01-31 株式会社东芝 结构化文档处理装置、搜索装置及结构化文档系统和方法
CN101520851A (zh) * 2008-02-29 2009-09-02 富士通株式会社 字符信息识别装置和方法
KR20180061891A (ko) * 2016-11-30 2018-06-08 정준용 로그 생성기 및 그를 포함하는 빅 데이터 분석 전처리 시스템
CN108241670A (zh) * 2016-12-26 2018-07-03 北京国双科技有限公司 数据库语句生成方法及装置
CN111639078A (zh) * 2020-05-25 2020-09-08 北京百度网讯科技有限公司 数据查询方法、装置、电子设备以及可读存储介质

Also Published As

Publication number Publication date
CN112364051A (zh) 2021-02-12

Similar Documents

Publication Publication Date Title
US11645471B1 (en) Determining a relationship recommendation for a natural language request
US11907244B2 (en) Modifying field definitions to include post-processing instructions
US10956834B2 (en) Tool for machine-learning data analysis
US11916764B1 (en) Server-side operations for edge analytics
US11449464B2 (en) Graphical user interface for parsing events using a selected field delimiter option
US11670288B1 (en) Generating predicted follow-on requests to a natural language request received by a natural language processing system
US11288319B1 (en) Generating trending natural language request recommendations
US11886430B1 (en) Intent-based natural language processing system
US11775767B1 (en) Systems and methods for automated iterative population of responses using artificial intelligence
US11003691B2 (en) Determining affinities for data set summarizations
US11494395B2 (en) Creating dashboards for viewing data in a data storage system based on natural language requests
US11676345B1 (en) Automated adaptive workflows in an extended reality environment
US10679142B2 (en) Dynamic search guidance for machine data indexing and search system
CN112364051B (zh) 一种数据查询方法及装置
US10901811B2 (en) Creating alerts associated with a data storage system based on natural language requests
US11599396B2 (en) Resegmenting chunks of data based on source type to facilitate load balancing
CN112559913B (zh) 一种数据处理方法、装置、计算设备及可读存储介质
US9984107B2 (en) Database joins using uncertain criteria
US9853946B2 (en) Security compliance for cloud-based machine data acquisition and search system
US20190034555A1 (en) Translating a natural language request to a domain specific language request based on multiple interpretation algorithms
JP5931804B2 (ja) Gui部品メタ情報付与装置およびその方法、並びに操作ログ自動生成装置
CN114297200A (zh) 一种用户画像构建方法和装置
WO2018067420A1 (en) Perform graph traversal with graph query language

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
GR01 Patent grant
GR01 Patent grant