BigQuery에서 Google 애널리틱스 세션을 계산해 보세요. #1
2503 단어 GoogleAnalyticsBigQuery
무엇을 할까?
Google 애널리틱스 세션 정의 (htps : // 꼬리 rt. 오, ぇ. 코 m / 아나 ly 치 cs / 안수 r / 2731565? hl = 그럼),
의 느낌의 session 의 카운트를 BigQuery 로 해 보자고 하는 기획.
이번
#1
에서는 정의 1,2 를 실시합니다.준비
schema.json
[
{"name": "datetime", "type": "TIMESTAMP", "mode": "required"},
{"name": "user_id", "type": "string", "mode": "required"}
]
data.json
{"datetime":"2019-11-30T00:00:00","user_id":"a"}
{"datetime":"2019-11-30T00:29:59","user_id":"a"}
{"datetime":"2019-11-30T01:00:00","user_id":"a"}
{"datetime":"2019-11-30T01:30:00","user_id":"a"}
{"datetime":"2019-11-30T00:00:00","user_id":"b"}
{"datetime":"2019-11-30T00:00:10","user_id":"b"}
{"datetime":"2019-11-30T00:30:09","user_id":"b"}
테이블 생성 및 데이터 로드
bq load --source_format=NEWLINE_DELIMITED_JSON YOURPROJECT:YOURDATASET.access_log ./data.json ./schema.json
SQL을 작성해 봅니다.
같은 유저의 한전의 access 가 1800 초 이상전이면, 새로운 세션이라고 하는 플래그를 세운다.
라는 Query를 작성해 보겠습니다. 다음과 같습니다.
-- #3
SELECT
user_id,
((datetime - prev_seconds) / (1000*1000) )as duration_sec,
IFNULL(datetime - prev_seconds >= 30 * 60 * 1000 * 1000, TRUE) AS start_of_session,
datetime,
prev_seconds
FROM (
-- #2
SELECT
user_id,
datetime,
LAG(datetime, 1) OVER(PARTITION BY user_id ORDER BY datetime) AS prev_seconds
FROM (
-- #1
SELECT
*
FROM
[YOURPROJECT:YOURDATASET.access_log] ) AS activity_log)
그리고이 Query의 결과는
이런 느낌이 들고 무사히 start_of_session = true 라는 플래그가 붙었습니다.
다음 번
다음 번에는 정의 3을 수행합니다.
Reference
이 문제에 관하여(BigQuery에서 Google 애널리틱스 세션을 계산해 보세요. #1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rysk92/items/f41c615a5f8113bfc6c3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)