跳至主要内容

时间窗口函数

时间窗口函数返回相应窗口的包含下界和排除上界。以下是使用 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])

参数

返回值

注意

由于一条记录可以分配到多个跳跃窗口,因此当跳跃函数没有使用 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]);

参数

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

返回值

注意

由于一条记录可以分配到多个跳跃窗口,因此当跳跃函数没有使用 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]);

参数

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

返回值

注意

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

示例

查询

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

结果

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