MERGE INTO
Apache Iceberg 테이블에 행을 조건부로 업데이트, 삭제 또는 삽입합니다. 단일 명령문으로 업데이트, 삭제 및 삽입 작업을 결합할 수 있습니다.
참고
MERGE INTO
은 트랜잭션이며 Athena 엔진 버전 3의 Apache Iceberg 테이블에 대해서만 지원됩니다.
시놉시스
Iceberg 테이블에서 행을 조건부로 업데이트, 삭제 또는 삽입하려면 다음 구문을 사용합니다.
MERGE INTO target_table [ [ AS ] target_alias ]
USING { source_table | query } [ [ AS ] source_alias ]
ON search_condition
when_clause
[...]
when_clause
는 다음 중 하나입니다.
WHEN MATCHED [ AND condition ] THEN DELETE
WHEN MATCHED [ AND condition ] THEN UPDATE SET ( column = expression [, ...] )
WHEN NOT MATCHED [ AND condition ] THEN INSERT (
column_name
[,column_name
...]) VALUES (expression, ...)
MERGE
는 서로 다른 MATCHED
조건을 가진 임의 개수의 WHEN
절을 지원합니다. 조건 절은 MATCHED
상태와 일치 조건에 따라 선택된 첫 번째 WHEN
절에서 DELETE
, UPDATE
또는 INSERT
작업을 실행합니다.
각 소스 행에 대해 WHEN
절이 순서대로 처리됩니다. 일치하는 첫 번째 WHEN
절만 실행됩니다. 후속 절은 무시됩니다. 하나의 대상 테이블 행이 둘 이상의 소스 행과 일치할 경우 사용자 오류가 발생합니다.
소스 행이 WHEN
절과 일치하지 않고 WHEN NOT MATCHED
절이 없는 경우 해당 소스 행은 무시됩니다.
UPDATE
작업이 있는 WHEN
절에서 열 값 표현식은 대상 또는 소스의 모든 필드를 참조할 수 있습니다. NOT
MATCHED
의 경우 INSERT
표현식은 소스의 모든 필드를 참조할 수 있습니다.
예
다음 예제에서는 첫 번째 테이블에 행이 없는 경우 두 번째 테이블의 행을 첫 번째 테이블에 병합합니다. VALUES
절에 나열된 열에 소스 테이블 별칭이 접두사로 사용되어야 합니다. INSERT
절에 나열된 대상 열에는 이 접두사를 사용해서는 안 됩니다.
MERGE INTO iceberg_table_sample as ice1 USING iceberg2_table_sample as ice2 ON ice1.col1 = ice2.col1 WHEN NOT MATCHED THEN INSERT (col1) VALUES (ice2.col1)
더 많은 MERGE INTO
예제는 Iceberg 테이블 데이터 업데이트 섹션을 참조하세요.