全部產品
Search
文件中心

MaxCompute:MAP

更新時間:Jun 19, 2024

使用給定的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資料)的處理函數請參見複雜類型函數