首页 > 解决方案 > 需要在 pyspark 中加入多个表:

问题描述

查询使用:

df= (df1.alias('a')
     .join(df2, a.id == df2.id, how='inner')
     .select('a.*').alias('b')
     .join(df3, b.id == df3.id, how='inner'))

错误:未定义名称“b”。

标签: python-3.xpysparkpyspark-sql

解决方案


.alias('b')不会创建名为b. 它设置返回数据帧的内部名称。您a.id可能也不是您期望的那样,而是先前定义的东西。

我不记得在表达式中按名称访问新创建的 DF 的好方法。我会使用中间标识符:

df_joined = df1.join(df1.id == df2.id, how='inner')
result_df = dj_joined.join(df_joined.id == df3.id, how='inner')

推荐阅读