本文介紹MaxCompute 1.0資料類型版本的定義、使用情境、支援的資料類型以及與其它資料類型版本的差異。
背景介紹
MaxCompute 1.0資料類型版本是MaxCompute三種資料類型版本說明之一。
適用於早期的MaxCompute專案,且該專案依賴的產品組件不支援2.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相容模式。資料類型
類型 | 常量樣本 | 描述 |
BIGINT | 100000000000L、-1L |
|
DOUBLE | 3.14159261E+7 | 64位二進位浮點型。 |
DECIMAL | 3.5BD、99999999999.9999999BD | 10進位精確數字類型。預設為 詳情請參見DECIMAL資料類型。 |
STRING | "abc"、'bcd'、"alibaba"、'inc' |
|
DATETIME | DATETIME'2017-11-11 00:00:00' |
|
BOOLEAN | True、False |
|
資料類型說明如下:
上述資料類型均可以為NULL。
常量
整型常量的語義預設為BIGINT類型。如果常量超過了BIGINT的範圍(例如1,000,000,000,000,000,000,000,000),會被作為DOUBLE類型處理。例如
SELECT 1 + a;中的整型常量1會被作為BIGINT類型處理。向DECIMAL欄位插入常量時,常量的寫法需要與常量定義中的格式保持一致。例如範例程式碼中的
3.5BD。INSERT INTO test_tb(a) VALUES (3.5BD);支援串連STRING常量。例如,abc和xyz會解析為abcxyz。
如果參數涉及2.0資料類型的內建函數,無法在1.0資料類型版本正常使用。
分區表的分區列的資料類型只支援STRING類型。
與其它資料類型版本差異說明
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資料類型版本的IN運算式與2.0資料類型版本不同。
例如,
a IN (1, 2, 3):1.0資料類型版本:IN括弧裡的所有實值型別必須一致。
2.0資料類型版本:IN括弧裡的所有值支援通過隱式類型轉換為一致類型。
複雜資料類型
MaxCompute的複雜資料類型可以被嵌套使用,相關的內建函數說明請參見ARRAY、MAP或STRUCT。
類型 | 定義方法 | 構造方法 |
ARRAY |
|
|
MAP |
|
|
STRUCT |
|
|