Вы должны найти индекс последней строки с Good
в столбце PDP
, а затем отфильтровать только те строки, которые меньше этого индекса.
custId
Если ваш custId
столбец содержит увеличивающиеся идентификаторы в отсортированном порядке, тогда вы можете сделать следующее
import org.apache.spark.sql.functions._
val maxIdToFilter = df.filter(lower(col("PDP")) === "good").select(max(col("custId").cast("long"))).first().getLong(0)
df.filter(col("custId") <= maxIdToFilter).show(false)
monotically_increasing_id
Если ваш custId
не отсортирован и в порядке возрастания, то вы можете использовать следующую логику
import org.apache.spark.sql.functions._
val dfWithRow = df.withColumn("rowNo", monotonically_increasing_id())
val maxIdToFilter = dfWithRow.filter(lower(col("PDP")) === "good").select(max("rowNo")).first().getLong(0)
dfWithRow.filter(col("rowNo") <= maxIdToFilter).drop("rowNo").show(false)
Надеюсь, ответ полезен