文档

MAP_CONCAT

更新时间:

计算多个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参数的取值为准。

  • ab:必填。MAP对象。多个MAP对象的参数数据类型必须一致。map<K, V>中的KV指代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数据)的处理函数请参见复杂类型函数