# 时间窗口函数

# tumble

滚动时间窗口将记录分配给持续、不重叠的固定时长(interval)的窗口。

tumble(time_attr, interval [, timezone])

参数

  • time_attr - 日期和时间。DateTime 数据类型。
  • interval - 窗口间隔,使用 Interval 数据类型。
  • timezone — 时区名称(可选)。

返回值

  • 对应滚动窗口的包含下界和不包含上界。
  • 类型:Tuple(DateTime, DateTime)

示例

SELECT tumble(now(), toIntervalDay('1'))
┌─tumble(now(), toIntervalDay('1'))─────────────┐
│ ('2023-10-27 00:00:00','2023-10-28 00:00:00') │
└───────────────────────────────────────────────┘

# hop

跳跃时间窗口具有固定的持续时间(window_interval),并以指定的跳跃间隔(hop_interval)进行跳跃。如果 hop_interval 小于 window_interval,则跳跃窗口会重叠。因此,记录可以分配给多个窗口。

hop(time_attr, hop_interval, window_interval [, timezone])

参数

  • time_attr - 日期和时间。DateTime 数据类型。
  • hop_interval - 跳跃间隔,使用 Interval 数据类型。应为正数。
  • window_interval - 窗口间隔,使用 Interval 数据类型。应为正数。
  • timezone — 时区名称(可选)。

返回值

  • 对应跳跃窗口的包含下界和不包含上界。由于一条记录可以分配给多个跳跃窗口,当 hop 函数在没有 WINDOW VIEW 的情况下使用时,函数只返回第一个窗口的边界。
  • 类型:Tuple(DateTime, DateTime)

示例

SELECT hop(now(), INTERVAL '1' SECOND, INTERVAL '2' SECOND)
┌─hop(now(), toIntervalSecond('1'), toIntervalSecond('2'))──┐
│ ('2023-10-27 15:10:17','2023-10-27 15:10:19')             │
└───────────────────────────────────────────────────────────┘

# tumbleStart

返回对应滚动窗口的包含下界。

tumbleStart(bounds_tuple);
tumbleStart(time_attr, interval [, timezone]);

# tumbleEnd

返回对应滚动窗口的不包含上界。

tumbleEnd(bounds_tuple);
tumbleEnd(time_attr, interval [, timezone]);

# hopStart

返回对应跳跃窗口的包含下界。

hopStart(bounds_tuple);
hopStart(time_attr, hop_interval, window_interval [, timezone]);

# hopEnd

返回对应跳跃窗口的不包含上界。

hopEnd(bounds_tuple);
hopEnd(time_attr, hop_interval, window_interval [, timezone]);