CN112632110A - 一种自动生成查询语句的数据提取方法及装置 - Google Patents
一种自动生成查询语句的数据提取方法及装置 Download PDFInfo
- Publication number
- CN112632110A CN112632110A CN202110012787.3A CN202110012787A CN112632110A CN 112632110 A CN112632110 A CN 112632110A CN 202110012787 A CN202110012787 A CN 202110012787A CN 112632110 A CN112632110 A CN 112632110A
- Authority
- CN
- China
- Prior art keywords
- query
- user
- data
- database
- data field
- 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
- 238000000034 method Methods 0.000 title claims abstract description 33
- 238000013075 data extraction Methods 0.000 title claims abstract description 28
- 238000006243 chemical reaction Methods 0.000 claims description 27
- 238000013507 mapping Methods 0.000 claims description 12
- 238000012545 processing Methods 0.000 claims description 9
- 238000012795 verification Methods 0.000 claims description 9
- 239000008280 blood Substances 0.000 claims description 6
- 210000004369 blood Anatomy 0.000 claims description 6
- 230000009466 transformation Effects 0.000 claims description 6
- 238000010586 diagram Methods 0.000 description 3
- 230000000694 effects Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000005065 mining Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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/24—Querying
- G06F16/245—Query processing
- G06F16/2457—Query processing with adaptation to user needs
- G06F16/24578—Query processing with adaptation to user needs using ranking
-
- 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/248—Presentation of query results
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种自动生成查询语句的数据提取方法,包括如下步骤。步骤S10:动态扫描数据库,生成固定格式的中文文本提供给用户。步骤S20:获取用户在所述固定格式的中文文本上表达的查询需求。步骤S30:根据所述查询需求自动生成大数据结构化查询语言形式表示的查询语句。步骤S40:执行所述组装好的查询语句,并将至少是部分的查询结果返回给用户,供用户预览;如果用户对预览的查询结果满意,则将全部的查询结果返回给用户;如果用户对预览的查询结果不满意,则回到步骤S20获取用户在所述固定格式的中文文本上表达的调整后的查询需求。上述方法可由用户自助构造查询语句并根据预览结果实时调整查询语句,提高了数据提取的效率。
Description
技术领域
本申请涉及一种对查询需求进行解析,自动转换为以大数据结构化查询语言(Structured Query Language,SQL)形式表达的查询语句,以所述查询语句自助取出所需要的数据的数据提取(data extraction)方法。
背景技术
大数据平台(big data platform)是指对大数据量进行存储、运算、展现等的操作平台,是一个集数据接入、数据处理、数据存储、查询检索、分析挖掘等应用接口等为一体的平台。大数据平台允许数据开发人员或是将写好的程序放在“云”里运行,或是使用“云”里提供的服务,或二者皆是。
大数据平台通常包括多个数据库(database),每个数据库包括一个或多个数据表(data table),每个数据表包括一个或多个数据字段(data field)。每个数据库有数据库名称,部分或全部的数据库有注释。每个数据表有数据表名称,部分或全部的数据表有注释。每个数据字段有数据字段名称,部分或全部的数据字段有注释。数据库名称、数据表名称、数据字段名称通常为英文字符与阿拉伯数字的组合,较难理解。数据库注释、数据表注释、数据字段注释通常为中文或英文的详细描述内容,易于理解。
大数据结构化查询语言是指在大数据平台架构下的结构化查询语言,包括Hive-SQL、Presto语法等。
在大数据平台中,经常会出现业务方需要从大量数据中获取某类特定条件下的数据进行查验的情况。传统的做法一般是业务方直接联系数据开发人员或是数据分析师从数据库中使用各种结构化查询语言构造查询语句,然后在大数据平台运行对应的查询语句,手动导出查询结果,下载至业务方。如果需要微调需求,业务方需要重新找到数据开发人员或是数据分析师,重新进行查询语句的开发及运行、输出查询结果文件等,流程复杂。总之,不熟悉代码的业务方获取所需数据具有非常大的难度。
发明内容
本申请所要解决的技术问题是提供一种不熟悉代码的业务方可以自行构造查询语句,并利用所述查询语句在大数据平台进行查询,能够预览至少是部分的查询结果,并能根据预览的查询结果自行调整查询语句,最终自行输出全部查询结果的数据提取方法。
为解决上述技术问题,本申请提出了一种自动生成查询语句的数据提取方法,包括如下步骤。步骤S10:动态扫描数据库,解析数据库、数据表、数据字段的注释,生成固定格式的中文文本“数据库注释-数据表注释-数据字段注释”提供给用户。步骤S20:获取用户在所述固定格式的中文文本上表达的查询需求;所述查询需求是“数据库注释-数据表注释-数据字段注释”与运算符的组合。步骤S30:根据所述查询需求自动生成大数据结构化查询语言形式表示的查询语句;具体依次包括:步骤S32:使用正则表达式对所述查询需求进行文本替换;步骤S34:将所述文本替换后的查询需求转换为逆波兰式;步骤S36:将所述逆波兰式的查询需求组装为大数据结构化查询语言形式表示的可以执行的查询语句;组装好的查询语句是数据字段名称与操作符的组合。步骤S40:执行所述组装好的查询语句,并将至少是部分的查询结果返回给用户,供用户预览;如果用户对预览的查询结果满意,则将全部的查询结果返回给用户;如果用户对预览的查询结果不满意,则回到步骤S20获取用户在所述固定格式的中文文本上表达的调整后的查询需求。上述方法(实施例一)可由用户自助构造查询语句并根据预览结果实时调整查询语句,提高了数据提取的效率。
优选地,所述步骤S40中,使用异步队列;即任一时间仅执行一个查询语句。这样可以节省系统资源。
优选地,所述步骤S40中,预先创建并缓存多个预检索结果;在获取查询语句后,先寻找与该查询语句对应的预检索结果,或者尝试组合多项预检索结果以满足该查询语句;如果一项预检索结果或多项预检索结果的组合均无法满足该查询语句,再真正地执行该查询语句。这样一方面可以提高查询效率,如果预检索结果可以满足查询语句则能够快速反馈给用户;另一方面可以节省系统资源。
优选地,所述步骤S40中,保存每一条查询语句的查询日志。这样便于后续的分析调试与故障维护。
进一步地,增加步骤S38,将步骤S40改为步骤S40b,增加步骤S50。所述步骤S38在步骤S30中且在步骤S36之后;所述步骤S38为:查询组装好的查询语句所含的数据字段的原始来源数据字段、原始来源数据表及原始来源数据库。所述步骤S40b:执行所述组装好的查询语句,执行完毕后暂不输出查询结果。所述步骤S50在步骤S40b之后;所述步骤S50为:各用户对各数据库、各数据表、各数据字段的访问权限记载于权限表中;如某一查询语句中的某个数据字段属于、或者该数据字段的原始来源属于该用户无权访问的数据库、数据表或数据字段,则向该用户提示无权访问的数据库、数据表或是数据字段的名称,并且不向该用户提供查询结果;否则,将至少是部分的查询结果返回给用户,供用户预览;如果用户对预览的查询结果满意,则将全部的查询结果返回给用户;如果用户对预览的查询结果不满意,则回到步骤S20获取用户在所述固定格式的中文文本上表达的调整后的查询需求。上述方法(实施例二)增加了用户执行查询时的权限控制,更加贴近实际应用场景。
本申请还提出了一种自动生成查询语句的数据提取装置,包括扫描库表模块、获取输入模块、语法转换模块和数据获取模块。所述扫描库表模块用来对各数据库、各数据库中的各数据表、各数据表中的各数据字段进行整体扫描,扫描时解析各数据库、各数据表、各数据字段对应的注释内容,形成“数据库名称-数据表名称-数据字段名称”与“数据库注释-数据表注释-数据字段注释”的一对一的映射;“数据库注释-数据表注释-数据字段注释”就是扫描库表模块所生成的固定格式的中文文本。所述获取输入模块用来获取用户在所述固定格式的中文文本上表达的查询需求;所述查询需求是“数据库注释-数据表注释-数据字段注释”与运算符的组合;用户的全部输入操作分为选择、条件、分组三类。所述语法转换模块用来根据用户输入的查询需求自动生成大数据结构化查询语言形式表示的查询语句;具体包括:使用正则表达式对所述查询需求进行文本替换;将所述文本替换后的查询需求转换为逆波兰式;将所述逆波兰式的查询需求组装为大数据结构化查询语言形式表示的可以执行的查询语句;组装好的查询语句是数据字段名称与操作符的组合。所述数据获取模块将组装好的查询语句加入查询队列并执行,执行完毕后根据不同的用户需求进行相应处理输出查询结果;供用户预览的是部分或全部的查询结果;如果用户对预览的查询结果满意,则将全部的查询结果返回给用户;如果用户对预览的查询结果不满意,则由获取输入模块再次获取用户在所述固定格式的中文文本上表达的调整后的查询需求。上述装置(实施例一)可由用户自助构造查询语句并根据预览结果实时调整查询语句,提高了数据提取的效率。
进一步地,所述语法转换模块包括正则转换单元、逆波兰式转化单元和结构化查询语言组装单元。所述正则转换单元用来使用正则表达式对所述查询需求进行文本替换,包括将“数据库注释-数据表注释-数据字段注释”替换为“数据库名称-数据表名称-数据字段名称”,以及将中文或简易描述的运算符替换成大数据结构化查询语言所对应的操作符;文本替换后的查询需求是采用正则表达式的“数据库名称-数据表名称-数据字段名称”与操作符的组合。所述逆波兰式转化单元用来将所述文本替换后的查询需求转换为逆波兰式,包括将所述文本替换后的查询需求拆分成三类栈,分别为选择栈、条件栈、以及分组栈;分别对应于用户输入的选择、条件、分组类型的操作;还将所述三类栈的每一类又分为元素栈、符号栈,并最终合并入元素栈。所述结构化查询语言组装单元用来将所述逆波兰式的查询需求组装为大数据结构化查询语言形式表示的可以执行的查询语句;包括将元素与操作符的位置关系由逆波兰式改为正则表达式。这是语法转换模块的一种具体实现方式。
优选地,所述逆波兰式转化单元将所述三类栈的每一类又分为元素栈、符号栈,并最终合并入元素栈采用如下方式:对已经分类为三类栈的所述文本替换后的查询需求进行扫描,创建元素栈和符号栈;每次扫到操作符,入符号栈;每次扫到元素,入元素栈;单目操作符扫到第一个元素后入栈,双目操作符扫到2个元素后入栈,以此类推;当元素栈存在的元素数量达到符号栈所需元素的数量时,弹出符号栈中的一个个操作符,将每一个操作符与参与该操作符运算的对应数量的元素组装后,压入元素栈;直到扫描完,符号栈中的操作符全部被弹出,与现有元素组合压入元素栈,最终所有元素与操作符均在元素栈内。这是逆波兰式转化单元的一种优选的实现方式。
优选地,所述结构化查询语言组装单元还用于:当分组栈中存在的分组条件没有出现于选择栈中时,将分组栈的分组条件加入选择栈中。这样更便于用户理解查询结果。
优选地,所述数据获取模块根据不同的用户需求进行相应处理输出查询结果采用如下方式;如果是预览的情况,按照表格形式来结构化查询结果的文本;如果是数据导出的形式,按照用户的要求导出对应的文件格式。这是数据获取模块的一种优选的实现方式。
优选地,所述数据获取模块逐个执行查询队列中的查询语句。这样可以节省系统资源。
优选地,所述数据获取模块预先创建并缓存多个预检索结果;在获取查询语句后,数据获取模块先寻找与该查询语句对应的预检索结果,或者尝试组合多项预检索结果以满足该查询语句;如果一项预检索结果或多项预检索结果的组合均无法满足该查询语句,数据获取模块再真正地执行该查询语句。这样一方面可以提高查询效率,如果预检索结果可以满足查询语句则能够快速反馈给用户;另一方面可以节省系统资源。
优选地,所述数据获取模块保存每一条查询语句的查询日志。这样便于后续的分析调试与故障维护。
进一步地,修改了所述语法转换模块和数据获取模块,增加了合规校验模块。修改后的语法转换模块是在结构化查询语言组装单元之后增加了血缘查询单元;所述血缘查询单元用来查询组装好的查询语句所含的数据字段的原始来源数据字段、原始来源数据表及原始来源数据库;包括获取选择栈、分组栈中存在的数据字段;定位组装好的查询语句所含的数据字段的原始来源数据字段、原始来源数据表及原始来源数据库,获取原始来源数据库、原始来源数据表、原始数据字段的名称,保存“组装好的查询语句所含的数据字段名称——该数据字段所在原始来源数据库、原始来源数据表、原始数据字段的名称”的映射关系。修改后的数据获取模块用于将组装好的查询语句加入查询队列并执行,执行完毕后暂不输出查询结果。所述合规校验模块用于修改用户权限表,动态添加、删除或修改用户、用户组有权访问的数据库、数据表以及数据字段和限制条数;还包括针对每一查询语句中的每个数据字段的直接来源以及原始来源,判断用户、用户组是否具有访问权限;如无权访问,则输出无权访问的具体数据库、数据表或是数据字段的名称,并且不向用户返回查询结果;还包括如果用户、用户组获取的查询结果的条数超过其对应数量限制,则向该用户返回超出数量限制的提示信息;如果判断用户、用户组具有访问权限且未超出数量限制,则根据不同的用户需求进行相应处理输出查询结果;供用户预览的是部分或全部的查询结果;如果用户对预览的查询结果满意,则将全部的查询结果返回给用户;如果用户对预览的查询结果不满意,则由获取输入模块再次获取用户在所述固定格式的中文文本上表达的调整后的查询需求。上述装置(实施例二)增加了用户执行查询时的权限控制,更加贴近实际应用场景。
优选地,当查询某个数据字段时,该数据字段已不存在,所述合规校验模块还将错误反馈信息返回给用户。这是合规校验模块的一种优选的实现方式。
本申请使用正则表达式、逆波兰式来进行大数据结构化查询语言的翻译和查询语句的组装,基于大数据平台提出了一种崭新的自助数据获取算法,实现大数据量的全自动生成和查询、获取。本申请取得的技术效果包括如下几点。第一,针对使用者的需求,在大数据平台中使用格式化的中文文本自动生成以大数据结构化查询语言形式表达的查询语句,使用者可自行在大数据平台上执行查询语句并进行预览、统计和导出查询结果。第二,使用者可根据自己的需求和所获取的预览数据动态调整查询语句,节约了大量的开发成本和沟通成本。
附图说明
图1是本申请提出的自动生成查询语句的数据提取方法的的实施例一的流程示意图。
图2是本申请提出的自动生成查询语句的数据提取装置的的实施例一的结构示意图。
图3是常见的运算符与操作符的对应关系示意图。
图4是本申请提出的自动生成查询语句的数据提取方法的的实施例二的流程示意图。
图5是本申请提出的自动生成查询语句的数据提取装置的的实施例二的结构示意图。
图中附图标记说明:10为扫描库表模块;20为获取输入模块;30为语法转换模块;32为正则转换单元;34为逆波兰式转化单元;36为结构化查询语言组装单元;38为血缘查询单元;40为数据获取模块;50为合规校验模块。
具体实施方式
请参阅图1,本申请提出的自动生成查询语句的数据提取方法的实施例一包括如下步骤。
步骤S10:动态扫描数据库,通过解析数据库、数据表、数据字段的注释,生成固定格式的中文文本提供给用户。所述固定格式的中文文本是指“数据库注释-数据表注释-数据字段注释”。这一步中,如果数据库、数据表、数据字段缺少注释,或者提示数据开发人员进行补充,或者将缺失的注释以名称暂时替代。
步骤S20:获取用户在所述固定格式的中文文本上表达的查询需求。所述查询需求是“数据库注释-数据表注释-数据字段注释”与运算符的组合。
步骤S30:根据用户输入的查询需求自动生成大数据结构化查询语言形式表示的查询语句。具体来说依次包括:使用正则表达式对所述查询需求进行文本替换(步骤S32),再将所述文本替换后的查询需求转换为逆波兰式(步骤S34),再将所述逆波兰式的查询需求组装为大数据结构化查询语言形式表示的可以执行的查询语句(步骤S36)。组装好的查询语句是数据字段名称与操作符的组合形式。
步骤S40:执行所述组装好的查询语句,并将至少是部分的查询结果返回给用户,供用户预览。如果用户对预览的查询结果满意,则根据用户的操作将全部的查询结果返回给用户,供用户浏览、下载、导出或统计。如果用户对预览的查询结果不满意,则回到步骤S20获取用户在所述固定格式的中文文本上表达的调整后的查询需求。
可选地,所述步骤S40中,使用异步队列功能。任一时间只执行一个查询语句,这样可以节约系统资源。如果对使用系统资源没有限制,则同一时间可以执行多个查询语句。
可选地,所述步骤S40中,预先创建并缓存多个预检索结果。在获取查询语句后,先寻找与该查询语句对应的预检索结果,或者尝试组合多项预检索结果(例如拼接)以满足该查询语句。如果一项预检索结果或多项预检索结果的组合均无法满足该查询语句,再真正地执行该查询语句。这是通过创建和缓存预检索结果的方式加速查询效率,达到实时查询的效果。
可选地,所述步骤S40中,每一条查询语句的查询日志会予以保存,方便日后分析。
请参阅图2,本申请提出的自动生成查询语句的数据提取装置的实施例一包括扫描库表模块10、获取输入模块20、语法转换模块30和数据获取模块40。图2所示的自动生成查询语句的数据提取装置的实施例一与图1所示的自动生成查询语句的数据提取方法的实施例一相对应。
所述扫描库表模块10用来在整个数据提取流程前对大数据平台中的各数据库、各数据库中的各数据表、各数据表中的各数据字段进行整体扫描,当然也可以通过配置文件的方式规定扫描黑名单、扫描白名单。扫描时解析各数据库、各数据表、各数据字段对应的注释内容,形成“数据库名称-数据表名称-数据字段名称”与“数据库注释-数据表注释-数据字段注释”的一对一的映射。“数据库名称-数据表名称-数据字段名称”通常是难以理解的英文与数字的组合。“数据库注释-数据表注释-数据字段注释”通常是易于理解的详细的中文或英文解释,也就是扫描库表模块10所生成的固定格式的中文文本。扫描库表模块10的主要目的是使得所有数据字段被定位,使得所有数据字段与其上一层的数据表、其上两层的数据库相对应;并且以中文或英文注释的形式展示给用户,优化使用体验,同时为语法转换模块30做准备。
所述获取输入模块20用来获取用户在所述固定格式的中文文本上表达的查询需求。所述查询需求是“数据库注释-数据表注释-数据字段注释”与运算符的组合。例如,用户希望获取东北三省在2016年以后(含当年)受到行政处罚的、注册资本在10万元至1亿元之间的企业名单,重名情况只计算一次。那么基于所述固定格式的中文文本,用户进行如下四项输入操作即可表达出查询需求,输入操作的顺序不限。输入操作一、选择“企业数据库”-“企业画像表”-“去重统计”-“企业名”。输入操作二、条件“经营信息数据库数据库”-“行政处罚表”-“处罚时间”大于“2016-01-01(年-月-日)”。输入操作三、条件“企业数据库”-“企业画像表”-“省名”包含“黑龙江”或“吉林”或“辽宁”。输入操作四、分组“企业数据库”-“企业画像表”-“注册资本(万)”-“区间”包含“10-100”或“100-1000”或“1000-10000”。这些输入操作可由用户自行采用鼠标在表框中进行选择、在选项前进行勾选等,易于理解和操作,无需用户具有任何代码基础或编程经验。归纳起来,用户的全部输入操作可以分为选择、条件、分组三类。
所述语法转换模块30用来根据用户输入的查询需求自动生成大数据结构化查询语言形式表示的查询语句。具体而言,语法转换模块30进一步包括正则转换单元32、逆波兰式转化单元34和结构化查询语言组装单元36。
所述正则转换单元32用来使用正则表达式对所述查询需求进行文本替换,这是根据扫描库表模块10所提供的“数据库名称-数据表名称-数据字段名称”与“数据库注释-数据表注释-数据字段注释”之间存在的一对一的映射关系,对“数据库注释-数据表注释-数据字段注释”与运算符的组合形式的查询需求进行文本替换。第一,将“数据库注释-数据表注释-数据字段注释”替换为“数据库名称-数据表名称-数据字段名称”,以便于大数据结构化查询语言的使用。第二,将中文或简易描述的运算符(比如“选择”)替换成大数据结构化查询语言所对应的操作符(比如“select”)。最终文本替换后的查询需求就是采用正则表达式的“数据库名称-数据表名称-数据字段名称”与操作符的组合形式的查询需求。
大数据结构化查询语言可以视为参与查询的元素(element)与操作符的形式,具体可以分为单目操作符(只需要一个元素参与运算的操作符)、双目操作符(需要2个元素参与运算的操作符)、以及多目操作符(需要多个元素参与运算的操作符)。常见的运算符与操作符的对应关系、各操作符对应的参与运算的元素数量及位置如图3所示。对操作符的上述分类不仅可以确定每个操作符参与运算的元素的数量,还可以针对操作符与参与运算的元素的相对位置进行映射,便于组装查询语句。
所述逆波兰式转化单元34用来将所述文本替换后的查询需求转换为逆波兰式,这是将简单的、结构化的“数据库名称-数据表名称-数据字段名称”与操作符的组合形式的查询需求转化为逆波兰式,方便进行后续的查询语句的组装。第一,根据结构化查询语言的语法特性将所述文本替换后的查询需求拆分成三类栈,分别为选择(select)栈、条件(where)栈、以及分组(group by)栈。选择栈、条件栈、分组栈分别对应于用户输入的选择、条件、分组类型的操作。第二,所述三类栈的每一类又分为元素栈、符号栈,并最终合并入元素栈,用于组装。示例性的做法例如是:对已经分类为三类栈的所述文本替换后的查询需求进行扫描,创建元素栈和符号栈。每次扫到操作符,入符号栈;每次扫到元素,入元素栈。单目操作符扫到第一个元素后入栈,双目操作符扫到2个元素后入栈,以此类推。当元素栈存在的元素数量达到符号栈所需元素的数量时,弹出符号栈中的一个个操作符,将每一个操作符与参与该操作符运算的对应数量的元素组装后,压入元素栈。直到扫描完,符号栈中的操作符全部被弹出,与现有元素组合压入元素栈,最终所有元素与操作符均在元素栈内。
所述结构化查询语言组装单元36用来将所述逆波兰式的查询需求组装为大数据结构化查询语言形式表示的可以执行的查询语句。第一,将逆波兰式结构的查询需求重新精准组装为大数据结构化查询语言形式,重新组装主要是将元素与操作符的位置关系由逆波兰式改为正则表达式。这可根据图3的映射关系判断元素与操作符的位置关系而进行重新组装。例如逆波兰式中存在“a,b,and”,根据图3中第一行描述的“[element1] and[element2]”而重新组装为“a and b”。此时就完成了以大数据结构化查询语言的形式组装查询语句,组装好的查询语句是数据字段名称与操作符的组合形式。第二,可选地,当分组栈中存在的分组条件没有出现于选择栈中时,虽然该查询语句已经可以直接运行,但是会出现结果只有数字而没有分组条件的情况。为便于用户理解查询结果,在这种情况下将分组栈的分组条件加入选择栈中。例如,分组栈中的分组条件是按“企业名称”分组计算“员工数”。如果“企业名称”只存在于分组栈而不存在于选择栈,那么不在选择栈中的“企业名称”将不会被输出,结果会是:20;30,用户难以理解。而将分组栈中的分组条件“企业名称”加入选择栈中,才会输出:A企业20;B企业30,用户更容易理解。
所述数据获取模块40将组装好的查询语句加入查询队列并执行,执行完毕后根据不同的用户需求(预览、文件导出等)进行相应处理输出查询结果。如果是预览的情况,优选地按照可读性好的表格形式来结构化查询结果的文本。如果是数据导出的形式,按照用户的要求导出对应的文件格式(如csv、txt、xlsx等)。供用户预览的可以是部分或全部的查询结果。如果用户对预览的查询结果满意,则根据用户的操作将全部的查询结果返回给用户,供用户浏览、下载、导出或统计。如果用户对预览的查询结果不满意,则由获取输入模块20再次获取用户在所述固定格式的中文文本上表达的调整后的查询需求。
可选地,数据获取模块40逐个执行查询队列中的查询语句,以避免并发过多导致消耗资源过大的情况。
可选地,数据获取模块40预先创建并缓存多个预检索结果。在获取查询语句后,数据获取模块40先寻找与该查询语句对应的预检索结果,或者尝试组合多项预检索结果(例如拼接)以满足该查询语句。如果一项预检索结果或多项预检索结果的组合均无法满足该查询语句,数据获取模块40再真正地执行该查询语句。这是通过创建和缓存预检索结果的方式加速查询效率,达到实时查询的效果。
可选地,数据获取模块40保存每一条查询语句的查询日志,方便日后分析。
请参阅图4,本申请提出的自动生成查询语句的数据提取方法的实施例二在图1所示实施例一的基础上增加了步骤S38,将步骤S40改为了步骤S40b,增加了步骤S50。
所述步骤S38在步骤S30中且在步骤S36之后。所述步骤S38为:查询组装好的查询语句所含的数据字段的原始来源数据字段、原始来源数据表及原始来源数据库。
所述步骤S40b:执行所述组装好的查询语句,执行完毕后暂不输出查询结果。
所述步骤S50在步骤S40b之后。所述步骤S50为:各用户对各数据库、各数据表、各数据字段的访问权限记载于权限表中。如某一查询语句中的某个数据字段属于、或者该数据字段的原始来源属于该用户无权访问的数据库、数据表或数据字段,则向该用户提示无权访问的数据库、数据表或是数据字段的名称,并且不向该用户提供查询结果。否则,将至少是部分的查询结果返回给用户,供用户预览。如果用户对预览的查询结果满意,则根据用户的操作将全部的查询结果返回给用户,供用户浏览、下载、导出或统计。如果用户对预览的查询结果不满意,则回到步骤S20获取用户在所述固定格式的中文文本上表达的调整后的查询需求。
请参阅图5,本申请提出的自动生成查询语句的数据提取装置的实施例二在图2所示实施例一的基础上修改了语法转换模块30和数据获取模块40,增加了合规校验模块50。图5所示的自动生成查询语句的数据提取装置的实施例二与图4所示的自动生成查询语句的数据提取方法的实施例二相对应。
所述语法转换模块30中在结构化查询语言组装单元36之后增加了血缘查询单元38。所述血缘查询单元38用来查询组装好的查询语句所含的数据字段的原始来源数据字段、原始来源数据表及原始来源数据库,为合规校验模块50做准备。第一,从图3所示的运算符与操作符的映射关系中,获取选择栈、分组栈中存在的数据字段(即元素栈中的元素)。第二,根据扫描库表模块10所得的“数据库名称-数据表名称-数据字段名称”与“数据库注释-数据表注释-数据字段注释”的一对一的映射关系,定位组装好的查询语句所含的数据字段的原始来源数据字段、原始来源数据表及原始来源数据库,获取原始来源数据库、原始来源数据表、原始数据字段的名称,保存“组装好的查询语句所含的数据字段名称——该数据字段所在原始来源数据库、原始来源数据表、原始数据字段的名称”的映射关系。例如,查询语句中的数据字段A11的直接来源是数据库A中的数据表A中的数据字段A11,其本质是从数据库B中的数据表B1中的数据字段B11复制而来的。所述血缘查询单元38就保存“查询语句中的数据字段A11——数据库B中的数据表B1中的数据字段B11”之间的映射关系。又如,查询语句中的数据字段C11的直接来源是数据库C中的数据表C1中的数据字段C11,其本质是由数据库D中的数据表D1中的数据字段D11与数据库E中的数据表E1中的数据字段E11进行某种运算得到的。所述血缘查询单元38就保存“查询语句中的数据字段C1——数据库D中的数据表D1中的数据字段D11”之间的映射关系,还保存“查询语句中的数据字段C1——数据库E中的数据表E1中的数据字段E11”之间的映射关系。
所述数据获取模块40改为:将组装好的查询语句加入查询队列并执行,执行完毕后暂不输出查询结果。
所述合规校验模块50用于修改用户权限表,动态添加、删除或修改用户、用户组有权访问的数据库、数据表以及数据字段和限制条数。第一,针对每一查询语句中的每个数据字段的直接来源,判断用户、用户组是否具有访问权限。如无权访问,则输出无权访问的具体数据库、数据表或是数据字段的名称,并且不向用户返回查询结果。第二,针对每一查询语句中的每个数据字段的原始来源,进行追溯查询,判断用户、用户组是否具有原始来源的数据库、数据表或是数据字段的访问权限。如无权访问,则输出无权访问的具体数据库、数据表或是数据字段的名称,并且不向用户返回查询结果。第三,如果用户、用户组获取的查询结果的条数超过其对应数量限制,则向该用户返回超出数量限制的提示信息。如果以上三种情况均判断用户、用户组具有访问权限且未超出数量限制,则根据不同的用户需求(预览、文件导出等)进行相应处理输出查询结果。如果是预览的情况,优选地按照可读性好的表格形式来结构化查询结果的文本。如果是数据导出的形式,按照用户的要求导出对应的文件格式(如csv、txt、xlsx等)。供用户预览的可以是部分或全部的查询结果。如果用户对预览的查询结果满意,则根据用户的操作将全部的查询结果返回给用户,供用户浏览、下载、导出或统计。如果用户对预览的查询结果不满意,则由获取输入模块20再次获取用户在所述固定格式的中文文本上表达的调整后的查询需求。
可选地,由于动态扫描数据库与执行查询语句之间会存在时间差,可能查询时某个数据字段时,该数据字段已不存在,针对这种不可抗力的未知错误,所述合规校验模块50还将错误反馈信息返回给用户。
本申请提供了一种自动生成查询语句的数据提取方法及装置,可由用户自行构造查询语句来获取所需数据,节约了数据开发成本和沟通成本。
以上仅为本申请的优选实施例,并不用于限定本申请。对于本领域的技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (15)
1.一种自动生成查询语句的数据提取方法,其特征是,包括如下步骤;
步骤S10:动态扫描数据库,解析数据库、数据表、数据字段的注释,生成固定格式的中文文本“数据库注释-数据表注释-数据字段注释”提供给用户;
步骤S20:获取用户在所述固定格式的中文文本上表达的查询需求;所述查询需求是“数据库注释-数据表注释-数据字段注释”与运算符的组合;
步骤S30:根据所述查询需求自动生成大数据结构化查询语言形式表示的查询语句;具体依次包括:步骤S32:使用正则表达式对所述查询需求进行文本替换;步骤S34:将所述文本替换后的查询需求转换为逆波兰式;步骤S36:将所述逆波兰式的查询需求组装为大数据结构化查询语言形式表示的可以执行的查询语句;组装好的查询语句是数据字段名称与操作符的组合;
步骤S40:执行所述组装好的查询语句,并将至少是部分的查询结果返回给用户,供用户预览;如果用户对预览的查询结果满意,则将全部的查询结果返回给用户;如果用户对预览的查询结果不满意,则回到步骤S20获取用户在所述固定格式的中文文本上表达的调整后的查询需求。
2.根据权利要求1所述的自动生成查询语句的数据提取方法,其特征是,所述步骤S40中,使用异步队列;即任一时间仅执行一个查询语句。
3.根据权利要求1所述的自动生成查询语句的数据提取方法,其特征是,所述步骤S40中,预先创建并缓存多个预检索结果;在获取查询语句后,先寻找与该查询语句对应的预检索结果,或者尝试组合多项预检索结果以满足该查询语句;如果一项预检索结果或多项预检索结果的组合均无法满足该查询语句,再真正地执行该查询语句。
4.根据权利要求1所述的自动生成查询语句的数据提取方法,其特征是,所述步骤S40中,保存每一条查询语句的查询日志。
5.根据权利要求1所述的自动生成查询语句的数据提取方法,其特征是,增加步骤S38,将步骤S40改为步骤S40b,增加步骤S50;
所述步骤S38在步骤S30中且在步骤S36之后;所述步骤S38为:查询组装好的查询语句所含的数据字段的原始来源数据字段、原始来源数据表及原始来源数据库;
所述步骤S40b:执行所述组装好的查询语句,执行完毕后暂不输出查询结果;
所述步骤S50在步骤S40b之后;所述步骤S50为:各用户对各数据库、各数据表、各数据字段的访问权限记载于权限表中;如某一查询语句中的某个数据字段属于、或者该数据字段的原始来源属于该用户无权访问的数据库、数据表或数据字段,则向该用户提示无权访问的数据库、数据表或是数据字段的名称,并且不向该用户提供查询结果;否则,将至少是部分的查询结果返回给用户,供用户预览;如果用户对预览的查询结果满意,则将全部的查询结果返回给用户;如果用户对预览的查询结果不满意,则回到步骤S20获取用户在所述固定格式的中文文本上表达的调整后的查询需求。
6.一种自动生成查询语句的数据提取装置,其特征是,包括扫描库表模块、获取输入模块、语法转换模块和数据获取模块;
所述扫描库表模块用来对各数据库、各数据库中的各数据表、各数据表中的各数据字段进行整体扫描,扫描时解析各数据库、各数据表、各数据字段对应的注释内容,形成“数据库名称-数据表名称-数据字段名称”与“数据库注释-数据表注释-数据字段注释”的一对一的映射;“数据库注释-数据表注释-数据字段注释”就是扫描库表模块所生成的固定格式的中文文本;
所述获取输入模块用来获取用户在所述固定格式的中文文本上表达的查询需求;所述查询需求是“数据库注释-数据表注释-数据字段注释”与运算符的组合;用户的全部输入操作分为选择、条件、分组三类;
所述语法转换模块用来根据用户输入的查询需求自动生成大数据结构化查询语言形式表示的查询语句;具体包括:使用正则表达式对所述查询需求进行文本替换;将所述文本替换后的查询需求转换为逆波兰式;将所述逆波兰式的查询需求组装为大数据结构化查询语言形式表示的可以执行的查询语句;组装好的查询语句是数据字段名称与操作符的组合;
所述数据获取模块将组装好的查询语句加入查询队列并执行,执行完毕后根据不同的用户需求进行相应处理输出查询结果;供用户预览的是部分或全部的查询结果;如果用户对预览的查询结果满意,则将全部的查询结果返回给用户;如果用户对预览的查询结果不满意,则由获取输入模块再次获取用户在所述固定格式的中文文本上表达的调整后的查询需求。
7.根据权利要求6所述的自动生成查询语句的数据提取装置,其特征是,所述语法转换模块进一步包括正则转换单元、逆波兰式转化单元和结构化查询语言组装单元;
所述正则转换单元用来使用正则表达式对所述查询需求进行文本替换,包括将“数据库注释-数据表注释-数据字段注释”替换为“数据库名称-数据表名称-数据字段名称”,以及将中文或简易描述的运算符替换成大数据结构化查询语言所对应的操作符;文本替换后的查询需求是采用正则表达式的“数据库名称-数据表名称-数据字段名称”与操作符的组合;
所述逆波兰式转化单元用来将所述文本替换后的查询需求转换为逆波兰式,包括将所述文本替换后的查询需求拆分成三类栈,分别为选择栈、条件栈、以及分组栈;分别对应于用户输入的选择、条件、分组类型的操作;还将所述三类栈的每一类又分为元素栈、符号栈,并最终合并入元素栈;
所述结构化查询语言组装单元用来将所述逆波兰式的查询需求组装为大数据结构化查询语言形式表示的可以执行的查询语句;包括将元素与操作符的位置关系由逆波兰式改为正则表达式。
8.根据权利要求7所述的自动生成查询语句的数据提取装置,其特征是,所述逆波兰式转化单元将所述三类栈的每一类又分为元素栈、符号栈,并最终合并入元素栈采用如下方式:对已经分类为三类栈的所述文本替换后的查询需求进行扫描,创建元素栈和符号栈;每次扫到操作符,入符号栈;每次扫到元素,入元素栈;单目操作符扫到第一个元素后入栈,双目操作符扫到2个元素后入栈,以此类推;当元素栈存在的元素数量达到符号栈所需元素的数量时,弹出符号栈中的一个个操作符,将每一个操作符与参与该操作符运算的对应数量的元素组装后,压入元素栈;直到扫描完,符号栈中的操作符全部被弹出,与现有元素组合压入元素栈,最终所有元素与操作符均在元素栈内。
9.根据权利要求7所述的自动生成查询语句的数据提取装置,其特征是,所述结构化查询语言组装单元还用于:当分组栈中存在的分组条件没有出现于选择栈中时,将分组栈的分组条件加入选择栈中。
10.根据权利要求6所述的自动生成查询语句的数据提取装置,其特征是,所述数据获取模块根据不同的用户需求进行相应处理输出查询结果采用如下方式;如果是预览的情况,按照表格形式来结构化查询结果的文本;如果是数据导出的形式,按照用户的要求导出对应的文件格式。
11.根据权利要求6所述的自动生成查询语句的数据提取装置,其特征是,所述数据获取模块逐个执行查询队列中的查询语句。
12.根据权利要求6所述的自动生成查询语句的数据提取装置,其特征是,所述数据获取模块预先创建并缓存多个预检索结果;在获取查询语句后,数据获取模块先寻找与该查询语句对应的预检索结果,或者尝试组合多项预检索结果以满足该查询语句;如果一项预检索结果或多项预检索结果的组合均无法满足该查询语句,数据获取模块再真正地执行该查询语句。
13.根据权利要求6所述的自动生成查询语句的数据提取装置,其特征是,所述数据获取模块保存每一条查询语句的查询日志。
14.根据权利要求6所述的自动生成查询语句的数据提取装置,其特征是,修改了所述语法转换模块和数据获取模块,增加了合规校验模块;
修改后的语法转换模块是在结构化查询语言组装单元之后增加了血缘查询单元;所述血缘查询单元用来查询组装好的查询语句所含的数据字段的原始来源数据字段、原始来源数据表及原始来源数据库;包括获取选择栈、分组栈中存在的数据字段;定位组装好的查询语句所含的数据字段的原始来源数据字段、原始来源数据表及原始来源数据库,获取原始来源数据库、原始来源数据表、原始数据字段的名称,保存“组装好的查询语句所含的数据字段名称——该数据字段所在原始来源数据库、原始来源数据表、原始数据字段的名称”的映射关系;
修改后的数据获取模块用于将组装好的查询语句加入查询队列并执行,执行完毕后暂不输出查询结果;
所述合规校验模块用于修改用户权限表,动态添加、删除或修改用户、用户组有权访问的数据库、数据表以及数据字段和限制条数;还包括针对每一查询语句中的每个数据字段的直接来源以及原始来源,判断用户、用户组是否具有访问权限;如无权访问,则输出无权访问的具体数据库、数据表或是数据字段的名称,并且不向用户返回查询结果;还包括如果用户、用户组获取的查询结果的条数超过其对应数量限制,则向该用户返回超出数量限制的提示信息;如果判断用户、用户组具有访问权限且未超出数量限制,则根据不同的用户需求进行相应处理输出查询结果;供用户预览的是部分或全部的查询结果;如果用户对预览的查询结果满意,则将全部的查询结果返回给用户;如果用户对预览的查询结果不满意,则由获取输入模块再次获取用户在所述固定格式的中文文本上表达的调整后的查询需求。
15.根据权利要求14所述的自动生成查询语句的数据提取装置,其特征是,当查询某个数据字段时,该数据字段已不存在,所述合规校验模块还将错误反馈信息返回给用户。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110012787.3A CN112632110A (zh) | 2021-01-06 | 2021-01-06 | 一种自动生成查询语句的数据提取方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110012787.3A CN112632110A (zh) | 2021-01-06 | 2021-01-06 | 一种自动生成查询语句的数据提取方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112632110A true CN112632110A (zh) | 2021-04-09 |
Family
ID=75290795
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110012787.3A Pending CN112632110A (zh) | 2021-01-06 | 2021-01-06 | 一种自动生成查询语句的数据提取方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112632110A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114448696A (zh) * | 2022-01-26 | 2022-05-06 | 北京华顺信安科技有限公司 | 一种网络探测行为数据查询分析的方法及系统 |
WO2023115252A1 (en) * | 2021-12-20 | 2023-06-29 | Boe Technology Group Co., Ltd. | Data query method, data query apparatus, and computer-program product |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07244602A (ja) * | 1994-03-07 | 1995-09-19 | Pfu Ltd | データベース検索処理方式 |
CN103093000A (zh) * | 2013-02-25 | 2013-05-08 | 用友软件股份有限公司 | 数据库查询建模系统和数据库查询建模方法 |
CN103440331A (zh) * | 2013-09-05 | 2013-12-11 | 五八同城信息技术有限公司 | 基于逆波兰和多叉树的搜索引擎查询语句解析方法 |
CN103488694A (zh) * | 2013-09-02 | 2014-01-01 | 用友软件股份有限公司 | 业务数据查询装置和业务数据查询方法 |
US20180039692A1 (en) * | 2015-02-13 | 2018-02-08 | Guangzhou Shenma Mobile Information Technology Co., Ltd. | Information Query Method And Device |
CN108228916A (zh) * | 2018-04-08 | 2018-06-29 | 中国联合网络通信集团有限公司 | 数据的查询方法及装置 |
CN110968601A (zh) * | 2019-11-28 | 2020-04-07 | 中国银行股份有限公司 | 一种数据查询处理方法及装置 |
CN112035506A (zh) * | 2019-10-28 | 2020-12-04 | 竹间智能科技(上海)有限公司 | 一种语义识别方法及其设备 |
-
2021
- 2021-01-06 CN CN202110012787.3A patent/CN112632110A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07244602A (ja) * | 1994-03-07 | 1995-09-19 | Pfu Ltd | データベース検索処理方式 |
CN103093000A (zh) * | 2013-02-25 | 2013-05-08 | 用友软件股份有限公司 | 数据库查询建模系统和数据库查询建模方法 |
CN103488694A (zh) * | 2013-09-02 | 2014-01-01 | 用友软件股份有限公司 | 业务数据查询装置和业务数据查询方法 |
CN103440331A (zh) * | 2013-09-05 | 2013-12-11 | 五八同城信息技术有限公司 | 基于逆波兰和多叉树的搜索引擎查询语句解析方法 |
US20180039692A1 (en) * | 2015-02-13 | 2018-02-08 | Guangzhou Shenma Mobile Information Technology Co., Ltd. | Information Query Method And Device |
CN108228916A (zh) * | 2018-04-08 | 2018-06-29 | 中国联合网络通信集团有限公司 | 数据的查询方法及装置 |
CN112035506A (zh) * | 2019-10-28 | 2020-12-04 | 竹间智能科技(上海)有限公司 | 一种语义识别方法及其设备 |
CN110968601A (zh) * | 2019-11-28 | 2020-04-07 | 中国银行股份有限公司 | 一种数据查询处理方法及装置 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023115252A1 (en) * | 2021-12-20 | 2023-06-29 | Boe Technology Group Co., Ltd. | Data query method, data query apparatus, and computer-program product |
CN114448696A (zh) * | 2022-01-26 | 2022-05-06 | 北京华顺信安科技有限公司 | 一种网络探测行为数据查询分析的方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110032604B (zh) | 数据存储装置、转译装置及数据库访问方法 | |
US7111075B2 (en) | Method and system for processing data records having multiple formats | |
CN105868204B (zh) | 一种转换Oracle脚本语言SQL的方法及装置 | |
US8290947B2 (en) | Federated search | |
CN109582647B (zh) | 一种面向非结构化证据文件的分析方法及系统 | |
Braganholo et al. | From XML view updates to relational view updates: old solutions to a new problem | |
CN111176650B (zh) | 解析器生成方法、检索方法、服务器及存储介质 | |
CN112632110A (zh) | 一种自动生成查询语句的数据提取方法及装置 | |
WO2020258492A1 (zh) | 信息处理方法、装置、存储介质及终端设备 | |
CN112579610A (zh) | 多数据源结构分析方法、系统、终端设备及存储介质 | |
CN112667563A (zh) | 一种文档管理及操作方法和系统 | |
CN115905740A (zh) | 一种多数据源服务引擎接口互联方法 | |
Cavalieri | EX up: an engine for the evolution of XML schemas and associated documents | |
CN106570095B (zh) | 一种xml数据的操作方法及设备 | |
US11301441B2 (en) | Information processing system and information processing method | |
CN113297251A (zh) | 多源数据检索方法、装置、设备及存储介质 | |
KR100762712B1 (ko) | 규칙기반의 전자문서 변환방법 및 그 시스템 | |
KR19990038731A (ko) | 전자문서를 위한 메타데이타 모형 및 모형화 방법과 메타데이타관리시스템 및 그 관리방법 | |
CN116303359A (zh) | 一种数据库结构多类型文档导出的实现方法 | |
CN115757479A (zh) | 数据库的查询优化方法、机器可读存储介质与计算机设备 | |
CN112685435A (zh) | 一种基于Vue和Mybatis的表格查询方法及系统 | |
CN112199335A (zh) | 一种操作日志的生成方法和生成系统 | |
Fournier-S'niehotta et al. | Querying XML Score Databases: XQuery is not Enough!. | |
JP2003099428A (ja) | 翻訳支援装置、翻訳者端末制御プログラム、校正者端末制御プログラム | |
CN117193781B (zh) | 一种面向simscript语言的抽象语法树构建方法和装置 |
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 |