建立事件串流
在前一個練習中,我們將日間水療的資料拆解為進出場事件的串流。將資料做 unpivot 之後,我們就能進入下一步:為整個事件串流排序。
前一個練習的結果現在位於名為 #StartStopPoints 的暫存資料表。此表的欄位為 CustomerID、TimeUTC、EntryCount 和 StartOrdinal。這是你在本練習中唯一需要用到的欄位。 TimeUTC 代表事件時間,EntryCount 表示該事件的淨變化(+1 或 -1),而 StartOrdinal 只會出現在入場事件,代表入場的順序。
本練習屬於課程
SQL Server 的時間序列分析
練習說明
- 填入適當的視窗函式(
ROW_NUMBER()),依時間順序建立一個依序的報到與離場事件串流。 - 以客戶 ID 分割(PARTITION),對每位使用者各自計算結果。
- 依事件時間排序,若時間相同,則以入場序號欄位來決定先後。
動手互動練習
試著完成這個範例程式碼,體驗一下這個練習。
SELECT s.*,
-- Build a stream of all check-in and check-out events
___() OVER (
-- Break this out by customer ID
PARTITION BY s.___
-- Order by event time and then the start ordinal
-- value (in case of exact time matches)
ORDER BY s.___, s.___
) AS StartOrEndOrdinal
FROM #StartStopPoints s;