に最終更新
MAP_FROM_ENTRIES
説明
MAP<K, V> を、二つのフィールドを持つ STRUCT を要素とする配列から作成します。最初のフィールドをキー、次のフィールドを値として使用します。
構文
MAP_FROM_ENTRIES(<entries>)
パラメータ
| パラメータ | 説明 |
|---|---|
<entries> | ARRAY<STRUCT<K, V>>。各 STRUCT には二つのフィールドが必要です。配列は NULL にでき、STRUCT 内の二つのフィールドも NULL にできますが、配列の STRUCT 要素自体は NULL にできません。K には MAP のキーでサポートされる型を指定します。 |
戻り値
MAP<K, V> を返します。
<entries>がNULLの場合はNULLを返します。NULLでない STRUCT 内のNULLフィールドは、NULLキーまたは値として保持されます。- 配列の STRUCT 要素自体が
NULLの場合は、実行時エラーになります。 - 入力が STRUCT の配列でない場合、または STRUCT のフィールド数が二つでない場合は、解析エラーになります。
Kが MAP のキーでサポートされない型の場合は、解析エラーになります。- 同じキーが複数回現れる場合は、最後に現れた値が保持されます。
例
SELECT map_from_entries(array(struct(1, 10), struct(2, 20))) AS result;
+--------------+
| result |
+--------------+
| {1:10, 2:20} |
+--------------+
SELECT map_from_entries(array(struct(1, 10), struct(1, 20))) AS result;
+--------+
| result |
+--------+
| {1:20} |
+--------+
SELECT map_from_entries(CAST(NULL AS ARRAY<STRUCT<k:INT,v:INT>>));
+------------------------------------------------------------+
| map_from_entries(CAST(NULL AS ARRAY<STRUCT<k:INT,v:INT>>)) |
+------------------------------------------------------------+
| NULL |
+------------------------------------------------------------+
SELECT map_from_entries(array(
struct(CAST(NULL AS INT), 10),
struct(2, CAST(NULL AS INT)))) AS result;
+-------------------+
| result |
+-------------------+
| {null:10, 2:null} |
+-------------------+
次の例は、配列に NULL の STRUCT 要素が含まれるため失敗します。
SELECT map_from_entries(array(CAST(NULL AS STRUCT<k:INT,v:INT>)));
ERROR 1105 (HY000): Map entry of function map_from_entries cannot be null
次の例は、STRUCT に三つのフィールドがあるため、解析時に失敗します。
SELECT map_from_entries(array(struct(1, 2, 3)));
ERROR 1105 (HY000): map_from_entries requires an array of structs with exactly two fields