WINDOW
- 어떤 사용자 세션에서 시간순으로 봤을 때
- 앞 세션의 채널이 무엇인지 알고 싶다면?
- 혹은 다음 세션의 채널이 무엇인지 알고 싶다면?
LAG함수
%%sql
SELECT usc.*, st.ts, LAG(channel, 1) OVER (PARTITION BY userId ORDER BY ts) prev_channel
FROM raw_data.user_session_channel usc
JOIN raw_data.session_timestamp st ON usc.sessionid = st.sessionid
ORDER BY usc.userid, st.ts
LIMIT 100;
- LAG의 두번째 인자 숫자는 몇번째 전 데이터를 읽어 올까 하는 설정
- previous channel에 유저아이디, 시간순으로 정렬된 channel의 정보를 한칸씩 밀어서 가져옴
%%sql
SELECT usc.*, st.ts, LAG(channel, 1) OVER (PARTITION BY userId ORDER BY ts DESC) prev_channel
FROM raw_data.user_session_channel usc
JOIN raw_data.session_timestamp st ON usc.sessionid = st.sessionid
ORDER BY usc.userid, st.ts
LIMIT 100;
- 파티션 뒤에 디센트를 붙여주면 다음 넘어가는 도메인을 뽑을 수 있음