使用 window 函数后无法理解时间的输出值?
Not able to understand the output value of time after using the window function?
我试图找出我的数据帧值所在的时间 window,但我无法理解输出。我无法理解:
window(timeColumn, windowDuration, slideDuration=None, startTime=None) 正在工作。
这是代码:
df = spark.createDataFrame([("0000-01-01 00:00:00", 1),("1970-01-01 19:02:34", 1),("1970-01-01 19:01:29", 1)]).toDF("date", "val")
from pyspark.sql.functions import window
w = df.groupBy(window("date", windowDuration="55 seconds")).sum("val").alias("sum")
display(w)
使用数据块。
谁能告诉我输出并解释它是如何工作的。
根据时间戳列,window
将创建一个包含输入时间戳的“存储桶”(开始时间和结束时间)。桶的“大小”取决于 windowDuration
持续时间参数。
例如,您有一个时间戳 2021-10-29 11:13:51
并且您将 window 函数与 windowDuration = "15 minutes"
一起应用,新列将是一个包含 start = "2021-10-29 11:00:00"
和 end = "2021-10-29 11:15:00"
。在开始和结束之间,您有 15 分钟的时间,您的时间戳包含在中间。
在您当前的代码中,您使用 windowDuration="55 seconds"
。根据文档:
The startTime is the offset with respect to 1970-01-01 00:00:00 UTC with which to start window intervals.
表示从1970-01-0100:00:00日期开始,将创建windows,长度为55秒。第一个将是 1970-01-01 00:00:00 ==> 1970-01-01 00:00:55
,第二个将是 1970-01-01 00:00:55 ==> 1970-01-01 00:01:50
,等等...
它有效,但与 1 minutes
参数相比,开始和结束并不规则。
我试图找出我的数据帧值所在的时间 window,但我无法理解输出。我无法理解: window(timeColumn, windowDuration, slideDuration=None, startTime=None) 正在工作。
这是代码:
df = spark.createDataFrame([("0000-01-01 00:00:00", 1),("1970-01-01 19:02:34", 1),("1970-01-01 19:01:29", 1)]).toDF("date", "val")
from pyspark.sql.functions import window
w = df.groupBy(window("date", windowDuration="55 seconds")).sum("val").alias("sum")
display(w)
使用数据块。
谁能告诉我输出并解释它是如何工作的。
根据时间戳列,window
将创建一个包含输入时间戳的“存储桶”(开始时间和结束时间)。桶的“大小”取决于 windowDuration
持续时间参数。
例如,您有一个时间戳 2021-10-29 11:13:51
并且您将 window 函数与 windowDuration = "15 minutes"
一起应用,新列将是一个包含 start = "2021-10-29 11:00:00"
和 end = "2021-10-29 11:15:00"
。在开始和结束之间,您有 15 分钟的时间,您的时间戳包含在中间。
在您当前的代码中,您使用 windowDuration="55 seconds"
。根据文档:
The startTime is the offset with respect to 1970-01-01 00:00:00 UTC with which to start window intervals.
表示从1970-01-0100:00:00日期开始,将创建windows,长度为55秒。第一个将是 1970-01-01 00:00:00 ==> 1970-01-01 00:00:55
,第二个将是 1970-01-01 00:00:55 ==> 1970-01-01 00:01:50
,等等...
它有效,但与 1 minutes
参数相比,开始和结束并不规则。