You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Databricks中PySpark如何关联表取值,未匹配返回空值并保留全量数据

解决Databricks中DataFrame左连接保留全量数据的问题

需求说明

基于两个现有DataFrame创建新的DataFrame:从df2中根据Material字段匹配对应的Conversion值,匹配成功则返回该值,未匹配则返回空值,同时必须保留df1的全部数据。

示例数据

df1:

MaterialKG
110
250
3100
480
560

df2:

MaterialConversion
11.5
35
512

期望结果df3

MaterialKGConversion
1101.5
250
31005
480
56012

原代码问题

原代码使用了默认的join操作(内连接),只会返回两边Material字段匹配的记录,导致df1中未匹配的记录(Material=2、4)丢失:

df3 = df1.join(df2,["Material"]).withColumnRenamed("Material", "Material_new").drop("Material_new")
display(df3)

正确实现代码

使用**左外连接(left join)**即可保留df1的全部数据,未匹配时Conversion字段自动填充为Null:

# 左连接保留df1所有记录,未匹配的Conversion字段为空
df3 = df1.join(df2, on=["Material"], how="left")
display(df3)

说明

Spark DataFrame的join方法默认是inner(内连接),仅返回双方匹配的记录。显式指定how="left"(或how="left_outer")后,会保留左表(df1)的所有行,右表(df2)中无匹配的行对应字段会填充为Null,完全符合需求。

内容的提问来源于stack exchange,提问作者Emma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 21:52:57