将ARRAY数组a和b组合成一个MAP对象。
命令格式
map<K, V> map_from_arrays([string <mapDupKeyPolicy>,] array<K> <a>, array<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:必填。ARRAY数组。对应生成MAP的Key值。
array<K>
中的K
指代ARRAY数组元素的数据类型,数组中的元素可以为任意类型。b:必填。ARRAY数组。对应生成MAP的Value值。
array<V>
中的V
指代ARRAY数组元素的数据类型,数组中的元素可以为任意类型。
返回值说明
返回MAP类型。返回规则如下:
如果a或b为NULL,返回结果为NULL。
如果a中元素包含NULL值或两个数组长度不相等,会返回报错。
使用示例
--返回{1:2, 3:4}。
select map_from_arrays(array(1.0, 3.0), array('2', '4'));
--返回{1:2, 3:6}。
select map_from_arrays('last_win', array(1.0, 3.0, 3), array('2', '4', '6'));
相关函数
MAP_FROM_ARRAYS函数属于复杂类型函数,更多对复杂类型数据(例如ARRAY、MAP、STRUCT、JSON数据)的处理函数请参见复杂类型函数。