如何使用Spark SQL在Databricks中使用内部联接更新Databricks Delta表

时间:2019-02-14 15:12:31

标签: apache-spark-sql azure-databricks

我必须使用与其他表的内部联接来更新表列。我尝试使用下面的sql。但是我在Databricks中得到错误为(SQL语句中的错误:ParseException: 输入不匹配''期望'WHEN')。我尝试了更新表的方法。有人可以在此问题上帮助我如何解决此问题吗?

%sql
merge into test a using test_1 b
on (a.id_num=b.id_num)
when matched then
update set a.name=b.name;

4 个答案:

答案 0 :(得分:0)

您的表格必须为 DELTA 格式。是吗?

我认为您的命令还可以。

https://docs.databricks.com/spark/latest/spark-sql/language-manual/merge-into.html

答案 1 :(得分:0)

如果我的问题正确无误,您想使用数据块合并到构造中以通过将表1(例如目标)连接到其他表2(源)来更新列

合并到目的地 使用更新 ON destination.primary_key = source.foregin_key 匹配时   UPDATE SET column1 = updates.column1

如果源表和目标表中没有行,则可以扩展同一查询以插入数据。

  • 注意-我的回答是基于我在一开始所做的假设。如果您可以继续讨论,这将有助于更好地了解您的问题

答案 2 :(得分:0)

这是因为有Databricks运行时版本,您需要使用Databricks Runtime version 5.1或更高版本来查询Delta表。但是对于合并操作,您首先需要具有Delta表。

答案 3 :(得分:0)

您使用的

查询正确。失败的原因是您没有使用增量表,在这种情况下,test和test_1应该是增量表。