본문으로 건너뛰기
최종 수정: 에

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