Databricks Delta Lake 的 MERGE INTO 的 pyspark 等效项是什么?

Eri*_*rik 11 merge databricks delta-lake

databricks文档描述了如何对增量表进行合并。

SQL 中的语法

MERGE INTO [db_name.]target_table [AS target_alias]
USING [db_name.]source_table [<time_travel_version>] [AS source_alias]
ON <merge_condition>
[ WHEN MATCHED [ AND <condition> ] THEN <matched_action> ]
[ WHEN MATCHED [ AND <condition> ] THEN <matched_action> ]
[ WHEN NOT MATCHED [ AND <condition> ]  THEN <not_matched_action> ]
Run Code Online (Sandbox Code Playgroud)

可以使用。有 python 等效项可用吗?

Eri*_*rik 16

我在 Alexandros Biratsis 的帮助下设法找到了文档。可以在此处找到该文档。这种合并的一个例子是

deltaTable.alias("events").merge(
    source = updatesDF.alias("updates"),
    condition = "events.eventId = updates.eventId"
  ).whenMatchedUpdate(set =
    {
      "data": "updates.data",
      "count": "events.count + 1"
    }
  ).whenNotMatchedInsert(values =
    {
      "date": "updates.date",
      "eventId": "updates.eventId",
      "data": "updates.data",
      "count": "1"
    }
  ).execute()
Run Code Online (Sandbox Code Playgroud)

  • 但这只允许一种匹配条件。如果有多个的话会怎么样?或者我如何为每个“whenMatchedUpdate”添加附加条件?根据文档应该是可以的,但文档中没有代码示例 (2认同)
  • 如果要添加多个条件,可以这样操作:condition = "events.eventId =updates.eventId AND events.date =updates.date" (2认同)