掌桥专利:专业的专利平台
掌桥专利
首页

一种基于类SQL的数据文件分析处理方法、装置及电子设备

文献发布时间:2023-06-19 12:02:28


一种基于类SQL的数据文件分析处理方法、装置及电子设备

技术领域

本发明涉及大数据分析技术领域,具体的涉及一种基于类SQL的数据文件分析处理方法、装置及电子设备。

背景技术

随着互联网行业的高速发展,大数据分析也渐渐的普及,经常会出现大量的有固定schema数据文件分析的场景,schema(模式)又称架构,架构的定义是形成单个命名空间的数据库实体的集合。命名空间是一个集合,其中每个元素的名称都是唯一的。在这里,我们可以将架构看成一个存放数据库中对象的一个容器。固定schema的数据文件常见的比如日志文件、execl格式大文件,类似文件如果想要进行数据分析和统计,需要借助分析软件(execl,Hadoop,presto等)或脚本(bash中的awk,sort组合使用)。

现有技术的缺点:

一、分析软件execl和脚本bash脚本基于主机内存处理,可以达到分析和统计目的,但是execl的学习成本、bash命令的使用成本都非常之高。

二、Hadoop(分布式系统基础架构),presto(分布式SQL查询引擎)等属于大数据技术领域开源服务,但是安装成本和学习成本也很高,并且待分析数据需要解析后独立存储才能在此之上进行数据分析和统计,无法达到即开即用的目标。

有鉴于此,特提出本发明。

发明内容

为了解决以上问题,本发明提出了

一种基于类SQL的数据文件分析处理处理方法,包括:

接收类SQL语句,对类SQL语句进行分析转换为多组语法算子;

调用数据文件,各语法算子按照相互之间的逻辑关系针对数据文件进行运算分析处理。

作为本发明的可选实施方式,所述接收类SQL语句,对类SQL语句进行分析转换为多组语法算子包括:

基于接收的类SQL语句进行关键记号提取;

根据提取的关键记号,进行整体的类SQL语句切分,将每个关键记号对应的SQL子句切分成查询节点Query;

将切分的每组查询节点Query进行语法抽象,转换为语法算子。

作为本发明的可选实施方式,根据各查询节点Query对应的SQL语句组在类SQL语句中的相互关联关系确定语法算子之间的相互逻辑关系;

根据语法算子之间的相互逻辑关系将各语法算子进行连接,将整体的类SQL语句转换为由多组语法算子组合成的抽象语法树。

作为本发明的可选实施方式,所述调用本机存储的数据文件,控制各语法算子按照相互之间的逻辑关系针对数据文件进行运算分析处理包括:

根据抽象语法树的上下文结构连接注册的各组语法算子;

调用数据文本加载至运行内存中;

各组语法算子按照连接关系针对数据文件进行运算、分析以及统计计算。

作为本发明的可选实施方式,所述基于接收的类SQL语句进行关键记号提取包括:

基于类SQL语句,提取关键记号包括选择“SELECT”、来自于“FROM”、定位“WHERE”、被订阅“ORDERBY”、限制于“LIMIT”、计算总数“COUNT”中的一个或者多个的组合。

作为本发明的可选实施方式,所述的语法算子包括“Fields”算子、“GroupBy”算子、“OrderBy”算子、“Where”算子、“Count”算子、“Distinct”算子、“Avg”算子、“Sum”算子、“Max”算子、“Min”算子、“FROM_UNIXTIME”算子、“UNIX_TIMESTAMP”算子中的一个或者多个的组合。

本发明同时提供一种基于类SQL的数据文件分析处理处理装置,包括:

语法算子转换模块,接收类SQL语句,对类SQL语句进行分析转换为多组语法算子;

算子管理器,统一管理维护所有语法算子的输入、输出以及计算方法,调用本机存储的数据文件,控制各语法算子按照相互之间的逻辑关系针对数据文件进行运算分析处理。

作为本发明的可选实施方式,所述的语法算子转换模块包括:

记号提取器,基于接收的类SQL语句进行关键记号提取;

Query切分器,根据提取的关键记号,进行整体的类SQL语句切分,将每个关键记号对应的SQL子句切分成查询节点Query;

抽象语法树分析器,将切分的每组查询节点Query进行语法抽象,转换为语法算子,根据各查询节点Query对应的SQL子句在类SQL语句中的相互关联关系确定语法算子之间的相互逻辑关系,根据语法算子之间的相互逻辑关系将各语法算子进行连接,将整体的类SQL语句转换为由多组语法算子组合成的抽象语法树。

本发明还提供了一种电子设备,包括处理器和存储器,所述存储器用于存储计算机可执行程序,

当所述计算机程序被所述处理器执行时,所述处理器执行所述基于类SQL的数据文件分析处理处理方法。

本发明还提供了一种计算机可读存储介质,存储有计算机可执行程序,所述计算机可执行程序被执行时,实现所述基于类SQL的数据文件分析处理处理方法。

与现有技术相比,本发明的有益效果:

本发明的基于类SQL的数据文件分析处理方法,分析者只需要通过输入类SQL语句,类SQL语句被分析转换为多组语法算子,将待分析数据文件load到内存,多组语法算子进行分析计算最终输出结果。本发明的基于类SQL的数据文件分析处理方法采用了类SQL+内存计算的方式,完美的实现了低学习成本,减少有统一规则的文本数据分析统计成本,同时实现了即时即用的目标。

附图说明:

图1本发明基于类SQL的数据文件分析处理方法的流程框图;

图2本发明基于类SQL的数据文件分析处理方法中步骤S120的流程框图示例;

图3本发明基于类SQL的数据文件分析处理方法中步骤S220的流程框图示例;

图4本发明基于类SQL的数据文件分析处理装置的结构框图及工作流程示例;

图5本发明的类SQL语法示例;

图6本发明的类SQL语句中条件运算符示例;

图7本发明的类SQL语句中聚合函数示例。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图,对本发明实施例中的技术方案进行清楚、完整的描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。

因此,以下对本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的部分实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征和技术方案可以相互组合。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

在本发明的描述中,需要说明的是,术语“上”、“下”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,或者是本领域技术人员惯常理解的方位或位置关系,这类术语仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。

参见图1所示,本实施例提供一种基于类SQL的数据文件分析处理方法,包括:

S110、接收类SQL语句;

S120、对类SQL语句进行分析转换为多组语法算子;

S210、调用数据文件;

S220、各语法算子按照相互之间的逻辑关系针对数据文件进行运算分析处理。

SQL(Structure Query Language)结构化查询语言是数据库的核心语言,SQL就是访问和处理关系数据库的计算机标准语言,是高级的非过程化编程语言。它功能强大,效率高,简单易学易维护。SQL语言基本上独立于数据库本身、使用的机器、网络、操作系统。

SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL:

1、数据查询语言DQL

数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE子句组成的查询块:

SELECT<字段名表>

FROM<表或视图名>

WHERE<查询条件>

2、数据操纵语言DML

数据操纵语言DML主要有三种形式:

1)插入:INSERT

2)更新:UPDATE

3)删除:DELETE

3数据定义语言DDL

数据定义语言DDL用来创建数据库中的各种对象—表、视图、索引、同义词、聚簇等如:

CREATE TABLE/VIEW/INDEX/SYN/CLUSTER

|||||

表视图索引同义词簇

4、数据控制语言DCL

数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。如:

1)GRANT:授权。

2)ROLLBACK[WORK]TO[SAVEPOINT]:回退到某一点。

回滚—ROLLBACK,回滚命令使数据库状态回到上次最后提交的状态。其格式为:SQL>ROLLBACK。

3)COMMIT[WORK]:提交。

在数据库的插入、删除和修改操作时,只有当事务在提交到数据库时才算完成。在事务提交前,只有操作数据库的这个人才能有权看到所做的事情,别人只有在最后提交完成后才可以看到。

提交数据有三种类型:显式提交、隐式提交及自动提交。下面分别说明这三种类型。

(1)显式提交

用COMMIT命令直接完成的提交为显式提交。其格式为:SQL>COMMIT。

(2)隐式提交

用SQL命令间接完成的提交为隐式提交。这些命令是:ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME。

(3)自动提交

若把AUTOCOMMIT设置为ON,则在插入、修改、删除语句执行后,系统将自动进行提交,这就是自动提交。其格式为:SQL>SET AUTOCOMMIT ON。

本实施例的类SQL语句为数据查询语言DQL。

本实施例的数据文件用于存储统一规则的文本数据,例如具有固定schema的日志文件,execl格式大文件。日志文件是用于记录系统操作事件的记录文件或文件集合,可分为事件日志和消息日志,通过本实施例基于类SQL的数据文件分析处理方法处理日志文件的历史数据可以实现诊断问题的追踪以及理解系统的活动等重要作用。execl格式大文件又称电子数据表,是一类模拟纸上计算表格的计算机程序,它会显示由一系列行与列构成的网格,单元格内可以存放数值、计算式、或文本;本实施例的基于类SQL的数据文件分析处理方法通过输入类SQL语句可以实现对execl格式大文件进行数据的提取或者运算,数据分析师依托于自身精通的类SQL语句实现对execl格式大文件的数据分析,不用再对execl的操作使用进行学习,极大的降低了数据分析师的学习使用成本。

本实施例针对数据文件进行运算分析处理包括提取数据文件中的指定数据、和/或针对数据文件中指定位置(列、行)的数据进行数学运算(+、-)提取运算结果、和/或针对数据文件中指定位置(列、行)的数据进行数学比较运算(>、<)提取运算结果等。

本实施例的基于类SQL的数据文件分析处理方法基于类SQL语句普及度高,学习成本低。

本实施例的算子语法,一种采用算子进行运算的语法,类似于依存语法、范畴语法以及数理逻辑中的谓词演算。算子在英文中被成为“Operation”,在数学上可以解释为一个函数空间到函数空间上的映射O:X->X,其实就是一个处理单元,往往是指一个函数,在使用算子时往往会有输入和输出,算子则完成相应数据的转化。常用的算子语法包括:SELECT:用于从DataSet/DataStream中选择数据,用于筛选出某些列;WHERE:用于从数据集/流中过滤数据,与SELECT一起使用,用于根据某些条件对关系做水平分割,即选择符合条件的记录;DISTINCT:用于从数据集/流中去重根据SELECT的结果进行去重。GROUP BY:是对数据进行分组操作,例如我们需要计算成绩明细表中,每个学生的总分;UNION和UNION ALL:UNION用于将两个结果集合并起来,要求两个结果集字段完全一致,包括字段类型、字段顺序,不同于UNION ALL的是,UNION会对结果数据去重;JOIN:用于把来自两个表的数据联合起来形成结果表。

本实施例的算子语法根据算子调用数据文件进行数据运算,直接得出算子对数据文件的运算分析结果。

本实施例的基于类SQL的数据文件分析处理方法,分析者只需要通过输入类SQL语句,类SQL语句被分析转换为多组语法算子,将待分析数据文件load到内存,多组语法算子进行分析计算最终输出结果。本实施例的基于类SQL的数据文件分析处理方法采用了类SQL+内存计算的方式,完美的实现了低学习成本,减少有统一规则的文本数据分析统计成本,同时实现了即时即用的目标。

进一步地,参见图2所示,本实施例的一种基于类SQL的数据文件分析处理方法中所述接收类SQL语句,对类SQL语句进行分析转换为多组语法算子包括:

S121、基于接收的类SQL语句进行关键记号提取;

S122、根据提取的关键记号,进行整体的类SQL语句切分,将每个关键记号对应的SQL子句切分成查询节点Query。

本实施例基于类SQL语句,提取关键记号包括提取SELECT子句中的关键记号“SELECT”、和/或提取FROM子句中的关键记号“FROM”、和/或提取WHERE子句中的关键记号“WHERE”、和/或提取ORDERBY子句中的关键记号“ORDERBY”、和/或提取LIMIT子句中的关键记号“LIMIT”、和/或提取COUNT子句中的关键记号“COUNT”。

本实施例的SQL SELECT子句用于从表中选取数据,结果被存储在一个结果表中(称为结果集);SQL WHERE子句用于规定选择的标准;ORDER BY子句用于对结果集进行排序。

本实施例基于类SQL的数据文件分析处理方法首先提取出类SQL语句中的关键记号,参见图5所示,比如类SQL语句中含有的关键记号为SELECT/FROM/WHERE/GROUP BY/ORDER BY/LIMIT,再依据各关键记号SELECT/FROM/WHERE/ORDERBY/LIMIT/COUNT将整个SQL类语句切分出相应的SQL子句。

将切分的每组查询节点Query进行语法抽象,转换为语法算子。语法抽象是将类SQL源代码转换为抽象语法结构。本实施例的Query,是查询的意思,为了在数据库中寻找某一特定文件、网站、记录或一系列记录,由搜索引擎或数据库送出的消息。

参见图2所示,本实施例的基于类SQL的数据文件分析处理方法包括:

S123、根据各查询节点Query对应的SQL子句在类SQL语句中的相互关联关系确定语法算子之间的逻辑关系;

S124、根据语法算子之间的相互逻辑关系将各语法算子进行连接,将整体的类SQL语句转换为由多组语法算子组合成的抽象语法树。

由于类SQL语句切分的各SQL子句存在有相互关联关系,如SELECT子句中嵌入有WHERE子句,COUNT子句中嵌入有WHERE子句等,因此,在对类SQL语句进行语法抽象转换成的语法算子间存在有先后执行或者结果运算的逻辑关系,按照所述的逻辑关系将各语法算子连接起来,确定语法算子之间的先后执行以及结果运算关系。

在计算机科学中,抽象语法树(AST)或语法树是用编程语言编写的源代码的抽象语法结构的树表示。树的每个节点表示在源代码中出现的构造。语法是“抽象的”,因为它不代表真实语法中出现的每个细节,而只是结构,内容相关的细节。例如,分组括号在树结构中是隐式的,并且可以通过具有三个分支的单个节点来表示类似于if-condition-then表达式的句法结构。

这将抽象语法树与传统上指定的解析树区分开来,这些语法树通常由解析器在源代码转换和编译过程中构建。一旦构建,通过后续处理(例如,上下文分析)将附加信息添加到AST。

语法分析阶段会把一个令牌流转换成抽象语法树(AST)的形式,这个阶段会使用令牌中的信息把它们转换成一个AST的树结构。

AST树每一层结构也被叫做节点(Node)。一个AST可以由单一的节点或是成百上千个节点够成,通过组合在一起来描述静态分析的程序语法(静态分析是在不需要执行代码的前提下对代码进行分析的处理过程(执行代码的同时进行代码分析即是动态分析)。静态分析的目的是多种多样的,它可用于语法检查、编译、代码高亮、代码转换、优化、压缩等等场景。

参见图3所示,本实施例的基于类SQL的数据文件分析处理方法,所述调用本机存储的数据文件,控制各语法算子按照相互之间的逻辑关系针对数据文件进行运算分析处理包括:

S221、根据抽象语法树的上下文结构连接注册的各组语法算子;

S222、调用数据文本加载至运行内存中;

S223、各组语法算子按照连接关系针对数据文件进行运算、分析以及统计计算。

本实施例的S221中,算子(op)和实时操作系统(kernel)是TF框架中最重要的两个概念,如果一定要做一个类比的话,可以认为op相当于函数声明,kernel相当于函数实现。举个例子,对于矩阵相乘,可以声明一个op叫做MatMul,指明它的名称,输入,输出,参数,以及对参数的限制等。op只是告诉我们,这个操作的目的是什么,op内部有哪些可定制的东西,但不会提供具体实现。op在某种设备上的具体实现方法,是由kernel决定的。TF的计算图由节点构成,而每个节点对应了一个op,在构建计算图时,我们只知道不同节点对应的操作是什么,而不知道运行时这个操作是怎样实现的。也就是说,op是编译期概念,而kernel是运行期概念。因此,算子需要在操作系统中进行注册之后才能被调用执行。本实施例的S221中各组语法算子按照连接关系针对数据文件进行运算、分析以及统计计算包括,由于语法算子之间的连接关系对应的是类SQL语句切分的各SQL子句存在有相互关联关系,因此,各语法算子分别针对数据文件运行,各语法算子的运行结果再根据语法算子之间的连接关系进行运行结果运算,最终得到类SQL语句针对数据文件所要进行分析的结果,并将结果进行显示。

由于本实施例的类SQL语句中含有的多个SQL子句,SQL子句之间存在逻辑关系,例如如需有条件地从表中选取数据,可将WHERE子句添加到SELECT子句,因此,将整个类SQL语句转换为抽象语法树,表示出各SQL子句对应的各组语法算子之间的联系。

本实施例所述的语法算子包括“Fields”算子、“GroupBy”算子、“OrderBy”算子、“Where”算子、“Count”算子、“Distinct”算子、“Avg”算子、“Sum”算子、“Max”算子、“Min”算子、“FROM_UNIXTIME”算子、“UNIX_TIMESTAMP”算子中的一个或者多个的组合。

本实施例的基于类SQL的数据文件分析处理方法的一个例子如下:

Ng access.log demo

1.1.1.1--[03/Jul/2020:17:41:29+0800]"GET/ttt/l/11?lId=11HTTP/1.0"2002290"https://dddd.test.cc/ssss/view/ttt/task/contact""S=4aebaa3f5d964a8e0930059af1898""Mozilla/5.0(Windows NT 10.0;Win64;x64)AppleWebKit/537.36(KHTML,like Gecko)Chrome/79.0.3945.88Safari/537.36"0.0592489926140 21.10.134.321.10.128.156unix:/hhhh/hhhhwork/var/php-cgi.sockdddd.test.cc"1.1.1.1"hhhhwork question 248992614026256775040703171593769289.982 0.786

查看访问时间戳

fql-s"select@1as ip,UNIX_TIMESTAMP(@4::'[%d/%em/%y:%h:%i:%s')asts,@4,@7as uri from test/access.log limit 4"

IP|TS|@4|URI

21.10.128.229|1593766881|[03/Jul/2020:17:01:21|/llllcall/b/getrecord

21.10.128.229|1593766881|[03/Jul/2020:17:01:21|/llllcall/b/getrecord

21.10.128.161|1593766881|[03/Jul/2020:17:01:21|/llllcall/b/getrecord

21.10.134.3|1593766881|[03/Jul/2020:17:01:21|

/aaasc/b/editname?a=567809&a=106951695&name=%E5%BC%A0%

统计访问PV/UV

fql-s"select count(@1)as PV,count(distinct(@1))as UV from test/access.log"

PV|UV

77394|150

参见图5所示,为本实施例的类SQL语法示例。

参见图6所示,为本实施例的类SQL语句中的条件运算符,运算符是保留字或主要用于sql语句的where子句中的字符,用于执行操作,例如:比较和算术运算。这些运算符用于指定sql语句中的条件,并用作语句中多个条件的连词。常见运算符有以下几种:算术运算符(+、-、*、/、%等数学运算符);比较运算符(>、<、=、!=、>=、<=等比较运算符);逻辑运算符(in、not in等逻辑运算符);否定条件运算符。

参见图7所示,为本实施例类SQL语句中的聚合函数。在访问数据库时,经常需要对表中的某列数据进行统计分析,如求其最大值、最小值、平均值等。所有这些针对表中一列或者多列数据的分析就称为聚合分析。在SQL中,可以使用聚合函数快速实现数据的聚合分析,聚合函数对一组值执行计算并返回单一的值。

聚合函数的特点:

1、除了COUNT以外,聚合函数忽略空值。

2、聚合函数经常与SELECT语句的GROUP BY子句一同使用。

3、所有聚合函数都具有确定性。任何时候用一组给定的输入值调用它们时,都返回相同的值。

4、标量函数:只能对单个的数字或值进行计算。主要包括字符函数、日期/时间函数、数值函数和转换函数这四类。

常见的聚合函数包括:

1、求个数/记录数/项目数等:count()。

2、求某一列平均数:avg()。3、求总和,总分等:sum()--必须为数字列。

4、求最大值,最高分,最高工资等:max()。

5、求最小值,最低分,最低工资等:min()。

6、count_big()返回指定组中的项目数量。

与count()函数区别:count_big()返回bigint值,而count()返回的是int值。

7、grouping()产生一个附加的列。

当用cube或rollup运算符添加行时,输出值为1;

当所添加的行不是由cube或rollup产生时,输出值为0。

8、binary_checksum()返回对表中的行或表达式列表计算的二进制校验值,用于检测表中行的更改。

9、checksum_agg()返回指定数据的校验值,空值被忽略。

10、checksum()返回在表的行上或在表达式列表上计算的校验值,用于生成哈希索引。

11、stdev()返回给定表达式中所有值的统计标准偏差。

12、stdevp()返回给定表达式中的所有值的填充统计标准偏差。

13、var()返回给定表达式中所有值的统计方差。

14、varp()返回给定表达式中所有值的填充的统计方差。

参见图4所示,本实施例同时提供一种基于类SQL的数据文件分析处理处理装置,包括:

语法算子转换模块,接收类SQL语句,对类SQL语句进行分析转换为多组语法算子;

算子管理器,统一管理维护所有语法算子的输入、输出以及计算方法,调用本机存储的数据文件,控制各语法算子按照相互之间的逻辑关系针对数据文件进行运算分析处理。

本实施例的算子管理器统一管理维护所有算子的输入,输出,计算方法;并且主进程manager根据语法树的上下文结构连接注册的算子,将数据文本load到内存中,进行多维度的运算、分析、统计计算。

本实施例的类SQL语句为数据查询语言DQL。

本实施例的基于类SQL的数据文件分析处理装置采用类SQL语句普及度高,学习成本低,绝大多数数据分析师都精通。

本实施例的算子语法,一种采用算子进行运算的语法,类似于依存语法、范畴语法以及数理逻辑中的谓词演算。算子在英文中被成为“Operation”,在数学上可以解释为一个函数空间到函数空间上的映射O:X->X,其实就是一个处理单元,往往是指一个函数,在使用算子时往往会有输入和输出,算子则完成相应数据的转化。

本实施例的基于类SQL的数据文件分析处理装置常用的算子语法包括:SELECT:用于从DataSet/DataStream中选择数据,用于筛选出某些列;WHERE:用于从数据集/流中过滤数据,与SELECT一起使用,用于根据某些条件对关系做水平分割,即选择符合条件的记录;DISTINCT:用于从数据集/流中去重根据SELECT的结果进行去重。GROUP BY:是对数据进行分组操作,例如我们需要计算成绩明细表中,每个学生的总分;UNION和UNION ALL:UNION用于将两个结果集合并起来,要求两个结果集字段完全一致,包括字段类型、字段顺序,不同于UNION ALL的是,UNION会对结果数据去重;JOIN:用于把来自两个表的数据联合起来形成结果表。

本实施例的算子语法根据算子调用数据文件进行数据运算,直接得出算子对数据文件的运算分析结果。

本实施例的基于类SQL的数据文件分析处理装置,分析者只需要通过输入类SQL语句,类SQL语句被分析转换为多组语法算子,将待分析数据文件load到内存,多组语法算子进行分析计算最终输出结果。本实施例的基于类SQL的数据文件分析处理方法采用了类SQL+内存计算的方式,完美的实现了低学习成本,减少有统一规则的文本数据分析统计成本,同时实现了即时即用的目标。

进一步地,参见图4所示,本实施例所述的语法算子转换模块包括:

记号提取器,基于接收的类SQL语句进行关键记号提取;

Query切分器,根据提取的关键记号,进行整体的类SQL语句切分,将每个关键记号对应的SQL子句切分成查询节点Query;

抽象语法树分析器,将切分的每组查询节点Query进行语法抽象,转换为语法算子,根据各查询节点Query对应的SQL子句在类SQL语句中的相互关联关系确定语法算子之间的相互逻辑关系;根据语法算子之间的相互逻辑关系将各语法算子进行连接,将整体的类SQL语句转换为由多组语法算子组合成的抽象语法树。

本实施例基于类SQL语句,提取关键记号包括提取SELECT子句中的关键记号“SELECT”、和/或提取FROM子句中的关键记号“FROM”、和/或提取WHERE子句中的关键记号“WHERE”、和/或提取ORDERBY子句中的关键记号“ORDERBY”、和/或提取LIMIT子句中的关键记号“LIMIT”、和/或提取COUNT子句中的关键记号“COUNT”。

本实施例的SQL SELECT子句用于从表中选取数据,结果被存储在一个结果表中(称为结果集);SQL WHERE子句用于规定选择的标准;ORDER BY子句用于对结果集进行排序。

本实施例的Query,是查询的意思,为了在数据库中寻找某一特定文件、网站、记录或一系列记录,由搜索引擎或数据库送出的消息。

在计算机科学中,抽象语法树(AST)或语法树是用编程语言编写的源代码的抽象语法结构的树表示。树的每个节点表示在源代码中出现的构造。语法是“抽象的”,因为它不代表真实语法中出现的每个细节,而只是结构,内容相关的细节。例如,分组括号在树结构中是隐式的,并且可以通过具有三个分支的单个节点来表示类似于if-condition-then表达式的句法结构。

这将抽象语法树与传统上指定的解析树区分开来,这些语法树通常由解析器在源代码转换和编译过程中构建。一旦构建,通过后续处理(例如,上下文分析)将附加信息添加到AST。

抽象语法树也用于程序分析和程序转换系统。

解析器Parser是把js源码转化为抽象语法树的解析器,一般分为词法分析、语法分析及代码生成或执行。

JavaScript Parser是把js源码转化为抽象语法树的解析器,一般分为词法分析、语法分析及代码生成或执行。

语法分析阶段会把一个令牌流转换成抽象语法树(AST)的形式,这个阶段会使用令牌中的信息把它们转换成一个AST的树结构。

AST树每一层结构也被叫做节点(Node)。一个AST可以由单一的节点或是成百上千个节点够成,通过组合在一起来描述静态分析的程序语法(静态分析是在不需要执行代码的前提下对代码进行分析的处理过程(执行代码的同时进行代码分析即是动态分析)。静态分析的目的是多种多样的,它可用于语法检查、编译、代码高亮、代码转换、优化、压缩等等场景。

本实施例的算子管理器根据抽象语法树的上下文结构连接注册的各组语法算子;

调用数据文本加载至运行内存中;

各组语法算子按照连接关系针对数据文件进行运算、分析以及统计计算。

由于本实施例的类SQL语句中含有的多个SQL子句,SQL子句之间存在逻辑关系,例如如需有条件地从表中选取数据,可将WHERE子句添加到SELECT子句,因此,将整个类SQL语句转换为抽象语法树,表示出各SQL子句对应的各组语法算子之间的联系。

本实施例所述的语法算子包括“Fields”算子、“GroupBy”算子、“OrderBy”算子、“Where”算子、“Count”算子、“Distinct”算子、“Avg”算子、“Sum”算子、“Max”算子、“Min”算子、“FROM_UNIXTIME”算子、“UNIX_TIMESTAMP”算子中的一个或者多个的组合。

本实施例还提供了一种电子设备,包括处理器和存储器,所述存储器用于存储计算机可执行程序,当所述计算机程序被所述处理器执行时,所述处理器执行所述基于类SQL的数据文件分析处理方法。

电子设备以通用计算设备的形式表现。其中处理器可以是一个,也可以是多个并且协同工作。本发明也不排除进行分布式处理,即处理器可以分散在不同的实体设备中。本发明的电子设备并不限于单一实体,也可以是多个实体设备的总和。

所述存储器存储有计算机可执行程序,通常是机器可读的代码。所述计算机可读程序可以被所述处理器执行,以使得电子设备能够执行本发明的方法,或者方法中的至少部分步骤。

所述存储器包括易失性存储器,例如随机存取存储单元(RAM)和/或高速缓存存储单元,还可以是非易失性存储器,如只读存储单元(ROM)。

应当理解,本发明的电子设备中还可以包括上述示例中未示出的元件或组件。例如,有些电子设备中还包括有显示屏等显示单元,有些电子设备还包括人机交互元件,例如按扭、键盘等。只要该电子设备能够执行存储器中的计算机可读程序以实现本发明方法或方法的至少部分步骤,均可认为是本发明所涵盖的电子设备。

本实施例还提供了一种计算机可读存储介质,存储有计算机可执行程序,所述计算机可执行程序被执行时,实现所述基于类SQL的数据文件分析处理方法。

本实施例的基于类SQL的数据文件分析处理处理方法以可执行文件的方式代码化,将可执行文件以及需要分析的数据文件分别存入计算机中的指定路径的文件夹内,通过计算机的运行命令指引至所述指定路径的文件夹内读取所述可执行文件,SQL语句编辑器弹出,用户可在弹出的SQL语句编辑器内通过输入类SQL语句实现针对数据文件分析处理。

本实施例的可执行文件根据用户输入的类SQL语句,对类SQL语句进行分析转换为多组语法算子;

可执行文件按照类SQL语句写的数据文件所再路径的文件夹调用本机存储的数据文件,控制各语法算子按照相互之间的逻辑关系针对数据文件进行运算分析处理。

本实施例的可执行文件基于接收的类SQL语句进行关键记号提取;

根据提取的关键记号,进行整体的类SQL语句切分,将每个关键记号对应的SQL子句切分成查询节点Query;

将切分的每组查询节点Query进行语法抽象,转换为语法算子。

本实施例的可执行文件根据各查询节点Query对应的SQL子句在类SQL语句中的相互关联关系确定语法算子之间的相互逻辑关系;

根据语法算子之间的相互逻辑关系将各语法算子进行连接,将整体的类SQL语句转换为由多组语法算子组合成的抽象语法树。

本实施例的可执行文件根据抽象语法树的上下文结构连接注册的各组语法算子;

调用数据文本加载至运行内存中;

各组语法算子按照连接关系针对数据文件进行运算、分析以及统计计算。

本实施例的可执行文件基于接收的类SQL语句进行关键记号提取包括:

基于类SQL语句,提取关键记号包括提取关键记号包括提取SELECT子句中的关键记号“SELECT”、和/或提取FROM子句中的关键记号“FROM”、和/或提取WHERE子句中的关键记号“WHERE”、和/或提取ORDERBY子句中的关键记号“ORDERBY”、和/或提取LIMIT子句中的关键记号“LIMIT”、和/或提取COUNT子句中的关键记号“COUNT”。

本实施例的可执行文件的语法算子包括“Fields”算子、“GroupBy”算子、“OrderBy”算子、“Where”算子、“Count”算子、“Distinct”算子、“Avg”算子、“Sum”算子、“Max”算子、“Min”算子、“FROM_UNIXTIME”算子、“UNIX_TIMESTAMP”算子中的一个或者多个的组合。

本实施例的基于类SQL的数据文件分析处理装置,分析者只需要通过输入类SQL语句,类SQL语句被分析转换为多组语法算子,将待分析数据文件load到内存,多组语法算子进行分析计算最终输出结果。

本实施例的基于类SQL的数据文件分析处理装置采用了类SQL+内存计算的方式,完美的实现了低学习成本,减少有统一规则的文本数据分析统计成本,同时实现了即时即用的目标。

本实施例所述计算机可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、RF等等,或者上述的任意合适的组合。

通过以上对实施方式的描述,本领域的技术人员易于理解,本发明可以由能够执行特定计算机程序的硬件来实现,例如本发明的系统,以及系统中包含的电子处理单元、服务器、客户端、手机、控制单元、处理器等。本发明也可以由执行本发明的方法的计算机软件来实现,例如由微处理器、电子控制单元,客户端、服务器端等执行的控制软件来实现。但需要说明的是,执行本发明的方法的计算机软件并不限于由一个或特定个的硬件实体中执行,其也可以是由不特定具体硬件的以分布式的方式来实现。对于计算机软件,软件产品可以存储在一个计算机可读的存储介质(可以是CD-ROM,U盘,移动硬盘等)中,也可以分布式存储于网络上,只要其能使得电子设备执行根据本发明的方法。

以上实施例仅用以说明本发明而并非限制本发明所描述的技术方案,尽管本说明书参照上述的各个实施例对本发明已进行了详细的说明,但本发明不局限于上述具体实施方式,因此任何对本发明进行修改或等同替换;而一切不脱离发明的精神和范围的技术方案及其改进,其均涵盖在本发明的权利要求范围当中。

相关技术
  • 一种基于类SQL的数据文件分析处理方法、装置及电子设备
  • 基于SQL的数据处理方法、装置、电子设备和存储介质
技术分类

06120113148584