本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
合併為
有條件地更新、刪除資料列或將其插入至 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
範例,請參閱 更新冰山表數據。