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

TRANSFORM_VALUES

SinceVersion dev

설명​

맵의 각 항목에 람다 표현식을 적용하여 원래 키와 변환된 값으로 새 맵을 생성합니다. 람다는 각 항목의 키와 값을 인수로 받습니다.

구문​

TRANSFORM_VALUES((<key>, <value>) -> <new_value>, <map>)

매개변수​

매개변수설명
<key>맵 항목의 키를 나타내는 람다 매개변수입니다.
<value>맵 항목의 값을 나타내는 람다 매개변수입니다.
<new_value>반환되는 맵의 값을 생성하는 표현식입니다.
<map>MAP<K, V> 표현식입니다.

반환 값​

MAP<K, V2>를 반환하며, V2는 람다가 반환하는 값의 타입입니다.

  • 입력 맵의 키는 변경 없이 유지됩니다.
  • <map>이 비어 있으면 빈 맵을 반환합니다.
  • <map>이 NULL이면 NULL을 반환합니다.
  • 람다가 반환한 NULL 값은 그대로 유지됩니다.

예제​

SELECT transform_values((k, v) -> v + k, map(1, 10, 2, 20)) AS result;
+--------------+
| result |
+--------------+
| {1:11, 2:22} |
+--------------+
SELECT transform_values(
(k, v) -> if(k = 1, CAST(NULL AS INT), v),
map(1, 10, 2, 20)) AS result;
+----------------+
| result |
+----------------+
| {1:null, 2:20} |
+----------------+
SELECT transform_values((k, v) -> v, CAST(NULL AS MAP<INT, INT>)) AS result;
+--------+
| result |
+--------+
| NULL |
+--------+