あなたは今、あなたはそのcol1
ないdfMain
からfilter in
rows
しようとしている、質問にあなたのコードで
dfMain
+----+----+----+
|col1|col2|col3|
+----+----+----+
|a1 |b1 |c1 |
|a |b2 |c3 |
|a |b3 |c4 |
+----+----+----+
と
として2 dataframes
探しているとしましょうdf col1
に等しく、残りの2つの列は等しい、すなわち.filter($"col1" !== r.col1 && $"col2" === r.col2 && $"col3" === r.col3)
である。ケースのthatsなら、あなたはjoin
あなたがdfMain
のだけcolumns
をしたい場合は今、あなたはどのべき
dfMain.as("main").join(df.as("table"), $"main.col1" =!= $"table.col1" && $"main.col2" === $"table.col2" && $"main.col3" === $"table.col3", "inner")
.select($"main.col1", $"main.col2",$"main.col3")
を行う必要があり、あなたに
+----+----+----+----+----+----+
|col1|col2|col3|col1|col2|col3|
+----+----+----+----+----+----+
|a1 |b1 |c1 |a |b1 |c1 |
+----+----+----+----+----+----+
を与える必要があります
dfMain.as("main").join(df.as("table"), $"main.col1" =!= $"table.col1" && $"main.col2" === $"table.col2" && $"main.col3" === $"table.col3", "inner")
で行く必要がありますbe
+----+----+----+
|col1|col2|col3|
+----+----+----+
|a1 |b1 |c1 |
+----+----+----+
そして、あなたが唯一のdf
のcolumns
たい場合は、
+----+----+----+
|col1|col2|col3|
+----+----+----+
|a |b1 |c1 |
+----+----+----+
としてデータフレームを生成する必要がありますそれとも、両方dataframe
joined
の混合出力を持つことができます
dfMain.as("main").join(df.as("table"), $"main.col1" =!= $"table.col1" && $"main.col2" === $"table.col2" && $"main.col3" === $"table.col3", "inner")
.select($"table.col1", $"table.col2",$"table.col3")
を行う必要があります。
col1がdf col1と等しくなく、残りの2つの列が等しいdfMainの行をフィルタリングすることを検討していますか? –
こんにちはラメッシュさん、ありがとうございました。基本的には、マップには 'dfMain'から要素を選択するための基準があります。 'df'の各行について、これらの基準を使って' dfMain'のいくつかの要素を選択する必要があります(私はこれらのケースの1つを私の質問で書いています)。 'map'の基準がより複雑になることがあるので、' df'の各行の 'map'の結果(マップによって生成されたDataFrames)を一緒にマージすることができる解決法を理解できます。生成されたDataFramesをマージするためのソリューションはありますか? –
以下の解決策はありませんでしたか?別のデータフレームのマップ内でデータフレームを使用することはできません。唯一の解決策は、それらに参加することです。 2つのデータフレームをマージするために共用体を使用できます。 –