我是靠谱客的博主 矮小黄蜂,最近开发中收集的这篇文章主要介绍Maxcompute SQL关键字分区表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限制项均无法修改。

最后

以上就是矮小黄蜂为你收集整理的Maxcompute SQL关键字分区表MaxCompute SQL的限制项的全部内容,希望文章能够帮你解决Maxcompute SQL关键字分区表MaxCompute SQL的限制项所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部