比较两个增量表的架构

Posted

技术标签:

【中文标题】比较两个增量表的架构【英文标题】:compare the schema of two delta tables 【发布时间】:2021-06-24 14:55:19 【问题描述】:

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

在databricks/python中 提前致谢

【问题讨论】:

到目前为止你有什么? 【参考方案1】:

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

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

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

【讨论】:

以上是关于比较两个增量表的架构的主要内容,如果未能解决你的问题,请参考以下文章

如何比较两个表数据的差异

比较codeigniter中两个表的数据

SqlServer怎么比较两个表的字段是不是一致

SQL BigQuery - 比较两个表的总计数

比较来自两个不同表的两列的逗号分隔值

比较两个表的 xml [PENTAHO]