时间窗口函数
实验性功能。了解更多。
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 │
└───────────────────────────────────────────────────────┘