MaxCompute 1.0數(shù)據(jù)類型版本是MaxCompute三種數(shù)據(jù)類型版本之一,該數(shù)據(jù)類型版本僅支持1.0數(shù)據(jù)類型。本文為您介紹1.0數(shù)據(jù)類型版本的設(shè)置方法、支持的數(shù)據(jù)類型以及與其它數(shù)據(jù)類型版本的差異。

定義

項目空間選擇數(shù)據(jù)類型版本為1.0數(shù)據(jù)類型版本時,項目的數(shù)據(jù)類型屬性定義如下。
setproject odps.sql.type.system.odps2=false; --關(guān)閉MaxCompute 2.0數(shù)據(jù)類型。
setproject odps.sql.decimal.odps2=false; --關(guān)閉Decimal 2.0數(shù)據(jù)類型。
setproject odps.sql.hive.compatible=false; --關(guān)閉Hive兼容模式。

適用場景

適用于早期的MaxCompute項目,且該項目依賴的產(chǎn)品組件不支持2.0數(shù)據(jù)類型版本。

數(shù)據(jù)類型

類型 常量示例 描述
BIGINT 100000000000L、-1L 64位有符號整型。

取值范圍:-263+1~263-1。

DOUBLE 3.14159261E+7 64位二進(jìn)制浮點(diǎn)型。
DECIMAL 3.5BD、99999999999.9999999BD 10進(jìn)制精確數(shù)字類型。

整型部分取值范圍:-1036+1~1036-1,小數(shù)部分精確到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。

數(shù)據(jù)類型說明如下:
  • 上述數(shù)據(jù)類型均可以為NULL。
  • 整型常量的語義默認(rèn)為BIGINT類型。如果常量超過了BIGINT的值域(例如1,000,000,000,000,000,000,000,000),會被作為DOUBLE類型處理。例如SELECT 1 + a;中的整型常量1會被作為BIGINT類型處理。
  • 如果參數(shù)涉及2.0數(shù)據(jù)類型的內(nèi)置函數(shù),無法在1.0數(shù)據(jù)類型版本正常使用。
  • 分區(qū)表的分區(qū)列的數(shù)據(jù)類型只支持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命令參考

與其它數(shù)據(jù)類型版本差異說明

  • 1.0數(shù)據(jù)類型版本的LIMIT、ORDER BY、DISTRIBUTE BY、SORT BY和CLUSTER BY操作與2.0數(shù)據(jù)類型版本不同。
    例如,LIMIT操作語句SELECT * FROM t1 UNION ALL SELECT * FROM t2 LIMIT 10;
    • 1.0數(shù)據(jù)類型版本:SELECT * FROM t1 UNION ALL SELECT * FROM ( SELECT * FROM t2 LIMIT 10) t2;
    • 2.0數(shù)據(jù)類型版本:SELECT * FROM (SELECT * FROM t1 UNION ALL SELECT * FROM t2 ) t LIMIT 10;
  • 1.0數(shù)據(jù)類型版本的IN表達(dá)式與2.0數(shù)據(jù)類型版本不同。
    例如a IN (1, 2, 3)
    • 1.0數(shù)據(jù)類型版本:IN括號里的所有值類型必須一致。
    • 2.0數(shù)據(jù)類型版本:IN括號里的所有值支持通過隱式類型轉(zhuǎn)換為一致類型。

復(fù)雜數(shù)據(jù)類型

類型 定義方法 構(gòu)造方法
ARRAY
  • ARRAY<BIGINT>
  • ARRAY<STRUCT<a:BIGINT, b:STRING>>
  • ARRAY(1, 2, 3)
  • ARRAY(NAMED_STRUCT('a', 1, 'b', '2'), NAMED_STRUCT('a', 3, 'b', '4'))
MAP
  • MAP<STRING, STRING>
  • MAP<BIGINT, ARRAY<STRING>>
  • MAP("k1", "v1", "k2", "v2")
  • MAP(1L, ARRAY('a', 'b'), 2L, ARRAY('x', 'y'))
STRUCT
  • STRUCT<'x', BIGINT, 'y', BIGINT>
  • STRUCT<'field1', BIGINT, 'field2', ARRAY<BIGINT>, 'field3', MAP<BIGINT>>
  • NAMED_STRUCT('x', 1, 'y', 2)
  • NAMED_STRUCT('field1', 100L, 'field2', ARRAY(1, 2), 'field3', MAP(1, 100, 2, 200))
說明 MaxCompute的復(fù)雜數(shù)據(jù)類型可以被嵌套使用,相關(guān)的內(nèi)建函數(shù)說明請參見ARRAYMAPSTRUCT