티스토리 뷰

Google Analytics를 사용해 보셨다면 ‘세션’이라는 용어에 익숙하실 것입니다. Universal Analytics(GA3)에서는 세션 단위로 데이터를 수집하여 지표를 측정했지만, GA4에서는 데이터 수집 방식이 달라져 주의가 필요합니다. GA4의 세션 관련 지표는 혼란을 일으킬 수 있습니다.

 

이번 글에서는 세션의 개념을 자세히 살펴보고, GA4에서의 세션이 어떻게 다른지 알아보겠습니다.

 

세션이란?

세션 관련해서 구글 가이드 문서에 따르면

 

- 세션은 사용자가 웹사이트 또는 앱과 상호작용하는 기간입니다.
- 세션은 사용자가 앱을 포그라운드에서 열거나 페이지나 화면을 보고 현재 활성화된 세션이 없는 경우 시작됩니다.
- 세션 수 : 고유 세션 ID 수를 추정하여 사이트나 앱에서 발생하는 세션 수를 계산합니다.

 

예를들어 유저가 브라우저 탭에서 페이지를 열고 이메일을 확인하거나 다른 일을 하다가 2시간 뒤에 다시 돌아와서 브라우징을 할 수 있겠죠? GA4에서는 이를 페이지 뷰가 있는 세션으로 보고 2시간 뒤에 사용자 참여로 간주하고 새로운 세션으로 기록합니다.

  1. 첫 번째 세션:
    • 사용자가 오전 9시에 웹사이트의 특정 페이지를 엽니다.
    • 페이지 조회(page view) 이벤트가 발생하여 세션이 시작됩니다.
  2. 두 번째 세션:
    1. 사용자가 같은 페이지를 오후 2시에 다시 돌아와 사이트를 탐색합니다

이때 새로운 세션이 시작되지만 페이지 조회 이벤트는 기록되지 않습니다.→ 두 번째 세션이 사용자 참여로만 기록됩니다

 

빅쿼리로 실제 어떤 케이스인지 특정 유저의 로그를 한 번 확인 해보겟습니다.

 

빅쿼리 조회 결과 - 페이지뷰가 없는 세션

 

이렇게 페이지뷰 이벤트가 없는 두 번째 세션이 생기며, 이는 참여율(Engagement Rate) 지표로 나타납니다.

 

참여율 = 참여 세션 수 / 총 세션 수

 

참여 세션의 정의
- 10초 이상 머문 경우 (GA4 설정 : 10~60초로 조정 가능)
- 페이지뷰가 2회 이상 발생한 경우
- 10초이내로 머물러도 전환이벤트를 발생시킨 경우

 

GA4 인터페이스

 

이런 유저가 많아지면 세션 기반의 지표(예: 세션당 페이지뷰, 세션당 평균 참여시간)가 낮아집니다.

 

세션당 페이지뷰 수 계산 예시:

페이지뷰 수 / 세션 수 = 10 / 1 = 10

 

위와 같은 유저의 행동이 늘어나면:

페이지뷰 수 / 세션 수 = 10 / 2 = 5

 

페이지뷰 이벤트가 포함되지 않은 세션이 발생하니 지표가 감소하게 됩니다.(분모가 커지므로)

 

따라서 GA3에서 사용하던 세션 기반의 지표는 주의해서 사용해야 하며, 이벤트나 참여 관련 지표(참여 세션)를 보는 것이 좋습니다.

(GA4와 GA3의 데이터 수집 방식도 다릅니다)

 

 

자.. 그리고 또 있습니다.

 

세션 데이터의 현실.. 빅쿼리를 열어보면 .. 더 조심해야겠구나 라는 생각이 들껍니다.

 

일단 절대 세션수 ≠ session_start 이벤트의 수 가 아닙니다.

 

왜그런지 직접 조회해보죠!

 

session_start 이벤트가 없는 세션이 있다?

아래 특정 유저의 세션을 특정해서 조회해봤습니다.

event_name 컬럼에 session_start 이벤트는 없고 다른 이벤트만 있죠?

 

session_start 이벤트가 없는 세션 ID

 

하나의 세션에 session_start 이벤트가 2개?

이런 상황은 빈번하지 않지만 발생할 수 있습니다. 하나의 세션에 두 개의 세션 이벤트가 발생했고, 심지어 사용자 아이디도 다릅니다.

GA4 인터페이스에서는 당연히 단일 세션으로 계산하지 않을 것 같지만 빅쿼리에서는 이런 케이스 때문에 user_pseudo_id와 ga_session_id를 조합해서 각 세션에 대한 고유 식별자를 만들어서 session 을 카운팅 해야됩니다. 

concat(user_pseudo_id, (select value.int_value from unnest(event_params) where key = 'ga_session_id')) as session_id,

하나의 세션에 session_start가 두개

 

하나의 세션에 2개 이상의 소스?

GA3에서는 세션 윈도우(30분)가 지나면 완전히 새로운 세션이 시작되지만, GA4에서는 기존 세션이 계속 되기 때문에 이렇게 소스가 1개 이상 발생할 수 있습니다.

하나의 세션에 2개 이상의 소스

 

GA에서 세션은 어떻게 계산될까?

 

결론

 

구글 애널리틱스에서도 세션수를 집계할 때 추정값을 사용합니다.

실제로 빅쿼리에 count(distinct ga_sesssion_id) 를 집계하면 성능에 영향을 줍니다..

그런데 전 세계에서 이걸 조회하는데 이걸 진짜 집계를 ?? 불가능하죠

그래서 HyperLogLog ++ (가이드 링크)라는 알고리즘을 적용해서 추산한 값을 보여줍니다.

 

Google 애널리틱스의 고유 개수 근사값  |  Google Analytics  |  Google for Developers

의견 보내기 Google 애널리틱스의 고유 개수 근사값 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. 민하즈 카지, Google 애널리틱스 Developer Advocate – 2022년 10월

developers.google.com

실제로 성능을 눈으로 확인해보죠

 

ga_session_id를 고유하게 카운팅 해보는 쿼리로 비교를 해보겠습니다.

COUNT(DISTINCT ga_session_id)

 

  HLL_COUNT.EXTRACT(HLL_COUNT.INIT(ga_session_id, 14))

 

차이가 보이시나요? (참고로 데이터 하루치만 조회했고 쿼리 결과는 같습니다)

 

모든면에서 더 효율적인 처리를 하고 있음을 알 수 있습니다.

 

사실 GA4에서는 세션이라는 개념은 더 이상 의미가 없고 지금까지 위의 예시를 통해 확인할 수 있었습니다.

 

그럼에도 세션 지표를 무조건 써야된다면 참여 세션지표를 사용하는게 좋습니다.

 

 

이제 이걸 통해서 다음 글에서는 GA4의 꽃 세그먼트 분석에 대해서 알아보겠습니다.

 

(세그먼트 기능을 쓰려면 세션에 대한 이해가 꼭 필요하기 때문에 이번 글부터 시작하게 되었습니다.)

최근에 올라온 글