CN114116683B - 计算平台的多语法处理方法、设备及可读存储介质 - Google Patents

计算平台的多语法处理方法、设备及可读存储介质 Download PDF

Info

Publication number
CN114116683B
CN114116683B CN202210097501.0A CN202210097501A CN114116683B CN 114116683 B CN114116683 B CN 114116683B CN 202210097501 A CN202210097501 A CN 202210097501A CN 114116683 B CN114116683 B CN 114116683B
Authority
CN
China
Prior art keywords
platform
data
presto
sql statement
data type
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
CN202210097501.0A
Other languages
English (en)
Other versions
CN114116683A (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.)
Shenzhen Mingyuan Cloud Technology Co Ltd
Original Assignee
Shenzhen Mingyuan Cloud Technology 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 Shenzhen Mingyuan Cloud Technology Co Ltd filed Critical Shenzhen Mingyuan Cloud Technology Co Ltd
Priority to CN202210097501.0A priority Critical patent/CN114116683B/zh
Publication of CN114116683A publication Critical patent/CN114116683A/zh
Application granted granted Critical
Publication of CN114116683B publication Critical patent/CN114116683B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/283Multi-dimensional databases or data warehouses, e.g. MOLAP or ROLAP
    • 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/21Design, administration or maintenance of databases
    • G06F16/214Database migration support
    • 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
    • G06F16/2435Active constructs

Abstract

本发明公开了一种计算平台的多语法处理方法、设备及可读存储介质,所述计算平台的多语法处理方法包括:当Presto平台接收到基于非所述Presto平台编写的SQL语句时,对所述SQL语句进行语义解析,生成所述SQL语句中包含的表字段合集;提取所述表字段合集中参与所述SQL语句的关联分析流程的分析表字段,对所述分析表字段在所述Presto平台中的数值数据进行数据类型统一转换,得到所述SQL语句的兼容运行环境;基于所述Presto平台在所述兼容运行环境下,执行所述SQL语句生成数据报表。使得Presto平台可正确执行基于其他平台的SQL语句,无需开发人员修改,加速客户大数据集群平台私有化部署进程。

Description

计算平台的多语法处理方法、设备及可读存储介质
技术领域
本发明涉及离线数仓存储分析平台数据迁移领域,尤其涉及一种计算平台的多语法处理方法、设备及可读存储介质。
背景技术
基于Presto自研数据平台在从其他离线数仓存储分析平台向自身平台迁移历史报表时,存在SQL(Structured Query Language,结构化查询语言)语法不兼容的问题导致在自身Presto平台历史报表生成出错问题。例如将MaxCompute平台或者Hive平台开发的报表向Presto平台迁移,存在巨大的人效与技术挑战。而目前行业一惯做法都是手动修改在MaxCompute平台或者Hive平台商开发的报表的SQL语句以兼容Presto平台,但需要消耗巨大的人效成本,成为客户在大数据集群平台私有化部署过程的阻碍。因此亟需一种方便快速从其他离线数仓存储分析平台向Presto平台迁移历史报表方法。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种计算平台的多语法处理方法,旨在解决目前手动修改报表SQL语句以兼容Presto平台,存在较高人工成本的技术问题。
为实现上述目的,本发明提供一种计算平台的多语法处理方法,所述计算平台的多语法处理包括以下步骤:
当Presto平台接收到基于非所述Presto平台编写的SQL语句时,对所述SQL语句进行语义解析,生成所述SQL语句中包含的表字段合集;
提取所述表字段合集中参与所述SQL语句的关联分析流程的分析表字段,对所述分析表字段在所述Presto平台中的数值数据进行数据类型统一转换,得到所述SQL语句的兼容运行环境;
在所述兼容运行环境下,基于所述Presto平台执行所述SQL语句生成数据报表。
进一步的,所述对所述SQL语句进行语义解析的包括:
根据所述SQL语句的源仓储分析平台,获取与所述SQL语句对应的语义分析规范;
基于所述语义分析规范对所述SQL语句进行语义解析。
进一步的,所述提取所述表字段合集中参与所述SQL语句的关联分析流程的分析表字段的步骤包括:
提取所述表字段合集中参与不同分析流程的所述分析表字段,将参与同一个分析流程的所述分析表字段作为一个分析表字段合集。
进一步的,在所述对所述分析表字段在所述Presto平台中的数值数据进行数据类型统一转换的步骤之前,包括:
判断所述分析表字段合集在所述Presto平台中的数值数据的数据类型是否一致;
若所述数值数据的数据类型不一致,则执行所述对所述分析表字段在所述Presto平台中的数值数据进行数据类型统一转换的步骤。
进一步的,所述对所述分析表字段在所述Presto平台中的数值数据进行数据类型统一转换的步骤包括:
确定所述数值数据进行数据类型统一转换的当前基准数据类型;
判断将所述数值数据的数据类型统一转换成所述当前基准数据类型是否符合数据类型转换逻辑;
当符合所述数据类型转换逻辑时,将所述数值数据的数据类型均转换成所述当前基准数据类型。
进一步的,所述确定所述数值数据进行数据类型统一转换的当前基准数据类型的步骤包括:
从与所述分析表字段合集相关的数据类型合集随机获取一种,将随机获取到的数据类型作为所述当前基准数据类型。
进一步的,在所述判断所述分析表字段合集在所述Presto平台中的数值数据的数据类型是否一致的步骤之后,包括:
当不符合所述数据类型转换逻辑时,重新确定所述当前基准数据类型;
当遍历所述分析表字段合集相关的所述数据类型合集,且将所述数值数据的数据类型统一转换成所述当前基准数据类型均不符合数据类型转换逻辑时,输出报错信息,以提示用户所述SQL语句存在逻辑错误。
进一步的,所述Presto平台加载MaxCompute平台执行所述SQL语句时相关的功能函数以及加载Hive平台执行所述SQL语句时相关的功能函数。
此外,为实现上述目的,本发明还提供一种计算平台的多语法处理设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算平台的多语法处理程序,所述计算平台的多语法处理程序被所述处理器执行时实现如上述的计算平台的多语法处理方法的步骤。
此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算平台的多语法处理程序,所述计算平台的多语法处理程序被处理器执行时实现如上述的计算平台的多语法处理方法的步骤。
本发明实施例提出的一种计算平台的多语法处理方法,将MaxCompute平台或者Hive平台执行SQL语句时的相关功能函数加载至Presto平台,同时将Presto平台的源码进行修改后,使得Presto平台在执行基于MaxCompute平台或者Hive平台开发的SQL语句时可以进行正确的解析语义,且在根据该SQL语句生成数据报表前,对该SQL语句涉及的数据的数据类型进行统一转化,当数据类型统一后将符合Presto平台自身的SQL语法,使得Presto平台可正确执行基于MaxCompute平台或者Hive平台开发的SQL语句,无需开发人员对每个SQL语句进行兼容修改,大量减少了人工成本,加速客户大数据集群平台私有化部署进程,提升用户大数据集群平台私有化体验感。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图;
图2为本发明计算平台的多语法处理方法第一实施例的流程示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:将MaxCompute平台或者Hive平台执行SQL语句时的相关功能函数加载至Presto平台,同时将Presto平台的源码进行修改后,使得Presto平台在执行基于MaxCompute平台或者Hive平台开发的SQL语句时可以进行正确的解析语义,且在根据该SQL语句生成数据报表前,对该SQL语句涉及的数据的数据类型进行统一转化,当数据类型统一后将符合Presto平台自身的SQL语法,使得Presto平台可正确执行基于MaxCompute平台或者Hive平台开发的SQL语句。
由于现有技术基于Presto自研数据平台在从其他离线数仓存储分析平台向自身平台迁移历史报表时,存在SQL(Structured Query Language,结构化查询语言)语法不兼容的问题导致在自身Presto平台历史报表生成出错的问题。例如将MaxCompute平台或者Hive平台开发的报表向Presto平台迁移,存在巨大的人效与技术挑战。而目前行业一惯做法都是手动修改在MaxCompute平台或者Hive平台商开发的报表的SQL语句以兼容Presto平台,但需要消耗巨大的人效成本,成为客户在大数据集群平台私有化部署过程的阻碍。
本发明提供一种解决方案,使得Presto平台可正确执行基于MaxCompute平台或者Hive平台开发的SQL语句,无需开发人员对每个SQL语句进行兼容修改,大量减少了人工成本,加速客户大数据集群平台私有化部署进程,提升用户大数据集群平台私有化体验感。
如图1所示,图1是本发明实施例方案涉及的硬件运行环境的设备结构示意图。
本发明实施例设备可以是服务器,也可以是PC、便携计算机等具有数据接收、数据处理以及数据输出功能的电子终端设备。
如图1所示,该终端可以包括:处理器1001,例如CPU,网络接口1004,用户接口1003,存储器1005,通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display)、输入单元比如键盘(Keyboard),可选用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是稳定的存储器(non-volatile memory),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
可选地,终端还可以包括摄像头、RF(Radio Frequency,射频)电路,传感器、音频电路、WiFi模块等等。其中,传感器比如光传感器、运动传感器以及其他传感器。具体地,光传感器可包括环境光传感器及接近传感器,其中,环境光传感器可根据环境光线的明暗来调节显示屏的亮度,接近传感器可在移动终端移动到耳边时,关闭显示屏和/或背光。作为运动传感器的一种,重力加速度传感器可检测各个方向上(一般为三轴)加速度的大小,静止时可检测出重力的大小及方向,可用于识别移动终端姿态的应用(比如横竖屏切换、相关游戏、磁力计姿态校准)、振动识别相关功能(比如计步器、敲击)等;当然,移动终端还可配置陀螺仪、气压计、湿度计、温度计、红外线传感器等其他传感器,在此不再赘述。
本领域技术人员可以理解,图1中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及计算平台的多语法处理程序。
在图1所示的终端中,网络接口1004主要用于连接后台服务器,与后台服务器进行数据通信;用户接口1003主要用于连接客户端(用户端),与客户端进行数据通信;而处理器1001可以用于调用存储器1005中存储的计算平台的多语法处理程序,并执行以下操作:
当Presto平台接收到基于非所述Presto平台编写的SQL语句时,对所述SQL语句进行语义解析,生成所述SQL语句中包含的表字段合集;
提取所述表字段合集中参与所述SQL语句的关联分析流程的分析表字段,对所述分析表字段在所述Presto平台中的数值数据进行数据类型统一转换,得到所述SQL语句的兼容运行环境;
在所述兼容运行环境下,基于所述Presto平台执行所述SQL语句生成数据报表。
进一步地,处理器1001可以调用存储器1005中存储的计算平台的多语法处理程序,还执行以下操作:
所述对所述SQL语句进行语义解析的步骤包括:
根据所述SQL语句的源仓储分析平台,获取与所述SQL语句对应的语义分析规范;
基于所述语义分析规范对所述SQL语句进行语义解析。
进一步地,处理器1001可以调用存储器1005中存储的计算平台的多语法处理程序,还执行以下操作:
所述提取所述表字段合集中参与所述SQL语句的关联分析流程的分析表字段的步骤包括:
提取所述表字段合集中参与不同分析流程的所述分析表字段,将参与同一个分析流程的所述分析表字段作为一个分析表字段合集。
进一步地,处理器1001可以调用存储器1005中存储的计算平台的多语法处理程序,还执行以下操作:
在所述对所述分析表字段在所述Presto平台中的数值数据进行数据类型统一转换的步骤之前,包括:
判断所述分析表字段合集在所述Presto平台中的数值数据的数据类型是否一致;
若所述数值数据的数据类型不一致,则执行所述对所述分析表字段在所述Presto平台中的数值数据进行数据类型统一转换的步骤。
进一步地,处理器1001可以调用存储器1005中存储的计算平台的多语法处理程序,还执行以下操作:
所述对所述分析表字段在所述Presto平台中的数值数据进行数据类型统一转换的步骤包括:
确定所述数值数据进行数据类型统一转换的当前基准数据类型;
判断将所述数值数据的数据类型统一转换成所述当前基准数据类型是否符合数据类型转换逻辑;
当符合所述数据类型转换逻辑时,将所述数值数据的数据类型均转换成所述当前基准数据类型。
进一步地,处理器1001可以调用存储器1005中存储的计算平台的多语法处理程序,还执行以下操作:
所述确定所述数值数据进行数据类型统一转换的当前基准数据类型的步骤包括:
从与所述分析表字段合集相关的数据类型合集随机获取一种,将随机获取到的数据类型作为所述当前基准数据类型。
进一步地,处理器1001可以调用存储器1005中存储的计算平台的多语法处理程序,还执行以下操作:
所述判断所述分析表字段合集在所述Presto平台中的数值数据的数据类型是否一致的步骤之后,包括:
当不符合所述数据类型转换逻辑时,重新确定所述当前基准数据类型;
当遍历所述分析表字段合集相关的所述数据类型合集,且将所述数值数据的数据类型统一转换成所述当前基准数据类型均不符合数据类型转换逻辑时,输出报错信息,以提示用户所述SQL语句存在逻辑错误。
进一步地,所述Presto平台加载MaxCompute平台执行所述SQL语句时相关的功能函数以及加载Hive平台执行所述SQL语句时相关的功能函数。
参照图2,本发明计算平台的多语法处理方法中的第一实施例,所述计算平台的多语法处理方法包括:
步骤S10,当Presto平台接收到基于非所述Presto平台编写的SQL语句时,对所述SQL语句进行语义解析,生成所述SQL语句中包含的表字段合集;
在本实施例中,上述Presto平台属于Apache开源社区一款MMP(MassivelyParallel Processor )实时计算引擎,上述非所述Presto平台即为后续的MaxCompute平台和Hive平台等离线数仓分析平台,MaxCompute平台则为阿里云的商业化离线数仓存储分析平台、Hive平台则为Apache开源社区一款主流支持私有化部署的离线数仓分析平台。可以理解的是,通常情况下,离线数仓分析平台可基于由开发人员编写的SQL语句(该SQL语句符合其对应平台的SQL语法)生成一份数据报表,即在不同的平台开发的SQL语句其所遵循的SQL语法不同,如Presto平台的SQL语法与MaxCompute平台的SQL语法不同,若在Presto平台执行在MaxCompute平台开发的SQL语句,可能会因为语法错误导致Presto平台执行MaxCompute平台开发的SQL语句时生成数据报表存在错误或者无法生成数据报表,而目前普遍的做法是对在MaxCompute平台开发的SQL语句人工进行修改使其可以兼容Presto平台,可以理解是,每种数据报表的都有其对应的SQL语句(可能存在成千上万种数据报表),若对每种报表的SQL语句重新修改需要消耗大量人工成本。而在本实施例将修改Presto平台的源码,改变Presto平台在执行SQL语句时的逻辑,此外,所述Presto平台加载MaxCompute平台执行所述SQL语句时相关的功能函数以及加载Hive平台执行所述SQL语句时相关的功能函数。
在客户基于上述Presto平台进行大数据集群平台私有化部署过程时,将其他仓存储分析平台的SQL语句迁移至Presto平台,Presto平台获取到其他平台的SQL语句后,将会对该SQL语句进行语义解析。
进一步的,在所述对所述SQL语句进行语义解析的步骤包括:根据所述SQL语句的源仓储分析平台,获取与所述SQL语句对应的语义分析规范;基于所述语义分析规范对所述SQL语句进行语义解析。具体的,Presto平台对获取到的SQL语句进行语义解析之前,将会使用该SQL语句的源仓储分析平台(开发该SQL语句的平台)的语义分析规范进行语义分析。可以理解的是,在本实施例中Presto平台加载了其他的平台的功能函数,如若该SQL语句的源平台的为MaxCompute平台,而Presto平台默认只支持Java正则表达式的规范,在本实施中,将在Presto平台加载MaxCompute平台正则表达式Posix规范中的相关功能函数,例如regexp_replace(功能为:将字符串中与指定规则在指定次数匹配的子串替换为另一字符串,示例:string regexp_replace(string<source>,string<pattern>,string<replace_string>[, bigint <occurrence>])又或者regexp_substr(功能为:返回字符串中,从指定位置开始,与指定规则匹配指定次数的子串,示例:string regexp_substr(string<source>,string<pattern>[,bigint<start_position>[, bigint <occurrence>]])等Presto平台默认没有的功能函数,此外,还包括存在功能差异的函数如regexp_extract(MaxCompute平台中该函数默认第三个参数为1,而Presto平台默认为0,如果第三个参数不致,则导至计算结果一致),上述功能函数可通过Presto平台中 UDF函数(用户自定义函数)完成加载,若Presto平台在对基于MaxCompute平台开发的SQL语句进行语义解析时,如针对正则匹配,则Presto平台将使用MaxCompute平台的Posix规范进行解析。
语义解析完成后,将生成该SQL语句中所包含的表字段合集,可以理解的是,本实施例中,是对生成数据报表的SQL语句进行解析,上述表字段合集即为生成的该数据报表所需要使用的数据的字段,如某项业务的日、月、年收益。
步骤S20,提取所述表字段合集中参与所述SQL语句的关联分析流程的分析表字段,对所述分析表字段在所述Presto平台中的数值数据进行数据类型统一转换,得到所述SQL语句的兼容运行环境;
进一步的,提取所述表字段合集中参与不同分析流程的所述分析表字段,将参与同一个分析流程的所述分析表字段作为一个分析表字段合集。
可以理解的是,SQL语句为开发人员依据不同需求数据报表开发编写的,生成一数据报表可以存在数据加、减、比对等数据分析流程步骤。生成表字段合集后,从表字段合集中进一步将参与同一个分析流程的分析表字段(为参与了分析流程的表字段)作为一个分析表字段合集(在Presto平台中的SQL语法不允许数据类型不同的数值数据进行加、减、比对等数据分析的步骤,如在上述SQL语句中两表字段在本实施例的Presto平台对应的数值数据的数字类型和字符类型,则不运行进行上述数据分析步骤)。如在进行2021年业务量年增长率的计算分析时,需将2021年总业务量与2020年总业务量进行比对,则将2021年总业务量的表字段与2020年总业务量的表字段作为一个分析表字段合集。
进一步的,在所述对所述分析表字段在所述Presto平台中的数值数据进行数据类型统一转换的步骤之前,判断所述分析表字段合集在所述Presto平台中的数值数据的数据类型是否一致;若所述数值数据的数据类型不一致,则执行所述对所述分析表字段在所述Presto平台中的数值数据进行数据类型统一转换的步骤。具体的,判断该分析表字段合集中每个表字段在上述Presto平台中对应的数值数据的数据类型,如一个分析表字段合集在Presto平台中数值数据所对应的数据类型有:SMALLINT、TINYINT、INTEGER等,则该分析表字段合集在Presto平台中数值数据所对应的数据类型不一致,执行对该分析表字段在上述Presto平台中的数值数据进行数据类型统一转换的步骤。
进一步的,确定所述数值数据进行数据类型统一转换的当前基准数据类型;判断将所述数值数据的数据类型统一转换成所述当前基准数据类型是否符合数据类型转换逻辑;当符合所述数据类型转换逻辑时,将所述数值数据的数据类型均转换成所述当前基准数据类型。具体的,上述确定当前基准数据类型的步骤为,从与所述分析表字段合集相关的数据类型合集随机获取一种,将随机获取到的数据类型作为所述当前基准数据类型。如基于上述例子,一个分析表字段合集涉及到数据类型有:SMALLINT、TINYINT、INTEGER,则分析表字段合集相关的数据类型合集为:SMALLINT、TINYINT、INTEGER。从SMALLINT、TINYINT、INTEGER中随机获取得到SMALLINT数据类型,则将SMALLINT作为当前基准数据类型。当当前基准数据类型确定后,判断将该分析表字段合集在Presto平台中其他数值数据的数据类型转换为当前基准数据类型是否符合数据类型转换逻辑,如字符类型的数据向数字类型的数据进行数据类型转换是不被所述数据类型转换逻辑所允许的。若判定当前该分析表字段合集中其他数据的数据类型转换为当前基准数据类型符合数据类型转换逻辑则进行数据类型转换,如将TINYINT类型和INTEGER类型的数据转换为SMALLINT类型符合数据类型转换逻辑,则将该分析表字段合集中TINYINT类型和INTEGER类型的数据转换为SMALLINT类型的数据。
此外,判断所述分析表字段合集在所述Presto平台中的数值数据的数据类型是否一致的步骤之后,若所述分析表字段合集对应的数据的数据类型一致,如该析表字段合集中对应的数据的数据类型都是SMALLINT类型,则直接执行基于所述Presto平台执行所述SQL语句生成数据报表的步骤。
进一步的,判断将所述数值数据的数据类型统一转换成所述当前基准数据类型是否符合数据类型转换逻辑的步骤之后,当不符合所述数据类型转换逻辑时,重新确定所述当前基准数据类型;当遍历所述分析表字段合集相关的所述数据类型合集,且将所述数值数据的数据类型统一转换成所述当前基准数据类型均不符合数据类型转换逻辑时,输出报错信息,以提示用户所述SQL语句存在逻辑错误。具体的,如基于上述例子,若将TINYINT类型和INTEGER类型的数据转换为SMALLINT类型不符合数据类型转换逻辑,则重新确定当前基准数据类型,如从TINYINT类型和INTEGER类型中随机获取TINYINT类型作为当前基准数据类型,再判断将该分析表字段合集中对应SMALLINT类型和INTEGER类型的数据转换为TINYINT类型是否符合数据类型转换逻辑。可以理解是,上述过程为循环步骤,当找到满足数据类型转换逻辑的当前基准数据类型时,则进行数据类型转换的步骤。若遍历完全全部的数据类型,如基于上例子,当当前基准数据类型为SMALLINT类型、TINYINT类型和INTEGER类型时,均不能满足数据类型转换逻辑,则向用户输出报错信息,提示用户该SQL语句在编写过程中存在逻辑错误。可以理解的是,在数据类型转换时进行数据类型转换逻辑判断,可以避免数据类型转后生成的数据报表存在错误,以及对SQL语句进行逻辑检查,对存在逻辑错误的SQL语句报错。
上述数据类型转换步骤中,如将TINYINT隐式转换成(系统跟据需要自动完成转换)SMALLINT、INTEGER、BIGINT、REAL、DOUBLE、DECIMAL等类型的代码如下:
} case StandardTypes.TINYINT: switch (resultTypeBase) {/**支持TINYINT隐式转换成SMALLINT INTEGER BIGINT REAL DOUBLE DECIMAL等类型**/case StandardTypes.SMALLINT: return Optional.of(SMALLINT);case StandardTypes.INTEGER: return Optional.of(INTEGER);case StandardTypes.BIGINT: return Optional.of(BIGINT);case StandardTypes.REAL: return Optional.of(REAL); caseStandardTypes.DOUBLE: return Optional.of(DOUBLE); caseStandardTypes.DECIMAL: return Optional.of(createDecimalType(3,0)); default: return Optional.empty(); }
此外,除上述代码表述的数据类型转换外还可以包括:UUID隐式转换成CHAR;支持SMALLINT隐式转换成INTEGER、BIGINT、REAL、DOUBLE、DECIMAL等类型;INTEGER隐式转换成BIGINT、REAL、DOUBLE、DECIMAL等类型;BIGINT隐式转换成REAL、DOUBLE、DECIMAL等类型。上述数据类型转换的种类,此处不再赘述,可以根据实际需求进行替换。
可以理解的是,当完成SQL语句在Presto平台中对应的数值数据的数据类型统一转换步骤后,Presto平台在执行上述SQL语句时即可或者到统一数据类型的数值数据,即所述SQL语句的兼容运行环境。
步骤S30,基于所述Presto平台在所述兼容运行环境下,执行所述SQL语句生成数据报表。
在上述所述SQL语句的兼容运行环境,Presto平台将能正确的执行基于MaxCompute平台或者Hive平台的开发的SQL语句生成数据报表,无需开发人员对每个其他平台的SQL语句进行修改以兼容Presto平台,减少人工成本。
可以理解的是,在本实施例中,将MaxCompute平台或者Hive平台执行SQL语句时的相关功能函数加载至Presto平台,同时将Presto平台的源码进行修改,使得Presto平台在执行基于MaxCompute平台或者Hive平台开发的SQL语句时可以正确的解析语义,且在根据该SQL语句生成数据报表前,对该SQL语句涉及的数据的数据类型进行统一转化,当数据类型统一后将符合Presto平台自身的SQL语法,使得Presto平台可正确执行基于MaxCompute平台或者Hive平台开发的SQL语句,无需开发人员对每个SQL语句进行兼容修改,大量减少了人工成本,加速客户大数据集群平台私有化部署进程,提升用户大数据集群平台私有化体验感。
此外,本实施例还提供一种计算平台的多语法处理设备,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算平台的多语法处理程序,所述计算平台的多语法处理程序被所述处理器执行时实现如上述的计算平台的多语法处理方法的步骤。
此外,本实施例还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算平台的多语法处理程序,所述计算平台的多语法处理程序被处理器执行时实现如上述的计算平台的多语法处理方法的步骤。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

Claims (7)

1.一种计算平台的多语法处理方法,其特征在于,所述计算平台的多语法处理包括以下步骤:
当Presto平台接收到基于非所述Presto平台编写的SQL语句时,对所述SQL语句进行语义解析,生成所述SQL语句中包含的表字段合集;
提取所述表字段合集中参与所述SQL语句的关联分析流程的分析表字段,对所述分析表字段在所述Presto平台中的数值数据进行数据类型统一转换,得到所述SQL语句的兼容运行环境;
基于所述Presto平台在所述兼容运行环境下,执行所述SQL语句生成数据报表;
其中,所述提取所述表字段合集中参与所述SQL语句的关联分析流程的分析表字段的步骤包括:
提取所述表字段合集中参与不同分析流程的所述分析表字段,将参与同一个分析流程的所述分析表字段作为一个分析表字段合集;
其中,在所述对所述分析表字段在所述Presto平台中的数值数据进行数据类型统一转换的步骤之前,包括:
判断所述分析表字段合集在所述Presto平台中的数值数据的数据类型是否一致;
若所述数值数据的数据类型不一致,则执行所述对所述分析表字段在所述Presto平台中的数值数据进行数据类型统一转换的步骤;
其中,所述对所述分析表字段在所述Presto平台中的数值数据进行数据类型统一转换的步骤包括:
确定所述数值数据进行数据类型统一转换的当前基准数据类型;
判断将所述数值数据的数据类型统一转换成所述当前基准数据类型是否符合数据类型转换逻辑;
当符合所述数据类型转换逻辑时,将所述数值数据的数据类型均转换成所述当前基准数据类型。
2.如权利要求1所述的计算平台的多语法处理方法,其特征在于,所述对所述SQL语句进行语义解析的步骤包括:
根据所述SQL语句的源仓储分析平台,获取与所述SQL语句对应的语义分析规范;
基于所述语义分析规范对所述SQL语句进行语义解析。
3.如权利要求2所述的计算平台的多语法处理方法,其特征在于,所述确定所述数值数据进行数据类型统一转换的当前基准数据类型的步骤包括:
从与所述分析表字段合集相关的数据类型合集随机获取一种,将随机获取到的数据类型作为所述当前基准数据类型。
4.如权利要求3所述的计算平台的多语法处理方法,其特征在于,在所述判断所述分析表字段合集在所述Presto平台中的数值数据的数据类型是否一致的步骤之后,包括:
当不符合所述数据类型转换逻辑时,重新确定所述当前基准数据类型;
当遍历所述分析表字段合集相关的所述数据类型合集,且将所述数值数据的数据类型统一转换成所述当前基准数据类型均不符合数据类型转换逻辑时,输出报错信息,以提示用户所述SQL语句存在逻辑错误。
5.如权利要求1所述的计算平台的多语法处理方法,其特征在于,所述Presto平台加载MaxCompute平台执行所述SQL语句时相关的功能函数以及加载Hive平台执行所述SQL语句时相关的功能函数。
6.一种计算平台的多语法处理设备,其特征在于,所述设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算平台的多语法处理程序,所述计算平台的多语法处理程序被所述处理器执行时实现如权利要求1至5中任一项所述的计算平台的多语法处理方法的步骤。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算平台的多语法处理程序,所述计算平台的多语法处理程序被处理器执行时实现如权利要求1至5中任一项所述的计算平台的多语法处理方法的步骤。
CN202210097501.0A 2022-01-27 2022-01-27 计算平台的多语法处理方法、设备及可读存储介质 Active CN114116683B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210097501.0A CN114116683B (zh) 2022-01-27 2022-01-27 计算平台的多语法处理方法、设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210097501.0A CN114116683B (zh) 2022-01-27 2022-01-27 计算平台的多语法处理方法、设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN114116683A CN114116683A (zh) 2022-03-01
CN114116683B true CN114116683B (zh) 2022-05-27

Family

ID=80361851

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210097501.0A Active CN114116683B (zh) 2022-01-27 2022-01-27 计算平台的多语法处理方法、设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN114116683B (zh)

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9069375B2 (en) * 2013-04-30 2015-06-30 MobileDataForce, Inc. Method and system for platform-independent application development
US20180196867A1 (en) * 2017-01-09 2018-07-12 Alexander WIESMAIER System, method and computer program product for analytics assignment
CN109542953B (zh) * 2018-11-29 2021-01-05 成都四方伟业软件股份有限公司 基于presto的数据处理方法及装置
CN111414382A (zh) * 2019-01-07 2020-07-14 北京智融网络科技有限公司 一种基于MongoDB的慢SQL聚合展示方法和系统
CN110059103B (zh) * 2019-04-28 2023-06-06 南京大学 一种跨平台统一的大数据sql查询方法
US11537617B2 (en) * 2019-04-30 2022-12-27 Dremio Corporation Data system configured to transparently cache data of data sources and access the cached data
CN111026779B (zh) * 2019-12-19 2023-10-17 厦门安胜网络科技有限公司 一种基于Flink SQL的数据处理方法、装置、存储介质
CN111444220B (zh) * 2020-05-09 2023-09-01 南京大学 规则驱动和数据驱动相结合的跨平台sql查询优化方法
CN112988782B (zh) * 2021-02-18 2022-08-30 新华三大数据技术有限公司 Hive支持交互式查询的方法、装置及存储介质
CN113535754A (zh) * 2021-07-27 2021-10-22 杭州海康威视数字技术股份有限公司 一种数据访问方法、装置及系统

Also Published As

Publication number Publication date
CN114116683A (zh) 2022-03-01

Similar Documents

Publication Publication Date Title
US11934772B2 (en) Providing synchronous and asynchronous general user interface (GUI) input
CN108549538B (zh) 一种代码检测方法、装置、存储介质及测试终端
CN111507086B (zh) 本地化应用程序中翻译文本位置的自动发现
CN111736840A (zh) 小程序应用的编译方法、运行方法、存储介质及电子设备
JP2023541186A (ja) 可視化ページレンダリング方法、装置、機器及び記憶媒体
CN111338944B (zh) 远程过程调用rpc接口测试方法、装置、介质及设备
CN115599386A (zh) 代码生成方法、装置、设备及存储介质
CN112433940A (zh) 软件开发工具包sdk测试方法及相关设备
US11775290B2 (en) Detection of API backward compatibility across software versions
US20180314683A1 (en) Method and device for processing natural language
CN113297251A (zh) 多源数据检索方法、装置、设备及存储介质
CN114116683B (zh) 计算平台的多语法处理方法、设备及可读存储介质
CN113821496B (zh) 数据库迁移方法、系统、设备及计算机可读存储介质
CN111427784A (zh) 一种数据获取方法、装置、设备及存储介质
CN111259039A (zh) 数据库操作方法、装置、设备和计算机可读存储介质
CN111539200B (zh) 一种生成富文本的方法、装置、介质和电子设备
CN112306493A (zh) 热修复补丁生成方法、装置、存储介质及计算机设备
CN115481137B (zh) 基于sql语句的软件生成方法、装置、设备及介质
CN113761588A (zh) 一种数据校验方法、装置、终端设备及存储介质
CN111488286A (zh) 一种Android模块独立开发的方法及装置
CN114416099B (zh) 一种基于信息物理系统的模型集成方法及相关组件
CN116382703B (zh) 软件包生成方法、代码开发方法及装置、电子设备和介质
CN111151008B (zh) 游戏运营数据的校验方法、装置、配置后台及介质
JP5389857B2 (ja) 開発支援システム、開発支援方法及び開発支援プログラム
CN110196888B (zh) 基于Hadoop的数据更新方法、装置、系统及介质

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