使用給定的Key-Value對產生MAP。
命令格式
map(K, V) map(K <key1>, V <value1>, K <key2>, V <value2>[, ...])
參數說明
key:必填。所有key類型一致(包括隱式轉換後類型一致),必須是基本類型。
value:必填。所有value類型一致(包括隱式轉換後類型一致),支援除Decimal之外的其它資料類型。
傳回值說明
返回MAP類型。
說明
您可以在Session層級通過odps.sql.map.key.dedup.policy
參數設定出現重複Key時的處理方式。取值範圍如下:
exception:如果出現重複的Key,返回報錯。
last_win:如果出現重複的Key,後邊的值將覆蓋前邊的值。
不設定時,該參數預設值為last_win。
使用樣本
樣本1:無重複Key。例如表
t_table
的欄位為c1 bigint, c2 string, c3 string, c4 bigint, c5 bigint
,包含資料如下。+------------+----+----+------------+------------+ | c1 | c2 | c3 | c4 | c5 | +------------+----+----+------------+------------+ | 1000 | k11 | k21 | 86 | 15 | | 1001 | k12 | k22 | 97 | 2 | | 1002 | k13 | k23 | 99 | 1 | +------------+----+----+------------+------------+
命令樣本如下。
--將c2、c4,c3、c5組成MAP。 select map(c2,c4,c3,c5) from t_table; --返回結果如下。 +------+ | _c0 | +------+ | {k11:86, k21:15} | | {k12:97, k22:2} | | {k13:99, k23:1} | +------+
樣本2。有重複Key。例如表
t_table
的欄位為c1 bigint, c2 string, c3 string, c4 bigint, c5 bigint
,包含資料如下。1000,'k11','k11',86,15 1001,'k12','k22',97,2 1002,'k13','k23',99,1 1003,'k13','k24',100,1 1004,'k12','k25',95,1
命令樣本如下。
--將c2、c4,c3、c5組成MAP。 select map(c2,c4,c3,c5) from t_table; --返回結果如下。 +------+ | _c0 | +------+ | {'k11':15} | | {'k12':97, 'k22':2} | | {'k13':99, 'k23':1} | | {'k13':100, 'k24':1} | | {'k12':95, 'k25':1} | +------+
相關函數
MAP函數屬於複雜類型函數,更多對複雜類型資料(例如ARRAY、MAP、STRUCT、JSON資料)的處理函數請參見複雜類型函數。