全部產品
Search
文件中心

MaxCompute:STR_TO_MAP

更新時間:Feb 28, 2024

當您需要將字串轉換為Map類型以便查詢和報表產生時,MaxCompute提供STR_TO_MAP函數,可以協助您將資料轉換為MAP格式,使用分隔字元1(delimiter1)將目標字串分割成Key-Value對,然後使用分隔字元2(delimiter2)分割每個Key-Value對的Key和Value。本文為您介紹在MaxCompute中將字串轉換為MAP類型函數的使用。

命令格式

str_to_map([string <mapDupKeyPolicy>,] <text> [, <delimiter1> [, <delimiter2>]])

參數說明

  • mapDupKeyPolicy:可選。STRING類型。指定出現重複Key時的處理方式。取值範圍如下:

    • exception:如果出現重複的Key,返回報錯。

    • last_win:如果出現重複的Key,後邊的值將覆蓋前邊的值。

    說明

    MaxCompute的行為實現優先以函數中mapDupKeyPolicy的取值為準,當函數未配置mapDupKeyPolicy時,以odps.sql.map.key.dedup.policy參數的取值為準。

  • text:必填。STRING類型,指被分割的字串。

  • delimiter1:可選。STRING類型,分隔字元,不指定時預設為英文逗號(,)。

  • delimiter2:可選。STRING類型,分隔字元,不指定時預設為等號(=)。

    說明

    當分隔字元是Regex或特殊字元時,要在前面加兩個反斜線(\\)來做轉義。特殊字元包括冒號(:)、英文句點(.)、問號(?)、加號(+)或星號(*)。

傳回值說明

傳回值類型為map<string, string>。傳回值是textdelimiter1delimiter2分割後的結果。

使用樣本

--返回{test1:1, test2:2}。
SELECT str_to_map('test1&1-test2&2','-','&');

--返回{test1:1, test2:2}。
SELECT str_to_map("test1.1,test2.2", ",", "\\.");

--返回{test1:1, test2:3}。
SELECT str_to_map("test1.1,test2.2,test2.3", ",", "\\.");

相關函數

STR_TO_MAP函數屬於其他函數,更多其他業務情境的函數請參見其他函數