python - 比较两个增量表的架构
问题描述
需要有关如何比较两个增量表 X 和 Y 的架构的建议。表 Y 的列比 X 多 N。如何动态识别额外的列并添加到表 X?
在 databricks/python 中提前致谢
解决方案
您可以通过以下方式实现它:
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|
+----+----+----+
它是如何工作的 - 它遍历第二个数据帧的列,并检查它是否已经在第一个数据帧中。如果不是,它会创建一个具有空值的新列,但会转换为正确的数据类型。
推荐阅读
- c - 如何修改 TCP 拥塞算法?
- android - 如何使用 firebase 和 unity3d 解决“缺少依赖项”错误
- c - 在分叉进程中调用 Execve 的问题
- javascript - 我的 Ajax 脚本设置了一个变量 Task_Number 等于我单击的行的任务编号,但我的 php 将其显示为未定义的索引
- java - 如何使用ajax连接all_book并在网页上打印出数据库信息
- jenkins - Github webhook 不再触发 Jenkins 构建
- ocaml - 如何在我的沙丘项目中将包含路径标志传递给 ocamlc/ocamlopt
- delphi - 获取智能指针的 RTTI 信息
- python - 对象没有属性“btn”
- ruby-on-rails - 使用 Rails 5 和 ActiveAdmin 进行 Google 分析