Я приложил то, о чем мог думать. Существует некоторая разница в данных, так как я должен был готовить данные, не мог напрямую извлечь из проблемы, как вы прикрепили изображение. Было бы проще, если бы вы прикрепили данные, чтобы каждый мог копировать.
Надеюсь, это поможет
rest_csv: -
Country,Threshold,Row_Restriction
India,0,0
USA,25,5
Sweden,50,2
country_csv: -
Country,ContId,Agent,Threshold,RowNumber
India,123,A,0,1
India,124,A,0,2
India,125,A,0,3
India,126,A,0,4
USA,147,A,50,1
USA,148,A,50,2
USA,149,A,50,3
USA,147,A,50,4
USA,147,A,50,5
USA,146,A,50,6
USA,147,A,50,7
Sweden,152,A,25,1
Sweden,153,A,25,2
Sweden,154,A,25,3
Sweden,157,A,25,4
Sweden,158,A,25,5
Sweden,159,A,25,6
val countryDf = spark.read.format("csv").option("inferSchema","true").option("header",true).load(country_csv)
val restDf = spark.read.format("csv").option("inferSchema","true").option("header",true).load(rest_csv)
val newDf = countryDf.join(restDf,countryDf.col("Country").equalTo(restDf.col("Country")))
val finalDf = newDf.where(col("RowNumber").leq(col("Row_Restriction")).or(col("Row_Restriction").equalTo(lit(0)))).select(countryDf.col("*"))
finalDf.show
результат: -
+-------+------+-----+---------+---------+
|Country|ContId|Agent|Threshold|RowNumber|
+-------+------+-----+---------+---------+
| India| 123| A| 0| 1|
| India| 124| A| 0| 2|
| India| 125| A| 0| 3|
| India| 126| A| 0| 4|
| USA| 147| A| 50| 1|
| USA| 148| A| 50| 2|
| USA| 149| A| 50| 3|
| USA| 147| A| 50| 4|
| USA| 147| A| 50| 5|
| Sweden| 152| A| 25| 1|
| Sweden| 153| A| 25| 2|
+-------+------+-----+---------+---------+