MERGE INTO
Conditionally updates, deletes, or inserts rows into an Apache Iceberg table. A single statement can combine update, delete, and insert actions.
Note
MERGE INTO is transactional and is supported only for Apache Iceberg
tables in Athena engine version 3.
Synopsis
To conditionally update, delete, or insert rows from an Iceberg table, use the following syntax.
MERGE INTO target_table [ [ AS ] target_alias ]
USING { source_table | query } [ [ AS ] source_alias ]
ON search_condition
when_clause [...]
The when_clause is one of the following:
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 supports an arbitrary number of WHEN clauses with
different MATCHED conditions. The condition clauses execute the
DELETE, UPDATE or INSERT operation in the
first WHEN clause selected by the MATCHED state and the match
condition.
For each source row, the WHEN clauses are processed in order. Only the
first matching WHEN clause is executed. Subsequent clauses are ignored. A
user error is raised when a single target table row matches more than one source
row.
If a source row is not matched by any WHEN clause and there is no
WHEN NOT MATCHED clause, the source row is ignored.
In WHEN clauses that have UPDATE operations, the column
value expressions can refer to any field of the target or the source. In the NOT
MATCHED case, the INSERT expressions can refer to any field of
the source.
Example
The following example merges rows from the second table into the first table if
the rows don't exist in the first table. Note that the columns listed in the
VALUES clause must be prefixed by the source table alias. The
target columns listed in the INSERT clause must not be so prefixed.
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)
For more MERGE INTO examples, see Update Iceberg table
data.