首页 > 解决方案 > 比较两个增量表的架构

问题描述

需要有关如何比较两个增量表 X 和 Y 的架构的建议。表 Y 的列比 X 多 N。如何动态识别额外的列并添加到表 X?

在 databricks/python 中提前致谢

标签: pythonapache-sparkpysparkapache-spark-sqldatabricks

解决方案


您可以通过以下方式实现它:

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)

用法:

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|
+----+----+----+

它是如何工作的 - 它遍历第二个数据帧的列,并检查它是否已经在第一个数据帧中。如果不是,它会创建一个具有空值的新列,但会转换为正确的数据类型。


推荐阅读