2 つの配列 (キー用の配列と値用の配列) から MAP を構築します。
構文
map<K, V> map_from_arrays([string <mapDupKeyPolicy>,] array<K> <a>, array<V> <b>))パラメーター
| パラメーター | 必須 | 型 | 説明 |
|---|---|---|---|
mapDupKeyPolicy | いいえ | STRING | 重複キーの処理方法。有効な値は、exception (エラーを返す) と last_win (最後の出現が前のものを上書きする) です。このパラメーターも odps.sql.map.key.dedup.policy も設定されていない場合、デフォルトは last_win です。 |
a | はい | array<K> | キー配列。K は任意のデータ型にすることができます。 |
b | はい | array<V> | 値配列。V は任意のデータ型にすることができます。 |
戻り値
MAP 型の値を返します。
aまたはbが NULL の場合、NULL を返します。aとbの長さが異なる場合、エラーを返します。aに NULL 要素が含まれている場合、エラーを返します。
注意事項
重複キーポリシー
MAP_FROM_ARRAYS が重複キーを処理する方法は、次の 2 つのメカニズムによって制御され、この順序で適用されます:
関数呼び出し内の
mapDupKeyPolicyパラメーター。mapDupKeyPolicyが指定されていない場合に使用されるセッションレベルの設定odps.sql.map.key.dedup.policy。
どちらも設定されていない場合、デフォルトのポリシーは last_win です。
セッションレベルのポリシーを設定するには:
set odps.sql.map.key.dedup.policy=exception;例
基本的な使用方法
-- {1:2, 3:4} を返します
SELECT map_from_arrays(array(1.0, 3.0), array('2', '4'));`last_win` を使用した重複キーの処理
キー配列に重複が含まれている場合、last_win は最後の出現の値のみを保持します。
-- {1:2, 3:6} を返します
-- キー 3 が 2 回出現します。last_win は '6' を保持し、'4' を破棄します
SELECT map_from_arrays('last_win', array(1.0, 3.0, 3), array('2', '4', '6'));関連関数
MAP_FROM_ARRAYS は複合型関数です。ARRAY、MAP、STRUCT、JSON データを処理する関数の詳細については、「複合型関数」をご参照ください。