Python >> Tutoriel Python >  >> Python

Jointure externe Spark dataframe avec une colonne de jointure non identique, puis fusionner une colonne de jointure

Vous pouvez utiliser coallesce fonction qui renvoie le premier argument non nul.

from pyspark.sql.functions import coalesce

df1 = df1.alias("df1")
df2 = df2.alias("df2")

(df1.join(df2, df1.name == df2.name, 'outer')
  .withColumn("name_", coalesce("df1.name", "df2.name"))
  .drop("name")
  .withColumnRenamed("name_", "name"))

C'est un peu tard, mais il existe une solution plus simple si quelqu'un en a besoin. Juste un simple changement par rapport à la solution de l'affiche originale :

df1.join(df2, 'name', 'outer')