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
句のみが実行されます。後続の句は無視されます。1 つのターゲットテーブル行が複数のソース行と一致すると、ユーザーエラーが発生します。
ソース行がどの WHEN
句にも一致せず、WHEN NOT MATCHED
句がない場合、そのソース行は無視されます。
UPDATE
演算を含む WHEN
句では、列値の式はターゲットまたはソースの任意のフィールドを参照できます。NOT
MATCHED
の場合、INSERT
の式はソースの任意のフィールドを参照できます。
例
次の例では、行が最初のテーブルに存在しない場合、2 番目のテーブルの行を最初のテーブルにマージしています。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 テーブルデータを更新する」を参照してください。