如何将具有数据类型的新列动态添加到现有 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
- 如何动态获取具有数据类型的新列(在上面的 Col4、Col5 中)。
- 如何更改现有增量 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.
中找到有关架构演变和实施的更多信息
场景:
df1 ---> Col1,Col2,Col3 -- 这是增量中的列 table
df2 ---> Col1,Col2,Col3,Col4,Col5 -- 最新刷新的列 table
- 如何动态获取具有数据类型的新列(在上面的 Col4、Col5 中)。
- 如何更改现有增量 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.
中找到有关架构演变和实施的更多信息