二十四、clickhouse時間窗口函數


時間窗口函數用於獲取窗口的起始(包含邊界)和結束時間(不包含邊界)。系統支持的時間窗口函數如下:

--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]);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM