【发布时间】:2021-06-24 14:55:19
【问题描述】:
需要有关如何比较两个增量表 X 和 Y 的架构的建议。 表 Y 比 X 多 N 列。 如何动态识别额外的列并添加到表 X?
在databricks/python中 提前致谢
【问题讨论】:
-
到目前为止你有什么?
标签: python apache-spark pyspark apache-spark-sql databricks
需要有关如何比较两个增量表 X 和 Y 的架构的建议。 表 Y 比 X 多 N 列。 如何动态识别额外的列并添加到表 X?
在databricks/python中 提前致谢
【问题讨论】:
标签: python apache-spark pyspark apache-spark-sql databricks
您可以通过以下方式实现它:
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|
+----+----+----+
它是如何工作的 - 它遍历第二个数据帧的列,并检查它是否已经在第一个数据帧中。如果不是,它会创建一个具有空值的新列,但会转换为正确的数据类型。
【讨论】: