跳到主要内容
跳到主要内容

时间窗口函数

Experimental feature. Learn more.
Not supported in ClickHouse Cloud

时间窗口函数返回对应窗口的下界(包含)和上界(不包含)。 用于处理 WindowView 的函数如下所示:

hop

引入于:v21.12

跳跃时间窗口具有固定的窗口长度(window_interval),并按指定的跳跃间隔(hop_interval)向前滑动。如果 hop_interval 小于 window_interval,则跳跃窗口会发生重叠,因此一条记录可以被分配到多个窗口中。

由于一条记录可以被分配到多个跳跃窗口,当在不使用 WINDOW VIEW 的情况下使用 hop 函数时,该函数只会返回第一个窗口的边界。

语法

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

参数

  • time_attr — 日期和时间。DateTime
  • hop_interval — 正数的 Hop 间隔。Interval
  • window_interval — 正数的窗口(Window)间隔。Interval
  • timezone — 可选。时区名称。String

返回值

返回对应跳跃窗口(hopping window)的左闭右开区间边界。Tuple(DateTime, DateTime)

示例

跳跃窗口(Hopping window)

SELECT hop(now(), INTERVAL '1' DAY, INTERVAL '2' DAY)
('2024-07-03 00:00:00','2024-07-05 00:00:00')

hopEnd

引入版本:v22.1

返回相应跳跃窗口的不包含自身的上界。

由于一条记录可以被分配到多个跳跃窗口,当在未使用 WINDOW VIEW 的情况下调用 hop 函数时,该函数仅返回第一个窗口的上界。

语法

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

参数

  • time_attr — 日期和时间。DateTime
  • hop_interval — 正数 Hop 间隔。Interval
  • window_interval — 正数窗口间隔。Interval
  • timezone — 可选。时区名称。String

返回值

返回对应 hopping 窗口的上界(不含)。DateTime

示例

Hopping 窗口结束

SELECT hopEnd(now(), INTERVAL '1' DAY, INTERVAL '2' DAY)
2024-07-05 00:00:00

hopStart

引入版本:v22.1

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

由于一条记录可以被分配到多个跳跃窗口,在未使用 WINDOW VIEW 的情况下调用 hop 函数时,该函数只返回第一个窗口的下界。

语法

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

参数

  • time_attr — 日期和时间。DateTime
  • hop_interval — 正的 hop 间隔。Interval
  • window_interval — 正的窗口间隔。Interval
  • timezone — 可选。时区名称。String

返回值

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

示例

跳跃窗口起始时间

SELECT hopStart(now(), INTERVAL '1' DAY, INTERVAL '2' DAY)
2024-07-03 00:00:00

tumble

引入自:v21.12

tumble 时间窗口会将记录分配到固定持续时间(interval)、不重叠且连续的时间窗口中。

语法

tumble(time_attr, interval[, timezone])

参数

  • time_attr — 日期和时间。DateTime
  • intervalInterval 类型的窗口间隔。Interval
  • timezone — 可选。时区名称。String

返回值

返回对应滚动窗口包含的下界和不包含的上界。Tuple(DateTime, DateTime)

示例

滚动窗口(Tumbling window)

SELECT tumble(now(), toIntervalDay('1'))
('2024-07-04 00:00:00','2024-07-05 00:00:00')

tumbleEnd

引入于:v22.1

返回相应滚动窗口的右开区间上界值。

语法

tumbleEnd(time_attr, interval[, timezone])

参数

  • time_attr — 日期和时间。DateTime
  • interval — 窗口区间,类型为 Interval。Interval
  • timezone — 可选。时区名称。String

返回值

返回对应翻转窗口的开区间上界。DateTime

示例

翻转窗口结束时间

SELECT tumbleEnd(now(), toIntervalDay('1'))
2024-07-05 00:00:00

tumbleStart

引入于:v22.1

返回对应翻转窗口(tumbling window)的左闭边界。

语法

tumbleStart(time_attr, interval[, timezone])

参数

  • time_attr — 日期和时间。DateTime
  • intervalInterval 类型的窗口间隔。Interval
  • timezone — 可选。时区名称。String

返回值

返回对应滚动窗口(tumbling window)的包含型下界。DateTime

示例

滚动窗口起始时间

SELECT tumbleStart(now(), toIntervalDay('1'))
2024-07-04 00:00:00