비밀번호

커뮤니티2

  • 흐림속초22.0흐림북춘천21.7흐림철원22.3구름많음동두천22.4흐림파주23.1흐림대관령18.6흐림춘천21.4비백령도21.9구름많음북강릉22.7구름많음강릉25.9구름많음동해23.9흐림서울24.3비인천22.7흐림원주21.6박무울릉도23.0흐림수원22.7흐림영월20.0흐림충주22.1흐림서산24.4흐림울진23.7흐림청주23.9흐림대전23.2흐림추풍령19.4흐림안동21.2흐림상주20.5흐림포항23.5흐림군산23.3흐림대구22.2흐림전주23.6박무울산22.9흐림창원24.8흐림광주24.4흐림부산24.9흐림통영24.9흐림목포25.1흐림여수24.1흐림흑산도23.8흐림완도24.7흐림고창23.9흐림순천20.5박무홍성23.9흐림서청주22.3흐림제주25.7흐림고산25.0흐림성산26.1구름많음서귀포26.4흐림진주23.5흐림강화22.3흐림양평22.0흐림이천22.2흐림인제20.6흐림홍천21.3흐림태백19.7흐림정선군20.1흐림제천20.4흐림보은20.1흐림천안22.4흐림보령24.7흐림부여23.3흐림금산21.1흐림세종22.8흐림부안24.0흐림임실21.4흐림정읍24.6흐림남원22.0흐림장수19.8흐림고창군24.3흐림영광군24.2흐림김해시24.4흐림순창군22.5흐림북창원25.7흐림양산시24.9흐림보성군23.4흐림강진군24.1흐림장흥24.0흐림해남25.6흐림고흥23.2흐림의령군21.6흐림함양군21.0흐림광양시23.7흐림진도군25.4흐림봉화20.0흐림영주20.5흐림문경20.6흐림청송군19.3흐림영덕21.1흐림의성20.7흐림구미21.5흐림영천20.7흐림경주시23.1흐림거창20.4흐림합천22.0흐림밀양23.3흐림산청21.2흐림거제24.8흐림남해25.2흐림북부산25.1
  • 2025.07.16(수)

구글애널리틱스[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

검색결과는 총 62건 입니다.    글쓰기
1 2 3 4