我有下面这样的数据帧-
tagname tagvalue filename
starttime 2022-08-04 10:00:00 abc
endtime 2022-08-04 10:20:00 abc
startime 2022-08-04 10:10:00 xyz
endtime 2022-08-04 10:50:00 xyz
我想要以下格式的
filename starttime endtime
abc 2022-08-04 10:00:00 2022-08-04 10:20:00
xyz 2022-08-04 10:10:00 2022-08-04 10:50:00
请帮忙?我试了很多方法都不起作用
首先,我们可以在tagvalue
上按filename
和collect_set进行分组,将其重命名为data
。
.groupBy("filename").agg(collect_set(col("tagvalue")).as("data"))
编辑:
收集后,通过进行分类
.withColumn("data", array_sort(col("data")))
然后,我们创建两个列,starttime
和endttime
,如下所示:
.withColumn("starttime", col("data").getItem(0))
.withColumn("endtime", col("data").getItem(1))
我们最终放弃了data
,我们的最终结果:
+--------+-------------------+-------------------+
|filename|starttime |endtime |
+--------+-------------------+-------------------+
|xyz |2022-08-04 10:10:00|2022-08-04 10:50:00|
|abc |2022-08-04 10:00:00|2022-08-04 10:20:00|
+--------+-------------------+-------------------+
这正是你所需要的,祝你好运(你也可以通过文件名asc订购,但我没有这么做(!