2
私はQAデータの移動にSpark(Scala)を使用しています。 QAプロセスでは、ソース表とターゲット表の完全な外部結合を実行します。Spark/Scala - 1つがNULLのときにデータフレーム内の2つの列を比較します。
val mismatchColumns = for (i <- 0 to (sourceDF.columns.length-1)) yield (joinedDF.col(joinedDF.columns(i)) =!= joinedDF.col(joinedDF.columns(i+(sourceDF.columns.length))))
val mismatchedDF = joinedDF.filter(mismatchColumns.reduce((_||_)))
しかし場合:私はミスマッチを見つけるために、次のロジックを使用してい
val joinColumns = for (i <- 0 to (sourceJoinFields.length - 1)) yield sourceDF.col(sourceJoinFields(i)) <=> targetDF.col(targetJoinFields(i))
val joinedDF = sourceDF.join(targetDF, joinColumns.reduce((_&&_)), "fullouter")
:
ソーステーブルとターゲットテーブルは、キー(複数可)上のデータフレームに接合されています
+--------------+--------------+--------------+--------------+
|source_key |source_field |target_key |target_field |
+--------------+--------------+--------------+--------------+
|null |null |XXX |XXX |
は、不一致のデータに含まれていませんセット。
私の質問: '=!='演算子は '< =>'演算子の反対ですか?それはそうではないようですが、この場合はFALSEを返す演算子がありますか?いずれのオペレータでも多くのドキュメントを見つけることはできません。
それでした。 「まあ、やあ!私の部分に....ありがとう! – Joe787