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

How to dynamically add new columns with the datatypes to the existing Delta table and update the new columns with values

场景:

df1 ---> Col1,Col2,Col3 -- 这是增量中的列 table

df2 ---> Col1,Col2,Col3,Col4,Col5 -- 最新刷新的列 table

  1. 如何动态获取具有数据类型的新列(在上面的 Col4、Col5 中)。
  2. 如何更改现有增量 table 以动态包含新列(在上面的 Col4、Col5 中)并更新新列值

感谢您的帮助。

如果您有 Delta table,则无需执行显式 ALTER TABLE - 您只需使用 built-in 模式演化功能 () - 只需添加 mergeSchema 值为 true 的选项,Delta 将负责更新架构。例如,如果我有两个字段的初始 table: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")

您可以在以下 blog post and this webinar.

中找到有关架构演变和实施的更多信息