У меня есть следующие два DataFrames
:
DataFrame "dfPromotion":
date | store
===================
2017-01-01 | 1
2017-01-02 | 1
DataFrame "dfOther":
date | store
===================
2017-01-01 | 1
2017-01-03 | 1
Позже мне нужно union
оба DataFrames
выше. Но прежде мне нужно удалить все строки dfOther
, которые имеют значение date
, которое также содержится в dfPromotion
.
Результат следующего шага filtering
должен выглядеть так:
DataFrame "dfPromotion" (this stays always the same, must not be changed in this step!)
date | store
===================
2017-01-01 | 1
2017-01-02 | 1
DataFrame "dfOther" (first row is removed as dfPromotion contains the date 2017-01-01 in the "date" column)
date | store
===================
2017-01-03 | 1
Есть ли способ сделать это на Java? Я нашел только метод DataFrame.except
, но он проверяет все столбцы DataFrames. Мне нужно отфильтровать второй DataFrame только по столбцу date
, так как позже могут быть добавлены другие столбцы, которые могут содержать другие значения...
Вызов dfOther.filter(dfOther.col("date").isin(dfPromotion.col("date")))
вызывает следующее исключение:
Exception in thread "main" org.apache.spark.sql.AnalysisException: resolved attribute(s) date#64 missing from date#0,store#13 in operator !Filter date#0 IN (date#64);