时间窗口函数用于获取窗口的起始(包含边界)和结束时间(不包含边界)。系统支持的时间窗口函数如下:
--1.tumble
tumble窗口是连续的、不重叠的固定大小(interval)时间窗口。
tumble(time_attr, interval [, timezone])
参数
- time_attr - DateTime类型的时间数据。
- interval - Interval类型的窗口大小。
- timezone — Timezone name 类型的时区(可选参数).
返回值
tumble窗口的开始(包含边界)和结束时间(不包含边界)
类型: Tuple(DateTime, DateTime)
示例
查询:
SELECT tumble(now(), toIntervalDay('1'))
结果:
┌─tumble(now(), toIntervalDay('1'))─────────────┐
│ ['2020-01-01 00:00:00','2020-01-02 00:00:00'] │
└───────────────────────────────────────────────┘
--2.hop
hop窗口是一个固定大小(window_interval)的时间窗口,并按照一个固定的滑动间隔(hop_interval)滑动。当滑动间隔小于窗口大小时,滑动窗口间存在重叠,此时一个数据可能存在于多个窗口。
hop(time_attr, hop_interval, window_interval [, timezone])
参数
time_attr - DateTime类型的时间数据。
hop_interval - Interval类型的滑动间隔,需要大于0。
window_interval - Interval类型的窗口大小,需要大于0。
timezone — Timezone name 类型的时区(可选参数)。
返回值
hop窗口的开始(包含边界)和结束时间(不包含边界)。由于一个数据可能存在于多个窗口,脱离window view单独调用该函数时只返回第一个窗口数据。
类型: Tuple(DateTime, DateTime)
示例
查询:
SELECT hop(now(), INTERVAL '1' SECOND, INTERVAL '2' SECOND)
结果:
┌─hop(now(), toIntervalSecond('1'), toIntervalSecond('2'))──┐
│ ('2020-01-14 16:58:22','2020-01-14 16:58:24') │
└───────────────────────────────────────────────────────────┘
--3.tumbleStart
返回tumble窗口的开始时间(包含边界)。
tumbleStart(time_attr, interval [, timezone]);
--4.tumbleEnd
返回tumble窗口的结束时间(不包含边界)。
tumbleEnd(time_attr, interval [, timezone]);
--5.hopStart
返回hop窗口的开始时间(包含边界)。
hopStart(time_attr, hop_interval, window_interval [, timezone]);
--6.hopEnd
返回hop窗口的结束时间(不包含边界)。
hopEnd(time_attr, hop_interval, window_interval [, timezone]);