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

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

在databricks/python中 提前致谢

【问题讨论】:

  • 到目前为止你有什么?

标签: python apache-spark pyspark apache-spark-sql databricks


【解决方案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|
+----+----+----+

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    • 2022-06-28
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多