【MaxCompute】学习笔记基础说明

MaxCompute说明

MaxCompute 适用于数据量大(TB级别),实时性要求不高的场合,它的每个作业的准备,提交等阶段要花费数秒时间,因此要求每秒处理几千至数万笔事务的业务是不能用 MaxCompute 完成的,这种情况请用 Tablestore。

MaxCompute 采用的是类似于 SQL 的语法,可以看作是标准 SQL 的一个子集,但不能因此简单的把 MaxCompute 等价成一个数据库,它在很多方面并不具备数据库的特征,如事务、主键约束。

数据存储单元

在 MaxCompute 中,所有的数据都被存储在表中,表是由行和列组成的二维数据结构,每行代表一条记录,不同的列由列名和列数据类型标识,如下表所示:

SHOP_NAMEREVENUE
SHOP11000
SHOP11500

为了提高处理效率,可以对表进行分区(partition),这时数据可以看成由逻辑上独立的许多块组成,在使用数据时如果指定了需要访问的分区名称,则只会读取相应的分区,避免全表扫描,在数据量大的时候这个特性非常有用。大部分的数据可以采用日期,地区等属性进行分区,如下表所示:

SHOP_NAMEREVENUEREGION
SHOP11000HZ
SHOP11500HZ
SHOP11000SH
SHOP11500SH

数据类型

类型说明
BIGINT8 字节有符号整型
BOOLEAN布尔型,包括 TRUE/FALSE
DOUBLE8 字节双精度浮点数
STRING字符串
DATETIME日期类型
备注:
  1. BIGINT 的取值范围是-9223372036854775807 ~ 9223372036854775807。请不要使用-9223372036854775808,这是系统保留值。
  2. DOUBLE 的取值范围是 -1.0 * 10^308 ~ +1.0 * 10^308。
  3. DATETIME 类型表达的有效日期范围是 0001-01-01 00:00:00 到 9999-12-31 23:59:59

保留字

以下关键字是 MaxCompute 的保留字,在对表、列或是分区命名时请不要使用,否则会报错。保留字不区分大小写。

-   %   &   &&   (   )   *   .   /   ;   ?   |   ||   +   <
<=  <>  =>  >=  ALL AND AS  BETWEEN BY  CASE    CLUSTERED  
CREATE  DESC    DISTINCT    DROP    ELSE    END EXISTS
EXPORT  FALSE   FROM    FULL    GROUP   IF  IN  INTO
IS  JOIN    LEFT    LIKE    LIMIT   LOAD    NOT NULL    
ON  OR  ORDER   OUTER   OVER    PARTITION   PARTITIONED 
RANGE   READ    RENAME  RESOURCE    RIGHT   RLIKE   SELECT  
STRING  TABLE   THEN    TO  TRUE    UNION   VIEW    WHEN    
WHERE

运算符

关系操作符
操作符说明
A=B如果 A 或 B 为 NULL,返回 NULL;如果 A 等于 B,返回 TRUE,否则返回 FALSE
A<>B如果 A 或 B 为 NULL,返回 NULL;如果 A 不等于 B,返回 TRUE,否则返回 FALSE
A<B如果 A 或 B 为 NULL,返回 NULL;如果 A 小于 B,返回 TRUE,否则返回 FALSE
A<=B如果 A 或 B 为 NULL,返回 NULL;如果 A 小于等于 B,返回 TRUE,否则返回 FALSE
A>B如果 A 或 B 为 NULL,返回 NULL;如果 A 大于 B,返回 TRUE,否则返回 FALSE
A>=B如果 A 或 B 为 NULL,返回 NULL;如果 A 大于等于 B,返回 TRUE,否则返回 FALSE
A IS NULL如果 A 为 NULL,返回 TRUE,否则返回 FALSE
A IS NOT NULL如果 A 不为 NULL,返回 TRUE,否则返回 FALSE
A LIKE B如果 A 或 B 为 NULL,返回 NULL,A 为字符串,B 为要匹配的模式,如果匹配,返回 TRUE,否则返回 FALSE。’%‘匹配任意多个字符,’_‘匹配单个字符。要匹配%或_需要用转义符表示\\%, \\_
‘aaa’ LIKE ‘a__’ ->TRUE
’aaa’ LIKE ‘a%’ ->TRUE
’aaa’ LIKE ‘aab’ ->FALSE
’a%b’ LIKE ‘a\\%b’ ->TRUE
’axb’ LIKE ‘a\\%b’ ->FALSE
A RLIKE B如果 A 或 B 为 NULL,返回 NULL,A 是字符串,B 是字符串常量正则表达式,如果 B 为空串会报错退出。如果匹配成功,返回 TRUE,否则返回 FALSE
A IN BB 是一个集合,如果 A 为 NULL,返回 NULL,如 A 在 B 中则返回 TRUE,否则返回 FALSE
备注:
  1. 两个 double 相等当且仅当 15 位有效数字之前都相等,且第 15 位相差不能大于 3。

算术操作符

操作符说明
A + B如果 A 或 B 为 NULL,返回 NULL;否则返回 A + B 的结果,A 和 B 为数字类型。如果 A 和 B 的类型不同,则自动转为高一级的类型。
A – B如果 A 或 B 为 NULL,返回 NULL;否则返回 A – B 的结果。A 和 B 为数字类型。如果 A 和 B 的类型不同,则自动转为高一级的类型。
A * B如果 A 或 B 为 NULL,返回 NULL;否则返回 A * B 的结果。A 和 B 为数字类型。如果 A 和 B 类型不同,则自动转为高一级的类型。
A / B如果 A 或 B 为 NULL,返回 NULL;否则返回 A / B 的结果。A 和 B 为数字类型,结果为 DOUBLE 类型。
A % B如果 A 或 B 为 NULL,返回 NULL;否则返回 A 模 B 的结果。
+A仍然返回 A
-A如果 A 为 NULL,返回 NULL,否则返回-A
备注:

算术运算符(+, -, *, /, %)会做隐式类型转换,当 double、bigint 或 string 做运算时,会转换成 double 类型。

位运算操作符

操作符说明
A & B返回 A 与 B 进行按位与的结果。例如: 1&2 返回 0,1&3 返回 1,NULL 与任何值按位与都为 NULL。A 和 B 必须为 bigint 类型。
AB
备注:

位运算符不支持隐式转换,只允许 bigint 类型。

逻辑操作符

操作符说明
A AND BTRUE AND TRUE=TRUE
TRUE AND FALSE=FALSE
FALSE AND TRUE=FALSE
FALSE AND NULL=FALSE
NULL AND FALSE=FALSE
TRUE AND NULL=NULL
NULL AND TRUE=NULL
NULL AND NULL=NULL
A OR BTRUE OR TRUE=TRUE
TRUE OR FALSE=TRUE
FALSE OR TRUE=TRUE
FALSE OR NULL=NULL
NULL OR FALSE=NULL
TRUE OR NULL=TRUE
NULL OR TRUE=TRUE
NULL OR NULL=NULL
NOT A如果 A 是 NULL,返回 NULL;如果 A 是 TRUE,返回 FALSE;如果 A 是 FALSE,返回 TRUE
备注:

逻辑操作符只允许 boolean 类型参与运算,不支持隐式类型转换。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值