如何将具有数据类型的新列动态添加到现有的Delta表中,并使用值更新新列



场景:

df1->Col1、Col2、Col3——它们是增量表中的列

df2->Col1、Col2、Col3、Col4、Col5——它们是最新刷新表中的列

  1. 如何动态获取具有数据类型的新列(在上面的Col4、Col5中(
  2. 如何动态更改现有的Delta表以包括新列(在上面的Col4、Col5中(并更新新列值

感谢您的帮助。

如果您有Delta表,则不需要执行显式ALTER TABLE-您只需要使用内置的模式进化功能(博客文章(-只需添加值为truemergeSchema选项,Delta将负责更新模式。例如,如果我有一个包含两个字段的初始表:i1&i2:

df1 = spark.createDataFrame([[1,2]], schema="i1 int, i2 int")
df1.write.format("delta").mode("overwrite").saveAsTable("test")

然后我可以更新它,即使我有更多的列:

df2 = spark.createDataFrame([[1,2, '1']], schema="i1 int, i2 int, v string")
df2.write.format("delta").mode("append") 
.option("mergeSchema", "true").saveAsTable("test")

你可以找到更多关于模式进化的信息;以下博客文章和本次网络研讨会中的强制执行。

相关内容

最新更新