MAP_FROM_ARRAYS

MAP_FROM_ARRAYS函数用于将ARRAY数组ab组合成一个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数组。对应生成MAPKey值。array<K>中的K指代ARRAY数组元素的数据类型,数组中的元素可以为任意类型。

  • b:必填。ARRAY数组。对应生成MAPValue值。array<V>中的V指代ARRAY数组元素的数据类型,数组中的元素可以为任意类型。

返回值说明

返回MAP类型。返回规则如下:

  • 如果abNULL,返回结果为NULL。

  • 如果a中元素包含NULL值或两个数组长度不相等,会返回报错。

使用示例

--返回{"1.0": "2", "3.0": "4"}。
SELECT MAP_FROM_ARRAYS(ARRAY(1.0, 3.0), ARRAY('2', '4'));

--返回{"1.0": "2", "3.0": "6"}。
SELECT MAP_FROM_ARRAYS('last_win', ARRAY(1.0, 3.0, 3), ARRAY('2', '4', '6'));

相关函数

MAP_FROM_ARRAYS函数属于复杂类型函数,更多对复杂类型数据(例如ARRAY、MAP、STRUCT、JSON数据)的处理函数请参见复杂类型函数