合併為 - Amazon Athena

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

合併為

有條件地更新、刪除資料列或將其插入至 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 子句中執行 DELETEUPDATEINSERT 運算。

針對每個來源資料列,會依序處理 WHEN 子句。只會執行第一個相符的 WHEN 子句。其餘子句會遭到忽略。當單一目標資料表資料列與多個來源資料列相符時,就會引起使用者錯誤。

如果來源資料列不與任何 WHEN 子句相符且沒有 WHEN NOT MATCHED 子句,則會忽略來源資料列。

在具有 UPDATE 運算的 WHEN 子句中,資料欄值表達式可以指代目標或來源的任何欄位。若是 NOT MATCHEDINSERT 表達式可以指代來源的任何欄位。

範例

下列範例會將第二個資料表中的資料列合併至第一個資料表 (如果第一個資料表中不存在資料列)。請注意,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 範例,請參閱 更新冰山表數據