計算多個MAP對象的並集。
命令格式
map<K, V> map_concat([string <mapDupKeyPolicy>,] map<K, V> <a>, map<K, V> <b>[,...])
參數說明
mapDupKeyPolicy:可選。STRING類型。指定出現重複Key時的處理方式。取值範圍如下:
exception:如果出現重複的Key,返回報錯。
last_win:如果出現重複的Key,後邊的值將覆蓋前邊的值。
該參數也可以在Session層級通過
odps.sql.map.key.dedup.policy
參數進行設定,例如set odps.sql.map.key.dedup.policy=exception;
,不設定時該參數預設值為last_win。說明MaxCompute的行為實現優先以函數中mapDupKeyPolicy的取值為準,當函數未配置mapDupKeyPolicy時,以
odps.sql.map.key.dedup.policy
參數的取值為準。a、b:必填。MAP對象。多個MAP對象的參數資料類型必須一致。
map<K, V>
中的K
、V
指代MAP對象的Key、Value。
傳回值說明
返回MAP類型。返回規則如下:
某個MAP對象為NULL或某個MAP對象的Key為NULL時,返回
NULL
或報錯。多個MAP對象的資料類型不一致時,返回報錯。
使用樣本
--返回{1:a, 2:b, 3:c}。
select map_concat(map(1, 'a', 2, 'b'), map(3, 'c'));
--返回{1:a, 2:d, 3:c}。
select map_concat('last_win', map(1, 'a', 2, 'b'), map(3, 'c'), map(2, 'd'));
相關函數
MAP_CONCAT函數屬於複雜類型函數,更多對複雜類型資料(例如ARRAY、MAP、STRUCT、JSON資料)的處理函數請參見複雜類型函數。