この例では、オンライン ストアのクリックストリーム データを使用して、ユーザーがホームページを閲覧して10分以内にチェックアウト ページを訪れたセッションを検索します。ホームページとチェックアウト ページの間に表示される行の数を事前に知ることはできないので、この例ではLAGまたはLEAD式を使用できません。このためFilter構文要素を使用します。
入力
クリックストリームuserid |
sessionid |
clicktime |
pagetype |
1 |
1 |
10-10-2012 10:15 |
home |
1 |
1 |
10-10-2012 10:16 |
view |
1 |
1 |
10-10-2012 10:17 |
view |
1 |
1 |
10-10-2012 10:20 |
checkout |
1 |
1 |
10-10-2012 10:30 |
checkout |
1 |
1 |
10-10-2012 10:35 |
view |
1 |
1 |
10-10-2012 10:45 |
view |
2 |
2 |
10-10-2012 13:15 |
home |
2 |
2 |
10-10-2012 13:16 |
view |
2 |
2 |
10-10-2012 13:43 |
checkout |
2 |
2 |
10-10-2012 13:35 |
view |
2 |
2 |
10-10-2012 13:45 |
view |
SQL呼び出し
SELECT * FROM Npath (
ON clickstream PARTITION BY userid ORDER BY clicktime
USING
Symbols (
pagetype='home' AS home,
pagetype <> 'home' AND pagetype <> 'checkout' AS clickview,
pagetype='checkout' AS checkout
)
Pattern ('home.clickview*.checkout')
Result (
FIRST(userid of ANY(home, checkout, clickview)) AS userid,
FIRST (sessionid of ANY(home, checkout, clickview)) AS sessioinid,
COUNT (* of any(home, checkout, clickview)) AS cnt,
FIRST (clicktime of ANY(home)) AS firsthome,
LAST (clicktime of ANY(checkout)) AS lastcheckout
)
Filter ( FIRST (clicktime + interval '10' minute OF ANY (home)) > FIRST (clicktime of any(checkout)) )
Mode (NONOVERLAPPING)
);
出力
userid |
sessionid |
cnt |
firsthome |
lastcheckout |
1 |
1 |
4 |
2012-10-10 10:15:00 |
2012-10-10 10:20:00 |