CN115221198A - 一种数据查询方法及装置 - Google Patents
一种数据查询方法及装置 Download PDFInfo
- Publication number
- CN115221198A CN115221198A CN202210873120.7A CN202210873120A CN115221198A CN 115221198 A CN115221198 A CN 115221198A CN 202210873120 A CN202210873120 A CN 202210873120A CN 115221198 A CN115221198 A CN 115221198A
- Authority
- CN
- China
- Prior art keywords
- query
- data
- node
- nodes
- logic
- 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/245—Query processing
- G06F16/2453—Query optimisation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本说明书实施例提供了一种数据查询方法及装置,该方法包括:获取用于对数据存储系统进行数据查询的第一语句,第一语句基于自然语言;确定第一语句的自然语义,自然语义包括数据查询依据的查询条件、以及对于所述数据查询旨在获取的目标数据项的描述;基于自然语义,生成查询逻辑树,查询逻辑树指示依据查询条件,得到目标数据项的中间逻辑步骤,且,中间逻辑步骤与数据存储结构无关;根据查询逻辑树,生成基于数据查询语言的第二语句。
Description
本申请是2022年1月19日递交的、申请号为202210058343.8,名为“一种数据查询方法及装置”的发明专利申请的分案申请。
技术领域
本说明书一个或多个实施例涉及自然语言处理领域和数据分析领域,尤其涉及一种数据查询方法及装置。
背景技术
自然语言查询是根据自然语言进行数的数据查询。自然语言查询降低数据查询作业的技术门槛,使得操作人员无需掌握专业的数据查询语言既可以方便的进行数据查询。尤其,例如在企业中掌握数据查询语言的专业技术人员数量不足,或数据查询需求量巨大的场景中,帮助企业因以上原因造成的可进行数据查询作业量的瓶颈,提高企业数据查询的效率。但是,现有的利用自然语言的数据查询方法,仍然存在查询准确率仍较低、对于复杂查询作业的支持能力不足的问题。
因此,需要一种更好的数据查询方法。
发明内容
本说明书中的实施例旨在提供一种新的数据查询方法。该方法将自然语言形式的自然查询语句,生成表达查询逻辑、且与数据具体存储方式无关的查询逻辑树,然后根据查询逻辑树生成基于数据查询语言的查询执行语句。利用该方法,可以大大提供自然查询语句到查询执行语句之间的转换难度,提高两者之间的转换质量,进而大大提高根据自然语言的查询结果的准确率,以及提高对于依据自然语言的复杂查询作业的支持能力。
根据第一方面,提供了一种数据查询方法,包括:
获取用于对数据存储系统进行数据查询的第一语句,所述第一语句基于自然语言;
确定所述第一语句的自然语义,所述自然语义包括所述数据查询依据的查询条件、以及对于所述数据查询旨在获取的目标数据项的描述;
基于所述自然语义,生成查询逻辑树,所述查询逻辑树指示依据所述查询条件,得到所述目标数据项的中间逻辑步骤,且,所述中间逻辑步骤与数据存储结构无关;
根据所述查询逻辑树,生成基于数据查询语言的第二语句。
在一种可能的实施方式中,确定所述第一语句的自然语义,包括:
基于对所述第一语句的语法分析和语义分析,生成第一语句的自然语义树;
基于所述自然语义,生成查询逻辑树,包括:
根据所述自然语义树,生成查询逻辑树。
在一种可能的实施方式中,生成基于数据查询语言的第二语句,包括:
根据所述查询逻辑树、以及数据存储系统的数据存储结构,生成第二语句。
在一种可能的实施方式中,所述包括数据存储结构包括,数据存储系统的数据表结构以及数据表之间的关系。
在一种可能的实施方式中,所述数据查询语言包括SQL语言、SPARK数据查询语言中的一种。
在一种可能的实施方式中,所述基于所述自然语义,生成查询逻辑树,包括:
基于所述查询条件和目标数据项,以及预先定义的逻辑节点,生成查询逻辑树。
在一种可能的实施方式中,所述逻辑节点,包括查询节点、筛选条件节点、查询数据项节点,其中,所述筛选条件节点、查询数据项节点作为查询节点的子节点;
基于所述查询条件和目标数据项,以及预先定义的逻辑节点,生成查询逻辑树,包括:
基于所述查询条件和目标数据项,确定依次递进的若干查询步骤、以及各查询步骤分别对应的查询数据项、筛选条件;
基于所述查询步骤、所述查询步骤的次序、所述查询数据项和所述筛选条件,确定各查询步骤对应的查询节点、各查询节点拥有的筛选条件节点和查询数据项节点,以及各查询节点之间的从属关系;
根据所述各查询节点及其之间的从属关系,生成查询逻辑树。
在一种可能的实施方式中,所述查询逻辑树还包括筛选条件组节点和查询数据项组节点;所述筛选条件组节点作为所述各查询步骤对应的若干筛选条件节点的父节点,并作为所述各查询步骤对应的查询节点的子节点,所述查询数据项组节点作为若干查询数据项节点的父节点,并作为所述各查询步骤对应的查询节点的子节点。
在一种可能的实施方式中,所述查询逻辑树还包括数据项操作函数节点和数据项标识节点,并作为查询数据项节点的子节点,所述数据项操作函数节点对应于施加于查询数据项的操作函数,所述数据项标识节点对应于查询数据项的标识。
在一种可能的实施方式中,所述查询节点对应的查询结果数据集为若干子查询数据集的合集/交集/差集,所述查询节点具有所述若干子查询数据集分别对应的子查询节点,以及对应于子查询数据集之间的求并/求交/求差操作的集合操作子节点。
在一种可能的实施方式中,所述查询节点具有前置步骤子节点,用于指示该查询节点对应的查询步骤的前一步骤对应的查询节点;
基于所述查询步骤的次序,确定各查询节点之间的从属关系,包括:
基于所述查询步骤的次序,确定各查询节点的前置步骤子节点。
在一种可能的实施方式中,所述前置子步骤节点具有查询子节点或无前置标识子节点,所述查询子节点对应于所述前一步查询步骤对应的其他查询节点,所述无前置标识子节点用于指示无前置查询步骤。
根据第二方面,提供了一种数据查询装置,包括:
自然语句获取单元,配置为,获取用于对数据存储系统进行数据查询的第一语句,所述第一语句基于自然语言;
自然语义确定单元,配置为,确定所述第一语句的自然语义,所述自然语义包括所述数据查询依据的查询条件、以及对于所述数据查询旨在获取的目标数据项的描述;
查询逻辑确定单元,配置为,基于所述自然语义,生成查询逻辑树,所述查询逻辑树指示依据所述查询条件,得到所述目标数据项的中间逻辑步骤,且,所述中间逻辑步骤与数据存储结构无关;
查询语句生成单元,配置为,根据所述查询逻辑树,生成基于数据查询语言的第二语句。
在一种可能的实施方式中,自然语义确定单元,进一步配置为:
基于对所述第一语句的语法分析和语义分析,生成第一语句的自然语义树;
基于所述自然语义,生成查询逻辑树,包括:
根据所述自然语义树,生成查询逻辑树。
在一种可能的实施方式中,查询语句生成单元,进一步配置为,
根据所述查询逻辑树、以及数据存储系统的数据存储结构,生成第二语句。
在一种可能的实施方式中,所述包括数据存储结构包括,数据存储系统的数据表结构以及数据表之间的关系。
在一种可能的实施方式中,查询逻辑确定单元,进一步配置为:
基于所述查询条件和目标数据项,以及预先定义的逻辑节点,生成查询逻辑树。
在一种可能的实施方式中,所述逻辑节点,包括查询节点、筛选条件节点、查询数据项节点,其中,所述筛选条件节点、查询数据项节点作为查询节点的子节点;
查询逻辑确定单元,进一步配置为:
基于所述查询条件和目标数据项,确定依次递进的若干查询步骤、以及各查询步骤分别对应的查询数据项、筛选条件;
基于所述查询步骤、所述查询步骤的次序、所述查询数据项和所述筛选条件,确定各查询步骤对应的查询节点、各查询节点拥有的筛选条件节点和查询数据项节点,以及各查询节点之间的从属关系;
根据所述各查询节点及其之间的从属关系,生成查询逻辑树。
在一种可能的实施方式中,所述查询逻辑树还包括筛选条件组节点和查询数据项组节点;所述筛选条件组节点作为所述各查询步骤对应的若干筛选条件节点的父节点,并作为所述各查询步骤对应的查询节点的子节点,所述查询数据项组节点作为若干查询数据项节点的父节点,并作为所述各查询步骤对应的查询节点的子节点。
在一种可能的实施方式中,所述查询逻辑树还包括数据项操作函数节点和数据项标识节点,并作为查询数据项节点的子节点,所述数据项操作函数节点对应于施加于查询数据项的操作函数,所述数据项标识节点对应于查询数据项的标识。
在一种可能的实施方式中,所述查询节点对应的查询结果数据集为若干子查询数据集的合集/交集/差集,所述查询节点具有所述若干子查询数据集分别对应的子查询节点,以及对应于子查询数据集之间的求并/求交/求差操作的集合操作子节点。
在一种可能的实施方式中,所述查询节点具有前置步骤子节点,用于指示该查询节点对应的查询步骤的前一步骤对应的查询节点;
查询逻辑确定单元,进一步配置为:
基于所述查询步骤的次序,确定各查询节点的前置步骤子节点。
在一种可能的实施方式中,所述前置子步骤节点具有查询子节点或无前置标识子节点,所述查询子节点对应于所述前一步查询步骤对应的其他查询节点,所述无前置标识子节点用于指示无前置查询步骤。
根据第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行第一方面所述的方法。
根据第四方面,提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现第一方面所述的方法。
利用以上各个方面中的方法、装置、存储介质和计算设备中的一个或多个,大大提高根据依据自然语言的查询结果的准确率,以及提高对于依据自然语言的复杂查询作业的支持能力。
附图说明
为了更清楚说明本发明实施例的技术方案,下面将对实施例描述中所需使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出根据本说明书实施例的一种数据查询方法的原理示意图;
图2示出根据本说明书实施例的一种数据查询方法的流程图;
图3示出根据本说明书实施例的自然语义树的示意图;
图4示出根据本说明书实施例的查询逻辑树的示意图;
图5示出根据本说明书实施例的生成的SQL语句的示意图;
图6示出根据本说明书实施例的一种数据查询装置的结构图。
具体实施方式
下面将结合附图,对本发明书提供的方案进行描述。
如前所述,使用自然语言进行数据查询,可以大大降低查询数据操作的技术门槛,使得查询操作人员无需掌握专业的数据查询语言既可以方便的进行数据查询。但是,目前利用自然语言进行数据查询也存在问题。基于自然语言的数据查询和分析,对于数据提取而言,语言解析后得到查询语句,基本上要求完全准确。这方面与传统的自然语言处理NLP(Natural Language Processing)领域的自然语言处理算法不同,传统的自然语言处理的结果通常具有概率性,而不是完全准确。所以,目前主流的使用自然语言进行数据查询的技术方案(例如seq2sql方案),通常是通过先将自然语言翻译为数据查询语言(例如,结构化查询语言,Structured Query Language,简称,SQL),然后再通过数据查询语言进行数据查询。
但是,这种方案也存在问题。自然语言与SQL语言之类的数据查询语言之间的语法差距非常大。例如以下几点:1)SQL语法具有JOIN关键字,用于表示表之间的关联关系。而自然语言表述中通常不会出现表的关联关系。2)SQL语法使用关键字GROUP BY进行分组,且被分组的数据项既需要处于GROUP BY的后置位置,又要出现在查询关键字SELECT的后置位置。而自然语言表述中通常不会出现这种表达方式。3)SQL语法对数据聚合筛选(例如数据分组后的筛选)利用特定关键字HAVING引出筛选条件。而自然语言中不会区分一般数据筛选和数据聚合筛选。故而,将自然语言直接翻译为SQL难度很高。例如,当前先进的seq2sql算法仅支持单表单层聚合下的80%左右的数据查询准确性,且难以支持企业内部真实场景下的各类复杂数据分析要求。
为了解决上述技术问题,本说明书实施例提供了一种数据查询方法。图1示出根据本说明书实施例的一种数据查询方法的原理示意图。如图1所示,该方法的核心思想是,。首先,获取用户输入的自然语言形式的查询语句。然后,解析自然查询语句,获取其中含有的例如包括查询条件、查询目的或查询计算公式在内的自然语义。根据该自然语义,确定查询的逻辑步骤(该逻辑步骤与数据的具体如何存储于数据库中无关),并利用预先设计的、用于表示查询逻辑的的中间语言(IL,Intermediate language),及一种以树状结构表示查询逻辑的图形化语言,生成由表示查询逻辑步骤的查询逻辑树。最后根据查询逻辑树,生成对应的用于从数据库获取数据的数据查询语言形式的查询语句(例如为SQL语句)。此后,可以执行该数据查询语句,从数据库得到查询结果数据集。
相对于现有技术中,直接将自然语言语句转换为查询执行语句。采用该方法,可以大大降低了语句转换的复杂度,提高了语句转换的准确率,并可以获取更复杂的查询执行语句,满足更复杂的数据分析要求。具体的,由于查询逻辑树本身只根据自然查询语句的语义,确定查询的各个逻辑步骤,而与具体的数据库中的包括数据表构成、表关系在内具体数据存储结构无关。即查询逻辑树不包括与具体数据存储结构相关的内容。而在数据查询语言(例如SQL语言)的语法中,与自然语言语法差别最大的通常为表关联语句(例如,SQL中JOIN语句)、分组语句(例如,SQL中GROUP BY)和聚合筛选语句(例如,SQL中HAVING语句),这些语句均是与具体的数据存储结构,例如数据表构成、表关系有关。也就是说,查询逻辑树无须包括与例如JOIN语句、分组GROUP BY和HAVING语句相关的内容。进而,根据自然查询语句生成查询逻辑树,在语法转换和计算复杂度上,大大低于直接将自然查询语句转化为数据查询语言。在获取查询逻辑树后,则可以结合具体的数据存储结构和查询逻辑树,生成可以执行的、基于数据查询语言的数据查询语句。从整体转换过程来说,使用该方法可以大大降低整体过程的复杂度,提高转换准确率。并且,由于基于查询逻辑树获取最终查询执行语句的难度,相对于从自然语言直接获取查询执行语句大大降低,使用该方法可以获取更复杂的查询执行语句,满足复杂数据分析要求。
图2示出根据本说明书实施例的一种数据查询方法的流程图。如图2所示,该方法包括如下步骤:
首先,在步骤21,获取用于对数据存储系统进行数据查询的第一语句。
该步骤中,获取的第一语句是基于自然语言的语句,并用于针对数据存储系统进行数据查询。在不同的实施例中,可以基于不同的具体方式获取该自然语句。在一个例子中,例如,可以获取用户通过界面输入的自然语句。本说明书实施例所关注的是获取自然语句后,根据自然语句的语言处理和数据查询过程,而对于通过何种具体方式获取该自然语句并不关注。数据存储系统,是保存有用户希望通过该自然语句获取的数据的存储系统。在不同的实施例中,可以是不同具体类型的数据存储系统,具有不同的具体架构方式,本说明书对此均不做限定。
在得到第一语句之后,在步骤22,确定第一语句的自然语义。该步骤中,确定的自然语义中包括数据查询依据的查询条件、以及对于所述数据查询旨在获取的目标数据项的描述。
语句的语义(semantic)即语句所蕴含的意义。也就是说,根据获取到的旨在进行数据查询的自然语句,确定包括查询条件和查询目的(目标数据项)在内的内在函数。在不同的实施例中,确定的自然语义可以具有不同的具体表现形式,本说明书对此不做限定。例如,自然语义可以表现为一种树状图,即自然语义树。因此,在一个实施例中,可以基于对所述第一语句的语法分析和语义分析,生成第一语句的自然语义树。图3示出根据本说明书实施例的自然语义树的示意图。如图3所示,该例子中,获取用户输入的一条自然查询语句为‘昨天各城市总金额小于10万的客户的数目’。对该语句进行语义分析后,得到该语句的语义树。其中,‘时间’节点表示用户希望查询的时间范围(查询条件),‘数据维度’节点表示用户希望查询的目标数据项、或获取目标数据项所基于的基础数据项,‘计算公式’节点表示用户查询所设定的计算条件(查询条件),‘目的’节点表示用户在希望查询的基础数据项之上设定的计算目的(对于目标数据项的描述)。
然后,在步骤23,基于所述自然语义,生成查询逻辑树。该步骤中,可以根据步骤22中确定的自然语义,生成表达查询逻辑的树状图,即查询逻辑树。该查询逻辑树可以指示,依据上述自然语义中包括的查询条件,得到目标数据项的中间逻辑步骤,且,该中间逻辑步骤与数据存储结构无关。
具体的,可以将自然语义表达用户希望得到的最终查询结果(查询数据集)的取得过程,分解为若干查询步骤,每个步骤可以对应于一个单独查询。最终的查询结果可以通过最后查询步骤得到,而最后步骤可以是在前置步骤获取的查询结果之上的递进查询结果。
例如,图1所示的实施例中,用户希望查找‘昨天各城市总金额小于10万的客户的数目’,根据图1中的自然语义树,可以得到该条查找语句希望获取的数据项为各城市、以及各城市满足条件(总金额小于10万)的客户数量。要确定各城市满足条件(总金额小于10万)的客户数量,可以首先确定各城市满足条件的客户有哪些。因此,在一个实施例中,可以将该查询分解为两个递进的查询,也就是两个递进的步骤:
第一步,查询各个城市、以及各个城市支付金额小于10w的用户ID。
其数据筛选条件可以表示为:交易时间=‘昨天’,SUM(金额)<100000,
其获取的数据集包括的数据项可表示为:城市、用户ID。
第二步,根据第一步获取的数据集,确定得到各个城市支付金额小于10w的用户数量。
其数据筛选条件:无。
其获取的数据集包括的数据项为:城市、用户数量。
其中,用户数量可以根据对于第一步得到的数据集中用户ID进行计数得到,例如表示为COUNTD(用户ID)。
可见,上述各个查询步骤不涉及其查询的数据在例如数据库中的具体存储结构,例如不涉及城市、用户ID保存于数据库中的哪些表里,这些表之间关系是什么。
而利用查询逻辑树,可以以树状结构图表示上述的查询步骤以及它们之间的次序。因此,根据一种实施方式,可以基于自然语义中包括的查询条件和目标数据项,以及预先定义的逻辑节点,生成查询逻辑树。逻辑节点可以表示逻辑步骤中进一步细化的逻辑元素,例如该步骤中得到的查询数据集、查询筛选条件、查询项等。在不同的实施例中,逻辑节点可以具有不同的具体定义方式。在一个实施例中,逻辑节点可以包括查询节点、筛选条件节点、查询数据项节点,其中,筛选条件节点、查询数据项节点作为查询节点的子节点。其中,查询节点可以对应一个查询步骤得到的查询数据集,筛选条件节点、查询数据项节点可以分别对应于获取该查询数据集的数据筛选条件、以及该查询数据集包括的数据项。进而,可以基于所述查询条件和目标数据项,确定依次递进的若干查询步骤、以及各查询步骤分别对应的查询数据项、筛选条件;基于所述查询步骤、所述查询步骤的次序、所述查询数据项和所述筛选条件,确定各查询步骤对应的查询节点、各查询节点拥有的筛选条件节点和查询数据项节点,以及各查询节点之间的从属关系;根据所述各查询节点及其之间的从属关系,生成查询逻辑树。
图4示出根据本说明书实施例的查询逻辑树的示意图。如图4所示,根据上述的由图3得到的两个分解步骤,可以生成对应的查询逻辑树,其中包括,第一步(查询步骤1)、第二步(查询步骤2)分别对应的查询节点,即查询节点1和查询节点2,第一步、第二步的查询条件和查询数据项,分别对应于查询节点1和查询节点各自拥有筛选条件子节点、查询数据项子节点。
在不同的实施例中,单个查询中也可以包括多个不同的查询条件。因此,在一个实施例中,查询逻辑树还可以包括筛选条件组节点和查询数据项组节点;所述筛选条件组节点作为所述各查询步骤对应的若干筛选条件节点的父节点,并作为所述各查询步骤对应的查询节点的子节点,所述查询数据项组节点作为若干查询数据项节点的父节点,并作为所述各查询步骤对应的查询节点的子节点。例如,图4所示的实施例中,查询节点2具有查询数据项组子节点-数据项组节点1,数据项组节点1包括分别对应于两个查询筛选条件的查询数据项节点1和查询数据项节点2。
在不同的实施例中,数据查询中对于查询数据项可以进行函数操作。因此,在一个实施例中,查询逻辑树还包括数据项操作函数节点和数据项标识节点,并作为查询数据项节点的子节点,所述数据项操作函数节点对应于施加于查询数据项的操作函数,所述数据项标识节点对应于查询数据项的标识。例如,图4所示的实施例中,查询数据项节点1具有操作函数子节点和数据项标识节点,分别对应于施加于查询数据项的操作函数(COUNTD,计数函数)和该数据项的标识(user id)。在不同的实施例中,可以包括不同类型的数据项操作函数,例如,计数函数、平均函数、平均取值函数、最大取值函数、最小取值函数等中的一种,本说明书对此不做限制。需要注意的是,根据不同的施加函数的性质,对于原数据项施加操作函数之后,得到的可以是原数据项或非原数据项,例如上述对于用户id进行计数后,得到是用户的数量,而不是用户id,而例如对用户id取最大值,则得到的依然是用户id。
在不同的实施例中,一个查询结果还可以是多个其他数据查询结果的合集、并集或差集。因此,在一个实施例中,所述查询节点对应的查询结果数据集为若干子查询数据集的合集/交集/差集,所述查询节点具有所述若干子查询数据集分别对应的子查询节点,以及对应于子查询数据集之间的求并操作(UNION)、求交操作(INTESECT)或求差操作(EXCEPT)的集合操作子节点。
如前所述,整个查询逻辑可以包含依次递进的若干查询步骤,其中,次序居后的查询步骤具有前置步骤。所以,在查询逻辑树中,对于居后步骤对应的查询节点,可以指示其前置步骤的对应节点。因此,在一个实施例中,查询节点可以具有前置步骤子节点,用于指示该查询节点对应的查询步骤的前一步骤对应的查询节点;可以基于所述查询步骤的次序,确定各查询节点的前置步骤子节点。在一个具体的实施例中,前置子步骤节点可以具有查询子节点或无前置标识子节点,所述查询子节点对应于所述前一步查询步骤对应的其他查询节点,所述无前置标识子节点用于指示无前置查询步骤。例如,图4所示的实施例中,查询节点2具有前置步骤子节点2,前置步骤子节点2的子节点包括查询节点1,表示查询步骤2的前置步骤为查询步骤1。而查询节点1的前置步骤子节点具有无前置标识(NONE)子节点,表示查询步骤1没有前置步骤。
在得到查询逻辑树后,在步骤24,根据查询逻辑树,生成基于数据查询语言的第二语句。
该步骤,根据查询逻辑树,生成基于数据查询语言的查询语句。该语句例如可以由数据库管理系统、数据计算引擎或其他数据存储和计算系统执行,从数据存储系统中获取最终的查询结果数据集。在不同的实施例中,可以生成不同具体类型的数据查询语言,本说明书对此不做限制。在一个实施例中,所述数据查询语言可以包括SQL语言、SPARK数据查询语言中的一种。
具体的,生成可以从数据存储系统中获取数据的查询语句,可以依据数据存储系统的数据存储结构,例如查询的各个目标数据项实际保存于哪些具体的数据表、不同的数据表之间的关系。因此,在一个实施例中,可以根据所述查询逻辑树、以及数据存储系统的数据存储结构,生成第二语句。在一个具体的实施例中,包括数据存储结构可以包括,数据存储系统的数据表结构以及数据表之间的关系。
图5示出根据本说明书实施例的生成的SQL语句的示意图。如图5所示,可以根据图4所示的查询逻辑树,结合待查询数据在数据存储系统中的具体存储方式,生成最终可以执行的SQL语句。具体的,该SQL语句中,由对应于查询步骤2的查询语句(SELECT语句)嵌套了对应于查询步骤1的查询语句。具体的,客户及其消费数据保存在F表和D表中。因此,在步骤1对应的SELECT语句中,可以通过JOIN语句将F表和D表连接起来(连接条件可以依据F表和D表的实际表结构和关联关系,例如两者都有数据定义相同的user_id字段,对应于用户ID,则可以根据user_id连接两者)。接着,通过条件语句WHEREE将查询条件指定为‘昨天’的消费记录。然后,通过分组语句GROUP BY和聚合条件语句HAVING,得到各城市中消费金额大于10万的用户ID。此后,在步骤2对应的SELECT语句中,根据步骤1对应的SELECT语句的查询结果,得到各城市中消费金额大于10万的用户数量。可以看到,生成SQL具体依据了查询逻辑树表示的查询逻辑以及待查询数据在数据库中的具体存储结构。
上面介绍了根据本说明书实施例的一种数据查询方法。根据另一方面的实施例,还提供一种数据查询装置。图6示出根据本说明书实施例的一种数据查询装置的结构图。如图6所示,该装置600包括:
自然语句获取单元61,配置为,获取用于对数据存储系统进行数据查询的第一语句,所述第一语句基于自然语言;
自然语义确定单元62,配置为,确定所述第一语句的自然语义,所述自然语义包括所述数据查询依据的查询条件、以及对于所述数据查询旨在获取的目标数据项的描述;
查询逻辑确定单元63,配置为,基于所述自然语义,生成查询逻辑树,所述查询逻辑树指示依据所述查询条件,得到所述目标数据项的中间逻辑步骤,且,所述中间逻辑步骤与数据存储结构无关;
查询语句生成单元64,配置为,根据所述查询逻辑树,生成基于数据查询语言的第二语句。
在一个实施例中,自然语义确定单元,可以进一步配置为:
基于对所述第一语句的语法分析和语义分析,生成第一语句的自然语义树;
基于所述自然语义,生成查询逻辑树,包括:
根据所述自然语义树,生成查询逻辑树。
在一个实施例中,查询语句生成单元,可以进一步配置为,
根据所述查询逻辑树、以及数据存储系统的数据存储结构,生成第二语句。
在一个实施例中,所述包括数据存储结构可以包括,数据存储系统的数据表结构以及数据表之间的关系。
在一个实施例中,查询逻辑确定单元,可以进一步配置为:
基于所述查询条件和目标数据项,以及预先定义的逻辑节点,生成查询逻辑树。
在一个实施例中,所述逻辑节点,可以包括查询节点、筛选条件节点、查询数据项节点,其中,所述筛选条件节点、查询数据项节点作为查询节点的子节点;
查询逻辑确定单元,可以进一步配置为:
基于所述查询条件和目标数据项,确定依次递进的若干查询步骤、以及各查询步骤分别对应的查询数据项、筛选条件;
基于所述查询步骤、所述查询步骤的次序、所述查询数据项和所述筛选条件,确定各查询步骤对应的查询节点、各查询节点拥有的筛选条件节点和查询数据项节点,以及各查询节点之间的从属关系;
根据所述各查询节点及其之间的从属关系,生成查询逻辑树。
在一个实施例中,所述查询逻辑树还可以包括筛选条件组节点和查询数据项组节点;所述筛选条件组节点作为所述各查询步骤对应的若干筛选条件节点的父节点,并作为所述各查询步骤对应的查询节点的子节点,所述查询数据项组节点作为若干查询数据项节点的父节点,并作为所述各查询步骤对应的查询节点的子节点。
在一个实施例中,所述查询逻辑树还可以包括数据项操作函数节点和数据项标识节点,并作为查询数据项节点的子节点,所述数据项操作函数节点对应于施加于查询数据项的操作函数,所述数据项标识节点对应于查询数据项的标识。
在一个实施例中,所述查询节点对应的查询结果数据集,可以为若干子查询数据集的合并集,所述查询节点具有所述若干子查询数据集分别对应的子查询节点,以及对应于子查询数据集之间的求并/求交/求差操作的集合操作子节点。
在一个实施例中,所述查询节点可以具有前置步骤子节点,用于指示该查询节点对应的查询步骤的前一步骤对应的查询节点;
查询逻辑确定单元,可以进一步配置为:
基于所述查询步骤的次序,确定各查询节点的前置步骤子节点。
在一个实施例中,所述前置子步骤节点可以具有查询子节点或无前置标识子节点,所述查询子节点对应于所述前一步查询步骤对应的其他查询节点,所述无前置标识子节点用于指示无前置查询步骤。
根据又一方面的实施例,还提供一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行上述的方法。
根据再一方面的实施例,还提供一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现上述的方法。
需要理解,本文中的“第一”,“第二”等描述,仅仅为了描述的简单而对相似概念进行区分,并不具有其他限定作用。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本发明所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的技术方案的基础之上,所做的任何修改、等同替换、改进等,均应包括在本发明的保护范围之内。
Claims (14)
1.一种数据查询方法,包括:
获取用于对数据存储系统进行数据查询的第一语句,所述第一语句基于自然语言;
确定所述第一语句的自然语义,所述自然语义包括所述数据查询依据的查询条件、以及对于所述数据查询旨在获取的目标数据项的描述;
基于所述自然语义以及预先定义的逻辑节点,生成查询逻辑树,所述查询逻辑树指示依据所述查询条件得到所述目标数据项的中间逻辑步骤,所述中间逻辑步骤由依次递进的若干查询步骤构成,且与数据存储结构无关;;
根据所述查询逻辑树,生成基于数据查询语言的第二语句。
2.根据权利要求1所述的方法,其中,生成基于数据查询语言的第二语句,包括:
根据所述查询逻辑树、以及数据存储系统的数据存储结构,生成第二语句。
3.根据权利要求2所述的方法,其中,所述数据存储结构包括,数据存储系统的数据表结构以及数据表之间的关系。
4.根据权利要求1所述的方法,其中,所述数据查询语言包括SQL语言、SPARK数据查询语言中的一种。
5.根据权利要求1所述的方法,其中,所述确定所述第一语句的自然语义,包括,基于对所述第一语句的语法分析和语义分析,生成第一语句的自然语义树;
所述基于所述自然语义以及预先定义的逻辑节点,生成查询逻辑树,包括:根据所述自然语义树以及所述逻辑节点,生成查询逻辑树。
6.根据权利要求1所述的方法,其中,所述逻辑节点,包括查询节点、筛选条件节点、查询数据项节点,其中,所述筛选条件节点、查询数据项节点作为查询节点的子节点;
基于所述自然语义,以及预先定义的逻辑节点,生成查询逻辑树,包括:
基于所述查询条件和目标数据项,确定依次递进的若干查询步骤、以及各查询步骤分别对应的查询数据项、筛选条件;
基于所述查询步骤、所述查询步骤的次序、所述查询数据项和所述筛选条件,确定各查询步骤对应的查询节点、各查询节点拥有的筛选条件节点和查询数据项节点,以及各查询节点之间的从属关系;
根据所述各查询节点及其之间的从属关系,生成查询逻辑树。
7.根据权利要求6所述的方法,其中,所述查询逻辑树还包括筛选条件组节点和查询数据项组节点;所述筛选条件组节点作为所述各查询步骤对应的若干筛选条件节点的父节点,并作为所述各查询步骤对应的查询节点的子节点,所述查询数据项组节点作为若干查询数据项节点的父节点,并作为所述各查询步骤对应的查询节点的子节点。
8.根据权利要求7所述的方法,其中,所述查询逻辑树还包括数据项操作函数节点和数据项标识节点,并作为查询数据项节点的子节点,所述数据项操作函数节点对应于施加于查询数据项的操作函数,所述数据项标识节点对应于查询数据项的标识。
9.根据权利要求6所述的方法,其中,所述查询节点对应的查询结果数据集为若干子查询数据集的合集/交集/差集,所述查询节点具有所述若干子查询数据集分别对应的子查询节点,以及对应于子查询数据集之间的求并/求交/求差操作的集合操作子节点。
10.根据权利要求6所述的方法,其中,所述查询节点具有前置步骤子节点,用于指示该查询节点对应的查询步骤的前一步骤对应的查询节点;
基于所述查询步骤的次序,确定各查询节点之间的从属关系,包括:
基于所述查询步骤的次序,确定各查询节点的前置步骤子节点。
11.根据权利要求10所述的方法,其中,所述前置子步骤节点具有查询子节点或无前置标识子节点,所述查询子节点对应于前一步查询步骤对应的其他查询节点,所述无前置标识子节点用于指示无前置查询步骤。
12.一种数据查询装置,包括:
自然语句获取单元,配置为,获取用于对数据存储系统进行数据查询的第一语句,所述第一语句基于自然语言;
自然语义确定单元,配置为,确定所述第一语句的自然语义,所述自然语义包括所述数据查询依据的查询条件、以及对于所述数据查询旨在获取的目标数据项的描述;
查询逻辑确定单元,配置为,基于所述自然语义以及预先定义的逻辑节点,生成查询逻辑树,所述查询逻辑树指示依据所述查询条件,得到所述目标数据项的,由依次递进的若干查询步骤构成的中间逻辑步骤,且,所述中间逻辑步骤与数据存储结构无关;
查询语句生成单元,配置为,根据所述查询逻辑树,生成基于数据查询语言的第二语句。
13.一种计算机可读存储介质,其上存储有计算机程序,当所述计算机程序在计算机中执行时,令计算机执行权利要求1-11中任一项的所述的方法。
14.一种计算设备,包括存储器和处理器,所述存储器中存储有可执行代码,所述处理器执行所述可执行代码时,实现权利要求1-11中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210873120.7A CN115221198A (zh) | 2022-01-19 | 2022-01-19 | 一种数据查询方法及装置 |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210058343.8A CN114090627B (zh) | 2022-01-19 | 2022-01-19 | 一种数据查询方法及装置 |
CN202210873120.7A CN115221198A (zh) | 2022-01-19 | 2022-01-19 | 一种数据查询方法及装置 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210058343.8A Division CN114090627B (zh) | 2022-01-19 | 2022-01-19 | 一种数据查询方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115221198A true CN115221198A (zh) | 2022-10-21 |
Family
ID=80308511
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210058343.8A Active CN114090627B (zh) | 2022-01-19 | 2022-01-19 | 一种数据查询方法及装置 |
CN202210873120.7A Pending CN115221198A (zh) | 2022-01-19 | 2022-01-19 | 一种数据查询方法及装置 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210058343.8A Active CN114090627B (zh) | 2022-01-19 | 2022-01-19 | 一种数据查询方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN114090627B (zh) |
Family Cites Families (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080235199A1 (en) * | 2007-03-19 | 2008-09-25 | Yunyao Li | Natural language query interface, systems, and methods for a database |
CN103577590A (zh) * | 2013-11-12 | 2014-02-12 | 北京润乾信息系统技术有限公司 | 一种数据查询方法和系统 |
KR101661198B1 (ko) * | 2014-07-10 | 2016-10-04 | 네이버 주식회사 | 단문/복문 구조의 자연어 질의에 대한 검색 및 정보 제공 방법 및 시스템 |
CN104657440B (zh) * | 2015-01-30 | 2020-05-15 | 欧阳江 | 结构化查询语句生成系统及方法 |
CN104657439B (zh) * | 2015-01-30 | 2019-12-13 | 欧阳江 | 用于自然语言精准检索的结构化查询语句生成系统及方法 |
US20180144065A1 (en) * | 2015-04-29 | 2018-05-24 | Mahesh Yellai | Method for Generating Visual Representations of Data Based on Controlled Natural Language Queries and System Thereof |
CN107451153B (zh) * | 2016-05-31 | 2020-03-31 | 北京京东尚科信息技术有限公司 | 输出结构化查询语句的方法和装置 |
CN107885786B (zh) * | 2017-10-17 | 2021-10-26 | 东华大学 | 面向大数据的自然语言查询接口实现方法 |
CN110727839B (zh) * | 2018-06-29 | 2024-04-26 | 微软技术许可有限责任公司 | 自然语言查询的语义解析 |
US11036726B2 (en) * | 2018-09-04 | 2021-06-15 | International Business Machines Corporation | Generating nested database queries from natural language queries |
CN109947794B (zh) * | 2019-02-21 | 2023-09-01 | 东华大学 | 一种交互式自然语言查询转换方法 |
US11880658B2 (en) * | 2019-03-25 | 2024-01-23 | Jpmorgan Chase Bank, N.A. | Method and system for implementing a natural language interface to data stores using deep learning |
CN112580357A (zh) * | 2019-09-29 | 2021-03-30 | 微软技术许可有限责任公司 | 自然语言查询的语义解析 |
CN115039090A (zh) * | 2020-03-23 | 2022-09-09 | 深圳市欢太科技有限公司 | 数据查询方法、装置、服务器及存储介质 |
CN113032418B (zh) * | 2021-02-08 | 2022-11-11 | 浙江大学 | 一种基于树状模型的复杂自然语言查询转sql方法 |
-
2022
- 2022-01-19 CN CN202210058343.8A patent/CN114090627B/zh active Active
- 2022-01-19 CN CN202210873120.7A patent/CN115221198A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
CN114090627A (zh) | 2022-02-25 |
CN114090627B (zh) | 2022-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110543517B (zh) | 一种基于Elasticsearch实现海量数据复杂查询方法、装置及介质 | |
JP4953468B2 (ja) | オントロジーデータのインポート/エクスポートのための方法および装置 | |
US9053210B2 (en) | Graph query processing using plurality of engines | |
CN107515887B (zh) | 一种适用于多种大数据管理系统的交互式查询方法 | |
JP5681041B2 (ja) | 名寄せ規則生成方法、装置、およびプログラム | |
CN105718593A (zh) | 一种数据库查询优化方法及系统 | |
CN111274267A (zh) | 一种数据库查询方法、装置及计算机可读取存储介质 | |
CN104765731A (zh) | 数据库查询优化方法和设备 | |
CN114357276A (zh) | 数据查询方法、装置、电子设备以及存储介质 | |
CN110674229A (zh) | 一种基于ast的关系型数据库sql表关系分析及展现方法 | |
CN110019314B (zh) | 基于数据项分析的动态数据封装方法、客户端和服务端 | |
WO2015010509A1 (zh) | 一种基于一维线性空间实现Trie树的词典检索方法 | |
CN109947791A (zh) | 一种数据库语句优化方法、装置、设备及存储介质 | |
CN109241080A (zh) | 一种fql查询语言的构建使用方法及其系统 | |
CN118132587A (zh) | 一种基于自然语言的数据分析方法、系统、电子设备及存储介质 | |
CN117667991A (zh) | 结构化查询语言生成方法、校验方法及装置 | |
CN115794833A (zh) | 数据处理方法、服务器和计算机存储介质 | |
CN114372174A (zh) | 一种xml文档分布式查询方法及系统 | |
CN104156431A (zh) | 一种基于实体图社团结构的rdf关键词查询方法 | |
CN110990423B (zh) | Sql语句的执行方法、装置、设备和存储介质 | |
CN117290377A (zh) | 一种关系型数据库间sql语句的转换方法以及装置 | |
CN114090627B (zh) | 一种数据查询方法及装置 | |
Flouris et al. | Issues in complex event processing systems | |
CN116400910A (zh) | 一种基于api替换的代码性能优化方法 | |
CN114416848A (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 |