如何使用 MERGE INTO 替换 INTO 以在 Delta Lake 中插入更新?

How to REPLACE INTO using MERGE INTO for upsert in Delta Lake?

在增量 table 中执行更新插入的推荐方法如下。

MERGE INTO users
USING updates
ON users.userId = updates.userId
WHEN MATCHED THEN
      UPDATE SET address = updates.addresses
WHEN NOT MATCHED THEN
      INSERT (userId, address) VALUES (updates.userId, updates.address)

这里updates是一个table。我的问题是我们如何直接进行更新插入,即不使用源 table。我想直接给值。

SQLite 中,我们可以简单地执行以下操作。

REPLACE INTO table(column_list)
VALUES(value_list);

是否有针对 Delta tables 的简单方法?

源 table 可以是子查询,因此下面的内容应该可以满足您的需求。

MERGE INTO events
USING (VALUES(...)) // round brackets are required to denote a subquery
ON false            // an artificial merge condition
WHEN NOT MATCHED THEN INSERT *