[Maxcompute]數據類型

Maxcompute基本數據類型

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

類型 是否新增 常量定義 描述
TINYINT 1Y,-127Y 8 位有符號整形,範圍 -128 到 127
SMALLINT 32767S, -100S 16 位有符號整形, 範圍 -32768 到 32767
INT 1000,-15645787(註釋1) 32位有符號整形,範圍-231到231 - 1
BIGINT 100000000000L, -1L 64位有符號整形, 範圍-263 + 1到263 - 1
FLOAT 32位二進制浮點型
DOUBLE 3.1415926 1E+7 64位二進制浮點型
DECIMAL 3.5BD, 99999999999.9999999BD 10 進制精確數字類型,整形部分範圍-1036+1到1036-1, 小數部分精確到 10-18
VARCHAR 無 ( 註釋2 ) 變長字符類型,n爲長度,取值範圍 1 到 65535
STRING “abc”,’bcd’,”alibaba” ‘inc’ ( 註釋3 ) 字符串類型,目前長度限制爲 8M
BINARY 二進制數據類型,目前長度限制爲 8M
DATETIME DATETIME ‘2017-11-11 00:00:00’ 日期時間類型,範圍從0000年1月1日到9999年12月31日,精確到毫秒
TIMESTAMP TIMESTAMP ‘2017-11-11 00:00:00.123456789’ 與時區無關的時間戳類型,範圍從0000年1月1日到9999年12月31日 23.59:59.999999999, 精確到納秒
BOOLEAN TRUE,FALSE boolean 類型, 取值 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;

類型 定義方法 構造方法
ARRAY array< int >; array< struct< a:int, b:string >> array(1, 2, 3); array(array(1, 2); array(3, 4))
MAP map< string, string >; map< smallint, array< string>> map(“k1”, “v1”, “k2”, “v2”); map(1S, array(‘a’, ‘b’), 2S, array(‘x’, ‘y))
STRUCT struct< 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
作者詳見源鏈接

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章