funcを使用してMap inputのキーを変換します。 マップの値は変更されません。
構文
map<K2, V> transform_keys([string <mapDupKeyPolicy>,] map<K1, V> <input>, function<K1, V, K2> <func>)パラメータ
mapDupKeyPolicy: オプション。 STRING型の値。 このパラメーターは、重複キーの処理に使用されるメソッドを指定します。 有効な値:
exception: エラーが返されます。
last_win: 後者のキーは前者のキーを上書きします。
セッションレベルで
odps.sql.map.key.de dup.policyパラメーターを指定して、重複キーの処理に使用されるメソッドを構成することもできます。 たとえば、odps.sql.map.key.de dup.policyパラメーターを例外に設定できます。 このパラメーターを指定しない場合、デフォルト値last_winが使用されます。説明MaxComputeの動作実装は、mapDupKeyPolicyに基づいて決定されます。 mapDupKeyPolicyを指定しない場合、
odps.sql.map.key.de dup.policyの値が使用されます。input: 必須です。 このパラメータは、マップを指定します。
map<K1, V>のK1とVは、マップのキーと値を指定します。func: 必須です。 このパラメーターには、キーの変換に使用する組み込み関数、ユーザー定義関数、または式を指定します。 関数または式は、inputのキーと値に対応する2つの入力パラメーターで構成されます。
K2は、返されるマップのキーのデータ型を指定します。
戻り値
MAPタイプのデータが返されます。 新しいキーの1つがnullの場合、エラーが返されます。
例
-- The return value is {-10:-20, 70:50, 71:101}.
select transform_keys(map(10, -20, 20, 50, -30, 101), (k, v) -> k + v);
-- No error is returned. The returned result depends on the order of the elements in the input map.
select transform_keys("last_win", map(10, -20, 20, 50, -30, 100), (k, v) -> k + v);
-- An error is returned because duplicate keys exist.
select transform_keys("exception", map(10, -20, 20, 50, -30, 100), (k, v) -> k + v);この例では、ハイフンとクロージングアングルブラケット (->) の組み合わせが使用されます。 Lambda関数でハイフンとクロージングアングルブラケット (->) の組み合わせを使用する方法の詳細については、「Lambda関数」をご参照ください。
関連関数
TRANSFORM_KEYSは複合型関数です。 ARRAY、MAP、STRUCT、JSONなどの複雑なデータ型のデータを処理するために使用される関数の詳細については、複合型関数.