MAP_DELETE

MAP_DELETE

기존MAP에서 하나 이상의 키를 제거한 새 MAP을 반환하는 함수예요. 구조화된 맵 데이터를 다룰 때 씁니다.

출처: Snowflake SQL Reference

본문

MAP_DELETE( <map>, <key1> [, <key2>, ... ] )

<map>

키를 제거할 대상 MAP이에요.

<keyN>

반환되는 MAP에서 생략할 키예요.

입력(소스) MAP의 내용에서 지정한 키를 하나 이상 제거한 MAP을 반환해요.

사용 메모

  • 키 표현식의 타입은 MAP의 키 타입과 일치해야 해요. 타입이 VARCHAR라면 길이가 달라도 괜찮아요.
  • MAP 안에 없는 키 값은 무시돼요.

예시 — 세 개의 키-값 쌍을 가진 MAP에서 두 쌍을 제거해 볼게요.

SELECT MAP_DELETE({'a':1,'b':2,'c':3}::MAP(VARCHAR,NUMBER),'a','b');
+--------------------------------------------------------------+
| MAP_DELETE({'A':1,'B':2,'C':3}::MAP(VARCHAR,NUMBER),'A','B') |
|--------------------------------------------------------------|
| {                                                            |
|   "c": 3                                                     |
| }                                                            |
+--------------------------------------------------------------+

테이블의 컬럼에 담긴 키를 제거하는 데도 쓸 수 있어요. 예를 들어 attrs 컬럼의 MAP에서 del_key1, del_key2 컬럼에 있는 키를 제거하면 다음과 같아요.

SELECT id, MAP_DELETE(attrs, del_key1, del_key2) AS attrs_after_delete
  FROM demo_maps;
+----+---------------------+
| ID | ATTRS_AFTER_DELETE  |
|----+---------------------|
|  1 | {                   |
|    |   "color": "red"    |
|    | }                   |
|  2 | {                   |
|    |   "brand": "ZenCo", |
|    |   "color": "blue"   |
|    | }                   |
+----+---------------------+

더 알아보기 (Learn more)