[BigQuery] 다시 활성화된 사용자 행동 변화 분석을 위한 사전 준비 질의
1946 단어 BigQuery
구상 독자: 미래의 자신
하고 싶은 일
잠시 사용하지 않았지만 다시 사용하기 시작한 사용자의 행동은 이전과 달라졌나요?의 통계 정보
가정, 서비스 특성, 로그 디자인과 사용 규약에 따라 어떤 변화가 달라졌는지 알고 싶거나 조사하고 싶기 때문에 빅Query의 SQL에는'동일한 사용자 내에서 이전과 이후를 구분하는 기간'의 SQL만 남는다.
여기
일반적인 용어를 모르기 때문에, 여기서 자신의 흐름의 정의를 정리한다.
Phase(N): 이 서비스를 열심히 사용하는 동안.활동 기간이란 일정 기간 동안 비워둔 후 여러 번 활성화된다고 가정하기 때문에 N번째 활동 기간에 PhaseN을 쓴다.
Phase와 Phase 사이에 있습니다.휴면기간이란 통상적인 의미와 달리 미래에서 볼 때 다시 활동을 시작할 줄 아는 기간을 가리킨다
그림에서 보듯이 바로 이런 느낌이다.
행동 로그:time(Date형, 분할표에 자주 사용되는 구역), id(개인의 정보, 장치의 ID나 쿠키의 값 등을 식별하는 데 사용되는 값), action(흥미로운 행동은 보통이다. 실제로는 여러 개가 있어야 한다)의 형식으로 모든 action에 저장된 일지에 빅Query(event 표)에 저장됩니다.
다시 말하면 "span은 일정 간격 이상(약 1개월 정도)에서 행동일지를 id와 Phase로 나누어 동작을 분석한다"는 것이다.
SQL 샘플
WITH
ordered_action AS (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY time DESC) as ordered #idごとにaction=hogeが発生した順番を付与
FROM
dataset.event
WHERE
action='hoge'
),
span_action AS (
SELECT
a.*,
CASE WHEN DATE_DIFF(time, time, DAY) > 28 THEN 1 ELSE 0 END as span # Phaseの最初はspan=1になる。ちなみにMONTH>=1にすると 1/31~2/1でもtrueになるので注意
FROM
ordered_action a
LEFT OUTER JOIN #外部結合にしないと最初のログが消える
ordered_action b
ON
a.id=b.id
AND
a.ordered+1=b.ordered #ここの同一テーブルでJOINの処理のサンプルがなかなか見つけられずに車輪の再発明を繰り返している
),
phase_action AS (
SELECT
*,
SUM(span) OVER (PARTITION BY VISID ORDER BY DATE_TIME ROWS UNBOUNDED PRECEDING) as phase #cumsumすることでpahseがインクリメンタルされる
FROM
span_action
)
SELECT
id,
pahse,
count(*) #action hogeの数を数えてるだけ。ここまでくれば真にやりたいことに合わせて煮るなり焼くなりできるはず
FROM
phase_action
GROUP BY
id, phase
Reference
이 문제에 관하여([BigQuery] 다시 활성화된 사용자 행동 변화 분석을 위한 사전 준비 질의), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/naosugi1987/items/141970ff090c8d88d353
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
일반적인 용어를 모르기 때문에, 여기서 자신의 흐름의 정의를 정리한다.
Phase(N): 이 서비스를 열심히 사용하는 동안.활동 기간이란 일정 기간 동안 비워둔 후 여러 번 활성화된다고 가정하기 때문에 N번째 활동 기간에 PhaseN을 쓴다.
Phase와 Phase 사이에 있습니다.휴면기간이란 통상적인 의미와 달리 미래에서 볼 때 다시 활동을 시작할 줄 아는 기간을 가리킨다
그림에서 보듯이 바로 이런 느낌이다.
행동 로그:time(Date형, 분할표에 자주 사용되는 구역), id(개인의 정보, 장치의 ID나 쿠키의 값 등을 식별하는 데 사용되는 값), action(흥미로운 행동은 보통이다. 실제로는 여러 개가 있어야 한다)의 형식으로 모든 action에 저장된 일지에 빅Query(event 표)에 저장됩니다.
다시 말하면 "span은 일정 간격 이상(약 1개월 정도)에서 행동일지를 id와 Phase로 나누어 동작을 분석한다"는 것이다.
SQL 샘플
WITH
ordered_action AS (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY time DESC) as ordered #idごとにaction=hogeが発生した順番を付与
FROM
dataset.event
WHERE
action='hoge'
),
span_action AS (
SELECT
a.*,
CASE WHEN DATE_DIFF(time, time, DAY) > 28 THEN 1 ELSE 0 END as span # Phaseの最初はspan=1になる。ちなみにMONTH>=1にすると 1/31~2/1でもtrueになるので注意
FROM
ordered_action a
LEFT OUTER JOIN #外部結合にしないと最初のログが消える
ordered_action b
ON
a.id=b.id
AND
a.ordered+1=b.ordered #ここの同一テーブルでJOINの処理のサンプルがなかなか見つけられずに車輪の再発明を繰り返している
),
phase_action AS (
SELECT
*,
SUM(span) OVER (PARTITION BY VISID ORDER BY DATE_TIME ROWS UNBOUNDED PRECEDING) as phase #cumsumすることでpahseがインクリメンタルされる
FROM
span_action
)
SELECT
id,
pahse,
count(*) #action hogeの数を数えてるだけ。ここまでくれば真にやりたいことに合わせて煮るなり焼くなりできるはず
FROM
phase_action
GROUP BY
id, phase
Reference
이 문제에 관하여([BigQuery] 다시 활성화된 사용자 행동 변화 분석을 위한 사전 준비 질의), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/naosugi1987/items/141970ff090c8d88d353
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
WITH
ordered_action AS (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY time DESC) as ordered #idごとにaction=hogeが発生した順番を付与
FROM
dataset.event
WHERE
action='hoge'
),
span_action AS (
SELECT
a.*,
CASE WHEN DATE_DIFF(time, time, DAY) > 28 THEN 1 ELSE 0 END as span # Phaseの最初はspan=1になる。ちなみにMONTH>=1にすると 1/31~2/1でもtrueになるので注意
FROM
ordered_action a
LEFT OUTER JOIN #外部結合にしないと最初のログが消える
ordered_action b
ON
a.id=b.id
AND
a.ordered+1=b.ordered #ここの同一テーブルでJOINの処理のサンプルがなかなか見つけられずに車輪の再発明を繰り返している
),
phase_action AS (
SELECT
*,
SUM(span) OVER (PARTITION BY VISID ORDER BY DATE_TIME ROWS UNBOUNDED PRECEDING) as phase #cumsumすることでpahseがインクリメンタルされる
FROM
span_action
)
SELECT
id,
pahse,
count(*) #action hogeの数を数えてるだけ。ここまでくれば真にやりたいことに合わせて煮るなり焼くなりできるはず
FROM
phase_action
GROUP BY
id, phase
Reference
이 문제에 관하여([BigQuery] 다시 활성화된 사용자 행동 변화 분석을 위한 사전 준비 질의), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/naosugi1987/items/141970ff090c8d88d353텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)