[Maxcompute]数据类型

Maxcompute基本数据类型

MaxCompute2.0 支持的基本数据类型如下表,新增类型有:TINYINT、SMALLINT、 INT、 FLOAT、VARCHAR、TIMESTAMP 和 BINARY,MaxCompute 表中的列必须是下列描述的任意一种类型,详情如下:
注意:
若想使用新数据类型,需在 SQL 语句前加语句:set odps.sql.type.system.odps2=true;

类型是否新增常量定义描述
TINYINT1Y,-127Y8 位有符号整形,范围 -128 到 127
SMALLINT32767S, -100S16 位有符号整形, 范围 -32768 到 32767
INT1000,-15645787(注释1)32位有符号整形,范围-231到231 - 1
BIGINT100000000000L, -1L64位有符号整形, 范围-263 + 1到263 - 1
FLOAT32位二进制浮点型
DOUBLE3.1415926 1E+764位二进制浮点型
DECIMAL3.5BD, 99999999999.9999999BD10 进制精确数字类型,整形部分范围-1036+1到1036-1, 小数部分精确到 10-18
VARCHAR无 ( 注释2 )变长字符类型,n为长度,取值范围 1 到 65535
STRING“abc”,’bcd’,”alibaba” ‘inc’ ( 注释3 )字符串类型,目前长度限制为 8M
BINARY二进制数据类型,目前长度限制为 8M
DATETIMEDATETIME ‘2017-11-11 00:00:00’日期时间类型,范围从0000年1月1日到9999年12月31日,精确到毫秒
TIMESTAMPTIMESTAMP ‘2017-11-11 00:00:00.123456789’与时区无关的时间戳类型,范围从0000年1月1日到9999年12月31日 23.59:59.999999999, 精确到纳秒
BOOLEANTRUE,FALSEboolean 类型, 取值 TRUE 或 FALSE

上述的各种数据类型均可为 NULL。

注释:

注释1:对于 INT 常量,如果超过 INT 取值范围,会转为 BIGINT;如果超过 BIGINT 取值范围,会转为 DOUBLE。
在旧版 MaxCompute 中,因为历史原因,SQL 脚本中的所有 INT 类型都被转换为 BIGINT,例如:
create table a_bigint_table(a int); – 这里的int实际当作bigint处理
select cast(id as int) from mytable; – 这里的int实际当作bigint处理

为与MaxCompute 原有模式兼容,MaxCompute2.0 在未设定 odps.sql.type.system.odps2 为 true的情况下,仍保留此转换,但会报告一个警告,提示 INT 被当作 BIGINT 处理了,如果您的脚本有此种情况,建议全部改写为BIGINT,避免混淆。

注释2:VARCHAR 类型常量可通过 STRING 常量的隐式转换表示。

注释3:STRING 常量支持连接,例如 ‘abc’ ‘xyz’ 会解析为 ‘abcxyz’,不同部分可以写在不同行上。

复杂数据类型

MaxCompute2.0 支持的复杂类型见下表。
注意:
若想使用新数据类型,需在 SQL 语句前加语句:set odps.sql.type.system.odps2=true;

类型定义方法构造方法
ARRAYarray< int >; array< struct< a:int, b:string >>array(1, 2, 3); array(array(1, 2); array(3, 4))
MAPmap< string, string >; map< smallint, array< string>>map(“k1”, “v1”, “k2”, “v2”); map(1S, array(‘a’, ‘b’), 2S, array(‘x’, ‘y))
STRUCTstruct< x:int, y:int>; struct< field1:bigint, field2:array< int>, field3:map< int, int>>named_struct(‘x’, 1, ‘y’, 2); named_struct(‘field1’, 100L, ‘field2’, array(1, 2), ‘field3’, map(1, 100, 2, 200)

转自https://bbs.aliyun.com/read/542089.html
作者详见源链接

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值