クエリおよびレポート生成用に文字列をマップに変換する場合は、MaxComputeのSTR_TO_MAP
関数を使用できます。 この関数は、delimiter1を使用して文字列をキーと値のペアに分割し、delimiter2を使用してキーと値のペアの値からキーを分離します。 このトピックでは、STR_TO_MAP関数を使用してMaxComputeで文字列をマップに変換する方法について説明します。
構文
str_to_map([string <mapDupKeyPolicy>,] <text> [, <delimiter1> [, <delimiter2>]])
パラメーター
mapDupKeyPolicy: オプション。 STRING型の値。 このパラメーターは、重複キーの処理に使用されるメソッドを指定します。 有効な値:
exception: エラーが返されます。
last_win: 後者のキーは前者のキーを上書きします。
説明MaxComputeの動作実装は、mapDupKeyPolicyに基づいて決定されます。 mapDupKeyPolicyを指定しない場合、
odps.sql.map.key.de dup.policy
の値が使用されます。text: 必須です。 このパラメーターには、分割する文字列を指定します。
delimiter1: オプション。 このパラメータは、STRING型の区切り文字を指定します。 このパラメーターに値を指定しない場合は、コンマ (
,
) が使用されます。delimiter2: オプション。 このパラメータは、STRING型の区切り文字を指定します。 このパラメーターに値を指定しない場合は、等号 (
=
) が使用されます。説明区切り文字が正規表現または特殊文字の場合、エスケープのために区切り文字の前に2つのバックスラッシュ (\) を追加する必要があります。 次の特殊文字を区切り文字として使用できます。 ? + * :
戻り値
MAP<STRING, STRING>
型の値が返されます。 戻り値は、textで指定された文字列がdelimiter1とdelimiter2を使用して分割されることを示します。
例
-- The return value is {test1:1, test2:2}.
SELECT str_to_map('test1&1-test2&2','-','&');
-- The return value is {test1:1, test2:2}.
SELECT str_to_map("test1.1,test2.2", ",", "\\.");
-- The return value is {test1:1, test2:3}.
SELECT str_to_map("test1.1,test2.2,test2.3", ",", "\\.");
関連関数
詳細については、「」をご参照ください。その他の関数.