增量表合并多列

Ton*_*ony 9 databricks azure-databricks delta-lake

我有一个表,其主键为多个列,因此我需要对多个列执行合并逻辑


DeltaTable.forPath(spark, "path")
  .as("data")
  .merge(
    finalDf1.as("updates"),
    "data.column1 = updates.column1 AND data.column2 = updates.column2 AND data.column3 = updates.column3 AND data.column4 = updates.column4 AND data.column5 = updates.column5")
  .whenMatched
  .updateAll()
  .whenNotMatched
  .insertAll()
  .execute()

Run Code Online (Sandbox Code Playgroud)

当我检查数据计数时,它没有按预期更新。

有人可以帮我解决这个问题吗?

小智 0

请尝试使用以下示例中的方法: https: //docs.databricks.com/_static/notebooks/merge-in-cdc.html 创建一个包含您将注意到的附加列的更改表

  • 如果一行是新的(被插入)
  • 旧的(主键存在)并且没有任何改变
  • 旧(主键存在)但其他字段需要更新,然后在合并时使用附加条件,例如:
.whenMatched("s.new = true")
.insert()
.whenMatched("s.updated = true")
.updateExpr(Map("key" -> "s.key", "value" -> "s.newValue"))
Run Code Online (Sandbox Code Playgroud)