简体   繁体   中英

compare the schema of two delta tables

Need suggestions on how to compare the schema of two delta tables X and Y. Table Y has N more columns than X. How do I dynamically identify the extra columns and add to table X?

In databricks/python Thanks in advance

You can achieve it with something like this:

def add_missing_columns(df1, df2):
  additional_cols = [F.lit(None).cast(field.dataType).alias(field.name) 
                     for field in df2.schema.fields if field.name not in df1.columns]
  return df1.select("*", *additional_cols)

Usage:

df1 = spark.createDataFrame([('1',), ('2',)], ["col1"])
df2 = spark.createDataFrame([('{1',1, 0.5)], ["col1", "col2", "col3"])
add_missing_columns(df1, df2).show()

+----+----+----+
|col1|col2|col3|
+----+----+----+
|   1|null|null|
|   2|null|null|
+----+----+----+

How it works - it iterates over the columns of 2nd dataframe, and check if it's already in the first dataframe or not. If it's not, it creates a new column with null value, but casted to correct data type.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM