全部產品
Search
文件中心

MaxCompute:MAP_FROM_ENTRIES

更新時間:Jun 19, 2024

將多個結構數組組合成一個MAP對象。

命令格式

map<K, V> map_from_entries([string <mapDupKeyPolicy>,] array <struct<K, V> , struct<K, V>[,...]>)

參數說明

  • 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參數的取值為準。

  • 輸入為STRUCT類型的資料。其中:K對應產生MAP的Key值,V對應產生MAP的Value值。struct<K, V>中的KV指代STRUCT的Key、Value。

傳回值說明

返回MAP類型。返回規則如下:

  • 如果結構體數組為NULL,返回結果為NULL。

  • 如果結構體的Field數量不是2或K包含NULL值,會返回報錯。

使用樣本

--返回{1:a, 2:b}。
select map_from_entries(array(struct(1, 'a'), struct(2, 'b')));
--返回{1:a, 2:c}。
select map_from_entries(array(struct(1, 'a'), struct(2, 'b'), struct(2, 'c')));

相關函數

MAP_FROM_ENTRIES函數屬於複雜類型函數,更多對複雜類型資料(例如ARRAY、MAP、STRUCT、JSON資料)的處理函數請參見複雜類型函數