我有一个Spark
vehicle_coalesce vehicleNumber productionNumber pin checkDate
V123 V123 P123 null 27/08/2023 01:03
P123 null P123 W123 27/08/2023 01:05
P123 null P123 W123 27/08/2023 01:05
V234 V234 P234 null 27/08/2023 01:03
V234 V234 null W234 27/08/2023 01:05
V234 V234 null W234 27/08/2023 01:05
P456 null P456 W456 27/08/2023 01:03
v456 V456 null W456 27/08/2023 01:05
V456 V456 P456 W456 27/08/2023 01:05
我必须按vehicleNumber
或productionNumber
或pin
进行分组,并按vehicleNumber
或productionNumber
或pin
进行分区,并仅选择基于checkDate
的最新记录。
所需输出为:
vehicle_coalesce vehicleNumber productionNumber pin checkDate
P123 null P123 W123 27/08/2023 01:05
P123 null P123 W123 27/08/2023 01:05
V234 V234 null W234 27/08/2023 01:05
V234 V234 null W234 27/08/2023 01:05
v456 V456 null W456 27/08/2023 01:05
V456 V456 P456 W456 27/08/2023 01:05
在此,由于V123
车辆具有相同的productionNumber
,因此按productionNumber
对其进行分组并挑选最新记录,对于V234
,由于vehicleNumber
具有相同的vehicleNumber
,因此按V234
对其进行分组并挑选最新记录,对于V456
,由于pin
具有相同的pin
,因此按V456
对其进行分组并挑选最新记录
如何使用pyspark?
2条答案
按热度按时间gkn4icbw1#
由于您希望按'vehicleNumber'、'productionNumber'或'pin'分组,因此我将使用按
checkDate
排序的三个不同窗口。对于每个窗口,每列一个,我将保留感兴趣的列和最后一个checkDate
的行的空值。可以这样写:
rhfm7lfc2#
我建议在整个DataFrame中使用一致的日期时间格式,以确保正确的日期解析。这里有一个更新的方法,它假设“checkDate”列具有常量日期时间格式:
对于一致的日期解析,在此代码中,“checkDate”字段假定为“yyyy-MM-dd HH:mm:ss”格式。