У меня есть 2 dfs, и я хочу выполнить внутреннее объединение для всех столбцов
val seq1 = Seq((Some("1"), Some("Cat")), (Some("2"), Some("Dog")), (Some("3"), None))
val df1 = seq1.toDF("id", "name")
val s2 = Seq((Some("1"), Some("Cat")), (Some("2"), Some("Dog")), (Some("3"), None))
val df2 = s2.toDF("id", "name")
val s3 = Seq((Some("1"), Some("Cat")), (Some("2"), Some("Dog")), (Some("3"), None))
val df3 = s3.toDF("id", "name")
Я хочу, чтобы df1.join(df2, df1.columns, "inner")
дал результат df3, но сейчас он исключает ("3", null)
.
Я видел некоторые ответы, используя <=>
или .eqNullSafe
, но я не уверен, как применить это к scala коду. Я хочу общее решение, которое может применяться к любому dfs - не зная заранее названия столбцов.
Могу ли я сделать что-то вроде df1.join(df2, df1.columns.map(c => col(c).eqNullSafe()): _*, "inner")
? Компилятору это не нравится, но это идея.