すべてのプロダクト
Search
ドキュメントセンター

MaxCompute:TRANSFORM_KEYS

最終更新日:Jan 17, 2025

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>K1Vは、マップのキーと値を指定します。

  • 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などの複雑なデータ型のデータを処理するために使用される関数の詳細については、複合型関数.