時間窗口函數用於獲取窗口的起始(包含邊界)和結束時間(不包含邊界)。系統支持的時間窗口函數如下:
--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]);