9.7 窗口函数
window(timeColumn,windowDuration,slideDuration=None,startTime=None)
:将rows
划分到一个或者多个窗口中(通过timestamp
列)参数:
timeColumn
:一个时间列,用于划分window
。它必须是pyspark.sql.types.TimestampType
windowDuration
: 表示时间窗口间隔的字符串。如'1 second','1 day 12 hours','2 minutes'
。单位字符串可以为'week','day','hour','minute','second','millisecond','microsecond'
。slideDuration
: 表示窗口滑动的间隔,即:下一个窗口移动多少。如果未提供,则窗口为tumbling windows
。 单位字符串可以为'week','day','hour','minute','second','millisecond','microsecond'
。startTime
:起始时间。它是1970-01-01 00:00:00
以来的相对偏移时刻。如,你需要在每个小时的15
分钟开启小时窗口,则它为15 minutes
:12:15-13:15,13:15-14:15,...
- 返回值:返回一个称作
window
的struct
,它包含start,end
(一个半开半闭区间)
cume_dist()
:返回一个窗口中的累计分布概率。dense_rank()
:返回窗口内的排名。(1,2,...
表示排名为1,2,...
)它和
rank()
的区别在于:dense_rank()
的排名没有跳跃(比如有3个排名为1,那么下一个排名是2,而不是下一个排名为4)rank()
:返回窗口内的排名。(1,2,...
表示排名为1,2,...
)。如有3个排名为1,则下一个排名是 4。
percent_rank()
:返回窗口的相对排名(如:百分比)lag(col,count=1,default=None)
:返回当前行之前偏移行的值。如果当前行之前的行数小于count
,则返回default
值。参数:
col
:一个字符串或者Column
。开窗的列count
:偏移行default
:默认值
lead(col,count=1,default=None)
:返回当前行之后偏移行的值。如果当前行之后的行数小于count
,则返回default
值。参数:
col
:一个字符串或者Column
。开窗的列count
:偏移行default
:默认值
ntile(n)
:返回有序窗口分区中的ntile group id
(从 1 到n
)row_number()
: 返回一个序列,从 1 开始,到窗口的长度。