9.7 窗口函数

  1. 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 minutes12:15-13:15,13:15-14:15,...
    • 返回值:返回一个称作windowstruct,它包含start,end(一个半开半闭区间)
  2. cume_dist():返回一个窗口中的累计分布概率。

  3. dense_rank():返回窗口内的排名。(1,2,... 表示排名为1,2,...

    它和rank() 的区别在于:dense_rank() 的排名没有跳跃(比如有3个排名为1,那么下一个排名是2,而不是下一个排名为4)

  4. rank():返回窗口内的排名。(1,2,... 表示排名为1,2,...)。

    如有3个排名为1,则下一个排名是 4。

  5. percent_rank():返回窗口的相对排名(如:百分比)

  6. lag(col,count=1,default=None):返回当前行之前偏移行的值。如果当前行之前的行数小于count,则返回default 值。

    • 参数:

      • col:一个字符串或者Column。开窗的列
      • count:偏移行
      • default:默认值
  7. lead(col,count=1,default=None):返回当前行之后偏移行的值。如果当前行之后的行数小于count,则返回default 值。

    • 参数:

      • col:一个字符串或者Column。开窗的列
      • count:偏移行
      • default:默认值
  8. ntile(n):返回有序窗口分区中的ntile group id (从 1 到 n

  9. row_number(): 返回一个序列,从 1 开始,到窗口的长度。