Maxcompute SQL

关键字

MaxCompute将SQL语句的关键字作为保留字。在对表、列或是分区命名时如若使用关键字,需给关键字加 ``符号进行转义,否则会报错。保留字不区分大小写。下面只给出常用的保留字列表

%    &    &&    (    )    *    +  
 -    .    /    ;    <    <=    <>  
 =    >    >=    ?    ADD    ALL    ALTER  
 AND  AS    ASC    BETWEEN    BIGINT    BOOLEAN    BY  
 CASE CAST  COLUMN    COMMENT    CREATE    DESC    DISTINCT  
 DISTRIBUTE    DOUBLE    DROP    ELSE    FALSE    FROM    FULL  
 GROUP    IF    IN    INSERT    INTO    IS    JOIN  
 LEFT    LIFECYCLE    LIKE    LIMIT    MAPJOIN    NOT    NULL  
 ON    OR    ORDER    OUTER    OVERWRITE    PARTITION    RENAME  
 REPLACE    RIGHT    RLIKE    SELECT    SORT    STRING    TABLE  
 THEN    TOUCH    TRUE    UNION    VIEW    WHEN    WHERE

类型转换说明

MaxCompute SQL允许数据类型之间的转换,类型转换方式包括显式类型转换和隐式类型转换。

  • 显式类型转换:是指用cast函数将一种数据类型的值转换为另一种类型的值的行为。
  • 隐式类型转换:是指在运行时,由MaxCompute依据上下文使用环境及类型转换规则自动进行的类型转换。隐式转换作用域包括各种运算符、内建函数等。

分区表

  • 支持分区

MaxComputeDDL语法差异对比

语法MaxComputeHiveMySQLOracleSQL Server
CREATE TABLE—PRIMARY KEYNNYYY
CREATE TABLE—NOT NULLYNYYY
CREATE TABLE—CLUSTER BYYYNYY
CREATE TABLE—EXTERNAL TABLEY (OSS, OTS, TDDL)YNYN
CREATE TABLE—TEMPORARY TABLENYYYY (with #prefix)
INDEX—CREATE INDEXNYYYY
VIRTUAL COLUMNNNNYY

MaxComputeDML语法差异对比

语法MaxComputeHiveMySQLOracleSQL Server
CTEYYYYY
SELECT—recursive CTENNNYY
SELECT—GROUP BY ROLL UPYYYYY
SELECT—GROUP BY CUBEYYNYY
SELECT—GROUPING SETYYNYY
SELECT—IMPLICT JOINYYNYY
SELECT—PIVOTNNNYY
SEMI JOINYYYNN
SELEC TRANSFROMYYNNN
SELECT—corelated subqueryYYYYY
ORDER BY NULLS FIRST/LASTNYYYY
LATERAL VIEWYYNYY (CROSS APPLY keyword)
SET OPERATOR—UNION (disintct)YYYYY
SET OPERATOR—INTERSECTYNNYY
SET OPERATOR—MINUS/EXCEPTYNNYY(keyword EXCEPT)
INSERT INTO ... VALUESYYYYY
INSERT INTO (ColumnList)YYYYY
UPDATE … WHERENYYYY
UPDATE … ORDER BY LIMITNNYNY
DELETE … WHERENYYYY
DELETE … ORDER BY LIMITNNYNN
ANALYTIC—reusable WINDOWING CLUSUEYYNNN
ANALYTIC—CURRENT ROWYYNYY
ANALYTIC—UNBOUNDEDYNYYY
ANALYTIC—RANGE …NYNYY
WHILE DONNYYY
VIEW WITH PARAMETERSYNNN

说明 SQL Function/Storage Procedure一定程度上能满足MaxCompute参数化VIEW的功能。

N

MaxCompute SCRIPTING语法差异对比

语法MaxComputeHiveMySQLOracleSQL Server
TABLE VARIABLEYYYYY
SCALER VARIABLEYYYYY
ERROR HANDLING—RAISE ERRORNNYYY
ERROR HANDLING—TRY CATCHNNNYY
FLOW CONTROL—LOOPNNYYY
CURSORNNYYY

 

MaxCompute SQL的限制项

限制项最大值/限制条件分类说明
表名长度128字节长度限制表名、列名中不能有特殊字符,以字母开头,且只能用英文小写字母(a-z)、英文大写字母(A-Z)、数字和下划线(_)。
注释长度1024字节长度限制长度不超过1024字节的有效字符串。
表的列定义1200个数量限制单表的列定义个数最多为1200个。
单表分区数60000个数量限制单表的分区个数最多为60000个。
表的分区层级6级数量限制在表中创建的分区层次不能超过6级。
屏显10000行数量限制SELECT语句屏显最多输出10000行。
INSERT目标个数256个数量限制MULTI-INSERT场景,目标表的数量限制为256个。
UNION ALL256个数量限制UNION ALL场景,最多允许合并256个表。
MAPJOIN128个数量限制MAPJOIN场景,最多允许连接128个小表。
MAPJOIN内存限制512 MB数量限制MAPJOIN场景,所有小表的内存不能超过512 MB。
窗口函数5个数量限制单个SELECT语句中最多允许存在5个窗口函数。
ptinsubq1000行数量限制子查询中存在分区列时,子查询的返回结果不能超过1000行。
SQL语句长度2 MB长度限制SQL语句的最大长度为2 MB。包括您使用SDK调用SQL的场景。
WHERE子句条件个数256个数量限制WHERE子句中的条件个数最大为256个。
列记录长度8 MB数量限制表中单个单元的最大长度为8 MB。
IN的参数个数1024数量限制IN的最大参数限制,例如in (1,2,3….,1024)。如果in(…)的参数过多,会影响编译性能。1024为建议值,不是限制值。
jobconf.json1 MB长度限制jobconf.json的大小为1 MB。当表包含的分区数量较多时,大小可能超过jobconf.json,超过1 MB。
视图不可写操作限制视图不支持写入,不支持INSERT操作。
列的数据类型不可修改操作限制不允许修改列的数据类型及列位置。
Java UDF函数不允许为ABSTRACT或者STATIC操作限制Java UDF函数不能为ABSTRACTSTATIC
最多查询分区个数10000个数量限制最多查询分区个数不能超过10000个。
SQL执行计划长度1 MB长度限制MaxCompute SQL生成的执行计划不能超过1 MB,否则会触发FAILED: ODPS-0010000:System internal error - The Size of Plan is too large报错。

 上述MaxCompute SQL限制项均无法修改。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值