我在Redshift中有一個基於事件的表格。我想要將所有事件與系列中的FIRST事件綁定在一起,前提是該事件在此事件之前的N小時內進行。我可以在Redshift的窗口函數中添加一個條件嗎?
如果我所關注的是非常第一排,我想簡單地做:
SELECT
event_time
,first_value(event_time)
OVER (ORDER BY event_time rows unbounded preceding) as first_time
FROM
my_table
但因爲我只想在過去N個小時,以配合這第一個事件,我想要類似於:
SELECT
event_time
,first_value(event_time)
OVER (ORDER BY event_time rows between [N-hours ago] and current row) as first_time
FROM
my_table
在我桌子上的一點背景。這是用戶操作,因此用戶跳轉,執行1-100個操作,然後離開。大多數用戶每天都有1-10x。會議很少會持續一個小時,所以我可以設置N = 1。
如果我只是設置了一個PARTITION BY date_trunc('hour',event_time),那麼我將爲跨越一小時的會話創建兩倍。
假設MY_TABLE模樣
id | user_id | event_time
----------------------------------
1 | 123 | 2015-01-01 01:00:00
2 | 123 | 2015-01-01 01:15:00
3 | 123 | 2015-01-01 02:05:00
4 | 123 | 2015-01-01 13:10:00
5 | 123 | 2015-01-01 13:20:00
6 | 123 | 2015-01-01 13:30:00
我的目標是獲得一個結果,看起來像
id | parent_id | user_id | event_time
----------------------------------
1 | 1 | 123 | 2015-01-01 01:00:00
2 | 1 | 123 | 2015-01-01 01:15:00
3 | 1 | 123 | 2015-01-01 02:05:00
4 | 4 | 123 | 2015-01-01 13:10:00
5 | 4 | 123 | 2015-01-01 13:20:00
6 | 4 | 123 | 2015-01-01 13:30:00
所以你的問題是*不*如何把一個條件的窗口函數,但如何計算與postges會話,對不對?這是回答。現在找不到它。 – usr
你可以發表表格的樣本數據及其關係嗎?你怎麼需要這些數據? – Viki888