ClickHouse/docs/zh/sql-reference/functions/time-window-functions.md

3.5 KiB
Raw Blame History

toc_priority toc_title
68 时间窗口

时间窗口函数

时间窗口函数用于获取窗口的起始(包含边界)和结束时间(不包含边界)。系统支持的时间窗口函数如下:

tumble

tumble窗口是连续的、不重叠的固定大小(interval)时间窗口。

tumble(time_attr, interval [, timezone])

参数

  • time_attr - DateTime类型的时间数据。
  • interval - Interval类型的窗口大小。
  • timezoneTimezone 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。
  • timezoneTimezone 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]);