У меня есть фрейм данных со многими столбцами, и, чтобы объяснить ситуацию, скажем, есть столбец с буквами в нем из az .У меня также есть список , который включает в себя некоторые определенные буквы .
val testerList = List("a","k")
Кадр данных должен быть отфильтрован, чтобы включать только записи с указанными буквами всписок.Это очень просто:
val resultDF = df.where($"column".isin(testerList:_*)))
Таким образом, проблема в том, что список передается этой функции в качестве параметра, и это может быть пустой список, какую ситуацию можно решить подобным образом (определяется resultDFздесь как пустой фрейм данных):
if (!(testerList.isEmpty)) {
resultDF = df.where(some other stuff has to be filtered away)
.where($"column".isin(testerList:_*)))
} else {
resultDF = df.where(some other stuff has to be filtered away)
}
Есть ли способ сделать это более простым способом, что-то вроде этого:
val resultDF = df.where(some other stuff has to be filtered away)
.where((!(testerList.isEmpty)) && $"column".isin(testerList:_*)))
Этот выдает ошибку, хотя:
error: type mismatch;
found : org.apache.spark.sql.Column
required: Boolean
.where( (!(testerList.isEmpty)) && (($"agent_account_homepage").isin(testerList:_*)))
^
Итак, большое спасибо за любые идеи для решения !!:)