MERGE INTO - Amazon Athena

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 테이블 데이터 업데이트 섹션을 참조하세요.