跳到主要内容
跳到主要内容
编辑此页面

时间窗口函数

实验性功能。了解更多。
ClickHouse Cloud 不支持

时间窗口函数返回相应窗口的包含下界和排除上界。以下列出了用于处理 WindowView 的函数

tumble

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

语法

tumble(time_attr, interval [, timezone])

参数

返回值

示例

查询

SELECT tumble(now(), toIntervalDay('1'));

结果

┌─tumble(now(), toIntervalDay('1'))─────────────┐
│ ('2024-07-04 00:00:00','2024-07-05 00:00:00') │
└───────────────────────────────────────────────┘

tumbleStart

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

语法

tumbleStart(time_attr, interval [, timezone]);

参数

以上参数也可以作为 tuple 传递给函数。

返回值

示例

查询

SELECT tumbleStart(now(), toIntervalDay('1'));

结果

┌─tumbleStart(now(), toIntervalDay('1'))─┐
│ 2024-07-04 00:00:00 │
└────────────────────────────────────────┘

tumbleEnd

返回相应 滚动窗口 的排除上界。

语法

tumbleEnd(time_attr, interval [, timezone]);

参数

以上参数也可以作为 tuple 传递给函数。

返回值

示例

查询

SELECT tumbleEnd(now(), toIntervalDay('1'));

结果

┌─tumbleEnd(now(), toIntervalDay('1'))─┐
│ 2024-07-05 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时区名称(可选)。

返回值

注意

由于一条记录可以分配给多个跳跃窗口,因此当在没有 WINDOW VIEW 的情况下使用 hop 函数时,该函数仅返回第一个窗口的边界。

示例

查询

SELECT hop(now(), INTERVAL '1' DAY, INTERVAL '2' DAY);

结果

┌─hop(now(), toIntervalDay('1'), toIntervalDay('2'))─┐
│ ('2024-07-03 00:00:00','2024-07-05 00:00:00') │
└────────────────────────────────────────────────────┘

hopStart

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

语法

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

参数

  • time_attr — 日期和时间。 DateTime
  • hop_interval — 正跳跃间隔。 Interval
  • window_interval — 正窗口间隔。 Interval
  • timezone时区名称(可选)。

以上参数也可以作为 tuple 传递给函数。

返回值

注意

由于一条记录可以分配给多个跳跃窗口,因此当在没有 WINDOW VIEW 的情况下使用 hop 函数时,该函数仅返回第一个窗口的边界。

示例

查询

SELECT hopStart(now(), INTERVAL '1' DAY, INTERVAL '2' DAY);

结果

┌─hopStart(now(), toIntervalDay('1'), toIntervalDay('2'))─┐
│ 2024-07-03 00:00:00 │
└─────────────────────────────────────────────────────────┘

hopEnd

返回相应 跳跃窗口 的排除上界。

语法

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

参数

  • time_attr — 日期和时间。 DateTime
  • hop_interval — 正跳跃间隔。 Interval
  • window_interval — 正窗口间隔。 Interval
  • timezone时区名称(可选)。

以上参数也可以作为 tuple 传递给函数。

返回值

注意

由于一条记录可以分配给多个跳跃窗口,因此当在没有 WINDOW VIEW 的情况下使用 hop 函数时,该函数仅返回第一个窗口的边界。

示例

查询

SELECT hopEnd(now(), INTERVAL '1' DAY, INTERVAL '2' DAY);

结果

┌─hopEnd(now(), toIntervalDay('1'), toIntervalDay('2'))─┐
│ 2024-07-05 00:00:00 │
└───────────────────────────────────────────────────────┘