我们每天在delta lake表(表名:dst1)中加载源文件作为时间序列数据。 如果deltalake表不存在,我们将创建一个表。如果表确实存在,我们将合并新数据作为时间序列数据
Creating Table if table does not exist:
spark.sql(f"CREATE TABLE {dtable} USING DELTA LOCATION {dmount1}")
If table does exist we will merge the new data as time series data:
here df --> has data for day 1
dtable --> has data for day 0.
jkey --> d.id=ds.id
spark.sql(f"MERGE INTO {dtable} d USING df ds ON {jkey} WHEN MATCHED THEN UPDATE SET * WHEN NOT MATCHED THEN INSERT *")
第1天来源的数据:
第2天来源的数据:
select * from dst1 VERSION AS OF 0
id lname fname gender satscore
1 Steve Jobs M 1100
2 Mapple Syrup F 1300
4 Tom Cruise M 1200
6 New Record F 1320
select * from dst1 VERSION AS OF 1
id lname fname gender satscore
1 Steve Not M 2000
2 Mapple Syrup F 1300
4 Tom Cruise M 1200
6 New Record F 1320
由于第2天没有id 2,4,6,但我仍然在delta lake table的第1版中看到它们。 我希望增量表的版本1中只有id 1。 我怎样才能做到这一点
https://docs.databricks.com/delta/delta-update.html#language-sql
这不是Delta的工作方式-每个版本都包含应该在其中的所有数据。它不是所有版本的组合来表示所有数据的统一视图。如果在新版本中只需要第2天的条目,则只需覆盖数据,然后需要分别读取每个版本以构建整个表的视图
相关问题 更多 >
编程相关推荐