イベントのストリームを作る
前の演習では、デイスパのデータを入場と退場のストリームに分解しました。データをアンピボットすることで、次のステップであるストリーム全体の並び替えに進めます。
前の演習の結果は、一時テーブル #StartStopPoints に格納されています。このテーブルの列は CustomerID、TimeUTC、EntryCount、StartOrdinal です。この演習で使用するのはこれらの列だけです。 TimeUTC はイベント時刻、EntryCount はそのイベントによるネットの変化量(+1 または -1)を表し、StartOrdinal は入場イベントでのみ現れ、入場の順序を示します。
この演習はコースの一部です
SQL Serverで学ぶ時系列分析
演習の手順
- 適切なウィンドウ関数(
ROW_NUMBER())を記述して、チェックインとチェックアウトのストリームを時系列順に作成します。 - ユーザーごとの結果を計算するために、顧客 ID でパーティション分割します。
- イベント時刻で並べ替え、同時刻のタイは start ordinal の値を使って解決します。
実践的なインタラクティブ演習
このサンプルコードを完成させて、この演習に挑戦してみましょう。
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;