Вы также можете попробовать что-то вроде этого ... используйте to_date () , чтобы сначала преобразовать в объекты Date, а затем сравнить:
from pyspark.sql.functions import *
temp = [(("ID1", '2019-01-01', '2019-02-01')), (("ID2", '2018-01-01', '2019-05-01')), (("ID3", '2019-06-01', '2019-04-01'))]
t1 = spark.createDataFrame(temp, ["ID", "colA", "colB"])
t2 = t1.select("ID", to_date(t1.colA).alias('colADate'), to_date(t1.colB).alias('colBDate'))
t3 = t2.withColumn('maxDateFromRow', when(t2.colADate > t2.colBDate, t2.colADate).otherwise(t2.colBDate))
t3.show()
Что возвращает:
+---+----------+----------+--------------+
| ID| colADate| colBDate|maxDateFromRow|
+---+----------+----------+--------------+
|ID1|2019-01-01|2019-02-01| 2019-02-01|
|ID2|2018-01-01|2019-05-01| 2019-05-01|
|ID3|2019-06-01|2019-04-01| 2019-06-01|
+---+----------+----------+--------------+