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

时间窗口函数

Experimental feature. Learn more.
Not supported in 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]);

参数

返回值

示例

查询:

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

结果:

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

tumbleEnd

返回对应 翻转窗口 的排除上限。

语法

tumbleEnd(time_attr, interval [, timezone]);

参数

返回值

示例

查询:

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 的情况下调用跳跃函数时,该函数仅返回 第一个 窗口的边界。

示例

查询:

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时区名称(可选)。

返回值

备注

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

示例

查询:

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时区名称(可选)。

返回值

备注

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

示例

查询:

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

结果:

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