mirror of
https://github.com/ClickHouse/ClickHouse.git
synced 2024-11-23 08:02:02 +00:00
3.5 KiB
3.5 KiB
sidebar_position | sidebar_label |
---|---|
68 | 时间窗口 |
时间窗口函数
时间窗口函数用于获取窗口的起始(包含边界)和结束时间(不包含边界)。系统支持的时间窗口函数如下:
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'] │
└───────────────────────────────────────────────┘
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') │
└───────────────────────────────────────────────────────────┘
tumbleStart
返回tumble窗口的开始时间(包含边界)。
tumbleStart(time_attr, interval [, timezone]);
tumbleEnd
返回tumble窗口的结束时间(不包含边界)。
tumbleEnd(time_attr, interval [, timezone]);
hopStart
返回hop窗口的开始时间(包含边界)。
hopStart(time_attr, hop_interval, window_interval [, timezone]);
hopEnd
返回hop窗口的结束时间(不包含边界)。
hopEnd(time_attr, hop_interval, window_interval [, timezone]);