yo*_*nus 4 sql apache-spark-sql pyspark azure-databricks delta-lake
我想从 databricks 中的增量文件中删除数据。我使用这些命令
例如:
PR=spark.read.format('delta').options(header=True).load('/mnt/landing/Base_Tables/EventHistory/')
PR.write.format("delta").mode('overwrite').saveAsTable('PR')
spark.sql('delete from PR where PR_Number=4600')
Run Code Online (Sandbox Code Playgroud)
这是从表中删除数据,但不是从实际的增量文件中删除数据。我想删除文件中的数据而不使用合并操作,因为连接条件不匹配。谁能帮我解决这个问题。
谢谢
小智 5
请记住:Delta 中的 DELETE 不支持子查询。
问题链接: https: //github.com/delta-io/delta/issues/730
从文档本身来看,替代方案如下
例如 :
DELETE FROM tdelta.productreferencedby_delta
WHERE id IN (SELECT KEY
FROM delta.productreferencedby_delta_dup_keys)
AND srcloaddate <= '2020-04-15'
Run Code Online (Sandbox Code Playgroud)
如果是DELTA,可以写成下面的形式
MERGE INTO delta.productreferencedby_delta AS d
using (SELECT KEY FROM tdatamodel_delta.productreferencedby_delta_dup_keys) AS k
ON d.id = k.KEY
AND d.srcloaddate <= '2020-04-15'
WHEN MATCHED THEN DELETE
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17072 次 |
| 最近记录: |