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 句の DELETEUPDATE または 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 テーブルデータの更新」を参照してください。