答案 0 :(得分:0)
不清楚您要在这里做什么。
如果您要计算唯一身份ID的数量,则需要编写类似from pyspark.sql import functions as F, Window
w = Window.partitionBy("roomId").orderBy("timeStamp")
df = df.withColumn(
"_id",
F.sum(
F.when(F.col("isConnected") == F.lag("isConnected").over(w), 0).otherwise(1)
).over(w),
)
df_agg = df.groupBy("roomId", "_id").agg(
F.min("timeStamp").alias("timeStamp"), F.first("isConnected").alias("isConnected")
)
df_agg = (
df_agg.withColumnRenamed("timeStamp", "timeStamp_start")
.withColumn(
"timeStamp_end",
F.lead("timeStamp_start").over(Window.partitionBy("roomId").orderBy("_id")),
)
.where("timeStamp_end is not null")
.where("not isConnected")
.withColumn("duration", F.col("timeStamp_end") - F.col("timeStamp_start"))
)
df_agg.groupBy("roomId").agg(F.avg("duration")).show()
+------+-------------+
|roomId|avg(duration)|
+------+-------------+
| 1| 5000.0|
| 3| 1500.0|
| 2| 3000.0|
+------+-------------+
的公式。然后,您将获得一个度量,该度量将给出数据库中成员ID的总数。
另一方面,如果您想计算成员出现在数据库中的次数,则可以使用CountD(Member ID)
。然后,将“会员ID”拖到一行时,可以拖动已创建的新度量并获取每个会员的计数表。