비밀번호

커뮤니티2

구글애널리틱스[Google Analytics]구글애널리틱스 커뮤니티입니다.

[GA4 세션] 빅쿼리에서 세션수 집계하는 방법 | 구글애널리틱스4



 

구글 애널리틱스를 다룰 때 가장 많이 보게되는 지표 중 하나는 '세션수'다.

 

누군가에게 단순하게 '세션수가 무엇이냐'에 대해 답한다면

 

'웹 사이트 혹은 앱에 발생한 유입수' 라 단순화 할 수 있지만

정의와 관련해서 좀 더 파보면 단순 '유입' 보다 신경써야하는 부분이 많다

 

 

<구글 애널리틱스 공식 도움말 참고>

https://support.google.com/analytics/answer/9191807?hl=ko


우선 구글 애널리틱스의 백과사전 같은 존재인 도움말에서의 세션수 정의는 다음과 같다.


"세션은 사용자가 웹사이트 또는 앱과 상호작용하는 기간입니다."

 

그럼 어떤 상황에서 사용자가 '상호 작용 했다' 고 인지될까?

 


[세션으로 집계되는 상황]

GA4 도움말에 의하면 세션이라 인식되는 대상은 다음과 같다. 

 

"애널리틱스에서는 사용자가 포그라운드에서 앱을 열거나

페이지 또는 화면을 보고 현재 활성화된 세션이 없을 때 세션이 시작되고, 

기본적으로 세션은 사용자의 활동이 멈춘 후 30분 뒤에 종료(타임아웃)됩니다."

 


즉, 현재 진행되고 있는 세션이 없는 상태에서 사이트에 들어오면 세션이 시작되고,

다른 이벤트들이 발생되지 않은지 30분이 지나는 시점에 세션이 끝난다.

*이 30분 조건은 GA4 관리 창에서 조정할 수 있음

 

예를 들어서

 

 

위처럼 유저 A 가 유튜브 광고를 클릭해서 해당 사이트에 들어갔다가

30분이 지나지 않은 시점에 다시 네이버 검색으로 사이트에 접속하게 되면

 

유저 A 는 1개의 세션에 유튜브 / 영상 광고 , 네이버/검색 광고로 유입되었다는 정보가 수집된다.

 

그럼 이어서 좀 더 DEEP 하게 세션수가 어떤 구조로 실제 GA4 에 수집되고 있고,

세션수는 어떻게 (빅쿼리에서) 집계되는 것인지 이어서 알아보자

 
[빅쿼리를 써야하는 두 가지 중요한 이유]


만약 빅쿼리에 대한 니즈 없이 GA4 데이터 소스만 활용한다면

GA4의 탐색 보고서 혹은 루커 스튜디오 정도만으로도 충분하다.

 

하지만 빅쿼리를 사용하게되면 아래의 강력한 장점이 있다.

 

1) 할당량과 무관하게 데이터 시각화 가능


*할당량 이슈란?

GA4 의 데이터를 실시간으로 보고서에 불러올 때 프로젝트 별, 시간별, 동시요청 시에 대한

할당량에 제한이 있어 보고서 생성시의 제약 .

(빅쿼리 연결 없이 GA 데이터 소스를 그대로 사용할 때 발생 )

 

*참고: https://developers.google.com/analytics/devguides/reporting/data/v1/quotas

 

2) 실시간 RAW 수집 데이터 확인 가능

GA4에 빅쿼리를 연동하게 되면 GA4 데이터를 위해

빅쿼리에 프로젝트 , 데이터셋 , 테이블이 자동으로 생성되는데

 

그 중 events 테이블은 약 1일에 1번 정제된 데이터가 쌓이는 곳이고

intraday 가 당일의 실시간 데이터가 쌓이므로

 

해당 테이블에서는 방금 내가 이벤트를 발생시켰더라도 데이터 전송 여부를 바로 확인할 수 있게 된다.


위의 빅쿼리의 장점을 활용하기 위해 빅쿼리를 연결한 상태라면

session 데이터의 수집 구조를 알아보자 :)

 


[빅쿼리에 쌓이는 세션 관련 데이터]


결론적으로 말하면 빅쿼리에서 세션수는

user_pseudo_id 와 session_id 를 결합해서 만든다.

 

*GA 도움말에도 아래처럼 명시되어 있음

 

우선 해당 가이드에 언급되어 있는 session_id , user_pseudo_id 에 대해서 알아보자.


[ga_session_id (session_id]

빅쿼리에 연결된 ga 데이터에서 session_start 라는 이벤트를 where 절로 걸어서 확인해보면

 

SELECT * FROM `ga 데이터`  where event_name = 'session_start'

 

event_params 에 'ga_session_id' 라 해서

요리보고 저리봐도 session 관련 구분자로 보이는 값이 하나 있다.

 

session_start 는 말 그대로 세션이 시작될 때

ga 에서 자동으로 수집해주는 이벤트인데

 

ga_session_id 는 이 '세션이 시작된 시점 값' 이다.

 

인터넷에 'Unix timestamp 변환기' 라 검색하고 ga_session_id 값을 넣으면

아래처럼 시간으로 변환 되는걸 볼 수 있다.

 

 

이 ga_session_id 값은 session_start 외에 다른 이벤트들에도 따라다니면서

이후 발생하는 이벤트들이 어느 session_id 에서 발생한건지 구분해준다.

 

근데 위에서 지금

session_start 라는 이벤트도 있고,ga_session_id 라는 세션을 위한 구분자도 있는데

 

왜 굳이 ga_session_id + user_pseudo_id 를 결합해서 세션수를 집계할까?

 

그 이유는

1) session_start 가 누락 수집 되는 경우가 있을 수 있음

프로젝트를 하면서 ga 의 자동 수집 이벤트가 발생하지 않는 경우들도 확인했었고,

실제로 구글 애널리틱스 도움말에서도 세션 id 와 session_start 가 연결되지 않았을 수 있다고 한다


 
 

2) ga_session_id 만으로는 고유한 식별자가 될 수 없음

위에서 언급한 것 처럼 ga_session_id 는 세션이 시작된 시점의 time_stamp다.

 

만약 엄청 낮은 확률일지라도, 유저가 많이 접속하는 사이트 혹은 앱에서

조금의 시간차이 없이 동시에 접속 하는 사람이 있었다면?

 

( 국민 6%가 몰린 동탄역 롯데캐슬 로또 청약 신청일의 청약홈을 상상해보자^^)


그 사람들은 같은 ga_session_id 를 갖게 되니 고유한 값이라 할 수없다.

 

그럼 user_pseudo_id 가 무엇이길래 ga_session_id와 결합해서

세션수를 카운트하는 고유값으로 으로 사용하는걸까?

 

 

[user_pseudo_id란?]

user_pseudo_id를 이해하려면 ga 의 쿠키를 이해해야한다.

 

쿠키는 '쿠키 수집 동의' 등등 여러 알람이 있으니 많은 사람들이 익숙한 용어인데

단순히 표현하면 해당 사이트에 다녀간 흔적을 남기는 표시다.

 

GA 역시 그런 쿠키 값들을 수집하는데

"웹 페이지 우클릭 > 검사 > 개발창 > 애플리케이션" 에서 확인할수 있다.

 

지금 _ga 라는 쿠키에 'GA1.1.141576118.1662352900'가 수집 되어 있다

 

GA 빅쿼리에 있는 user_pseudo_id 가 바로 이 쿠키의 141576118.1662352900 값이다

 

이 값은 브라우저와 기기별로 부여되는 고유값과, 해당 쿠키값이 생성된 시점 ,

즉, 첫 유입시의 time_stamp 가 결합되어 있는 값이다.

 

예를 들어서 운 좋게 어떤 한 사람이 컴퓨터와 핸드폰으로

각각 크롬, 빙 같이 다른 브라우저를 동시에 들어가게 되면

 

time_stamp 는 같더라도 기기. 브라우저 등 다른 고유 값이 있으니 user_pseudo_id 는 총 4개가 생성된다.


이처럼  user_pseudo_id 는 이처럼 기기, 브라우저 단위로 생성되는 고유값이고

ga_session_id 는 특정 세션이 시작된 시점에 대한 고유값이니

 

이 두개를 결합하면

 

기기,브라우저별로 특정 세션이 발생할 때마다 카운트할 수 있는 고유값이 된다

 

[빅쿼리 세션수 집계 쿼리식]


그럼 마지막으로 위에서 알게된 내용들을 토대로 실제로 쿼리를 통해 세션수를 집계할 수 있다

 

                     SELECT  
count(distinct (concat(user_pseudo_id,'.',(select value.int_value from unnest(event_params) where key = 'ga_session_id'))))
FROM `ga 데이터 소스`
                     

*'ga_session_id' 값을 왜 아래처럼 표현하는지 궁금하다면? 아래 글을 참고해주세요!

(select value.int_value from unnest(event_params) where key = 'ga_session_id')

 

 

[GA4] GA4 데이터, 빅쿼리 Array/Struct/Unnest 활용하여 조회하기

http://googleanalytics360.com/board/view.php?bo_table=googleanalytics&wr_id=97

 

 

그럼 다들 즐거운 GA 스터디 하시고

피드백 있으시면 같이 공부해요~~

 




 

첨부파일
  • 스크린샷 2024-08-02 172921.png(741.0KB)

전체댓글0

1 2 3