我正在尝试聚合多个列。这是我的情景。
我有一个像TagID,ListnerID,Timestamp和RSSI_weightage这样的列。
我想为每个TagID选择最高的rssi_weightage。此外,我需要为上述关联选择最高的时间戳。
实施例
TagID,ListnerID,Timestamp,RSSI_Weightage
2,101,1496745906,90
3,102,1496745907,70
3,104,1496745906,80
2,101,1496745909,60
4,106,1496745908,60
My expected output
2,101,1496745909,90
3,104,1496745907,80
4,106,1496745908,60
解释
对于TagID 2,最高的rssi_weighatge是90.但是最新的时间戳是1496745909.这是我的第一行。我为所有tagID做了一件事。
以上是我的预期输出。我试过这样的。
val window = Window.partitionBy("tagShortID", "ListenerShortID").orderBy("RSSI_Weightage","Timestamp")
val prox = averageDF.withColumn("rank", row_number().over(window)).where($"rank" === 1)
但上述说法不正常。我得到的结果不正确。如果按顺序应用desc,它会抛出错误。