최종 수정: 에
MAP_FROM_ENTRIES
설명
MAP<K, V>를 생성하는 함수로, 입력 배열의 각 요소는 두 개의 필드로 구성된 STRUCT입니다. 첫 번째 필드는 키로, 두 번째 필드는 값으로 사용됩니다.
노트
이 함수는 Apache Doris 4.2부터 지원됩니다.
구문
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