MaxCompute 1.0数据类型版本是MaxCompute三种数据类型版本之一,该数据类型版本仅支持1.0数据类型。本文为您介绍1.0数据类型版本的设置方法、支持的数据类型以及与其它数据类型版本的差异。
定义
项目空间选择数据类型版本为1.0数据类型版本时,项目的数据类型属性定义如下。
setproject odps.sql.type.system.odps2=false; --关闭MaxCompute 2.0数据类型。
setproject odps.sql.decimal.odps2=false; --关闭Decimal 2.0数据类型。
setproject odps.sql.hive.compatible=false; --关闭Hive兼容模式。
适用场景
适用于早期的MaxCompute项目,且该项目依赖的产品组件不支持2.0数据类型版本。
数据类型
类型 | 常量示例 | 描述 |
---|---|---|
BIGINT | 100000000000L、-1L | 64位有符号整型。
取值范围:-263+1~263-1。 |
DOUBLE | 3.14159261E+7 | 64位二进制浮点型。 |
DECIMAL | 3.5BD、99999999999.9999999BD | 10进制精确数字类型。
整型部分取值范围:-1036+1~1036-1,小数部分精确到10-18。 |
STRING | "abc"、'bcd'、"alibaba"、'inc' | 字符串类型。
长度限制为8 MB。 |
DATETIME | DATETIME'2017-11-11 00:00:00' | 日期时间类型。
取值范围:0000年1月1日~9999年12月31日。 |
BOOLEAN | True、False | BOOLEAN类型。
取值范围:True或False。 |
数据类型说明如下:
- 上述数据类型均可以为NULL。
- 整型常量的语义默认为BIGINT类型。如果常量超过了BIGINT的值域(例如1,000,000,000,000,000,000,000,000),会被作为DOUBLE类型处理。例如
SELECT 1 + a;
中的整型常量1会被作为BIGINT类型处理。 - 如果参数涉及2.0数据类型的内置函数,无法在1.0数据类型版本正常使用。
- 分区表的分区列的数据类型只支持STRING类型。
- 支持连接STRING常量。例如,abc和xyz会解析为abcxyz。
- 向DECIMAL字段插入常量时,常量的写法需要与常量定义中的格式保持一致。例如示例代码中的
3.5BD
。INSERT INTO test_tb(a) VALUES (3.5BD);
- DATETIME查询显示的时间值不包含毫秒。Tunnel通过
-dfp
指定时间格式,可以指定显示到毫秒,例如tunnel upload -dfp 'yyyy-MM-dd HH:mm:ss.SSS'
。Tunnel详情请参见Tunnel命令参考。
与其它数据类型版本差异说明
- 1.0数据类型版本的LIMIT、ORDER BY、DISTRIBUTE BY、SORT BY和CLUSTER BY操作与2.0数据类型版本不同。
例如,LIMIT操作语句
SELECT * FROM t1 UNION ALL SELECT * FROM t2 LIMIT 10;
:- 1.0数据类型版本:
SELECT * FROM t1 UNION ALL SELECT * FROM ( SELECT * FROM t2 LIMIT 10) t2;
。 - 2.0数据类型版本:
SELECT * FROM (SELECT * FROM t1 UNION ALL SELECT * FROM t2 ) t LIMIT 10;
。
- 1.0数据类型版本:
- 1.0数据类型版本的IN表达式与2.0数据类型版本不同。
例如
a IN (1, 2, 3)
:- 1.0数据类型版本:IN括号里的所有值类型必须一致。
- 2.0数据类型版本:IN括号里的所有值支持通过隐式类型转换为一致类型。
复杂数据类型
类型 | 定义方法 | 构造方法 |
---|---|---|
ARRAY |
|
|
MAP |
|
|
STRUCT |
|
|