【问题标题】:How to REPLACE INTO using MERGE INTO for upsert in Delta Lake?如何在 Delta Lake 中使用 MERGE INTO 替换 INTO 进行 upsert?
【发布时间】:2021-06-11 15:27:14
【问题描述】:

在增量表中执行 upsert 的推荐方法如下。

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 是一张桌子。我的问题是我们如何直接进行 upsert,即不使用源表。我想自己直接给出值。

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

REPLACE INTO table(column_list)
VALUES(value_list);

有没有一种简单的方法可以对 Delta 表执行此操作?

【问题讨论】:

    标签: apache-spark apache-spark-sql upsert delta-lake


    【解决方案1】:

    源表可以是子查询,因此以下内容应为您提供所需的内容。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-16
      • 2013-01-23
      • 1970-01-01
      • 1970-01-01
      • 2013-04-12
      • 1970-01-01
      相关资源
      最近更新 更多