비밀번호

커뮤니티2

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

[GA4] 빅쿼리의 Timestamp 관련 지표 (유저 / 세션 /이벤트) 비교 및 활용하기





GA4 를 사용한다는 것은

우리 웹 사이트에 방문한 사람들의 행동 양상에 대해 궁금증이 많은 분들일 것 같은데요,

 

"얼마나 많이 들어왔을까" --- (세션수 , 사용자 수 등)

"어떻게 들어왔을까" --- (소스 /매체)

"어떤 행동을 했을까" --- (이벤트)

오늘은 이 "어떤 행동을 했을까" 와 관련되어서 , 

 

특히 GA4 에 쌓이는 시간 관련 지표인 Timestamp 관련하여 공유해볼까 합니다.

 

[Unix timestamp]

우선 타임 스탬프에 대한 이야기를 짧게 하고 들어갈까해요.

이름 자체로 timestamp 는 '시간 도장' 인데

1970년 1월 1일 00:00:00 UTC 로부터 현재까지의 누적된 초(seconds) 값을 의미해요.

유닉스를 개발한 연구소에서 만든 지표인데 일반인이 보기엔  이렇게 길고 알아보기 힘든 값이죠

 

'1722783606516394'


그래서 시점 확인이 필요할 때가 있으면 보통은 이렇게 전환기에 값을 넣어서 확인합니다

전환기 예시 링크 : https://time.is/ko/Unix%20time%20converter

 

저희는 이 유닉스 타임스탬프 형태로 생긴 ga4 의 시간 값들을 알아볼거에요.

 

[유저가 언제 처음 사이트에 들어왔을까 - user_first_touch_timestamp]

만약 유저가 처음으로 사이트에 들어온 시점이 궁금하다면

user 필드에 있는 'user_first_touch_timestamp' 를 사용할 수 있습니다.

 

출처 : [GA4] Bigquery Export 스키마 : https://support.google.com/analytics/answer/7029846?hl=ko#zippy=%2Cuser

 

이 부분은 이전 글에서 언급했던 부분과 같이 생각할 수 있는데요,

이전글 : http://googleanalytics360.com/board/view.php?bo_table=googleanalytics&wr_id=90&page=

 

user_pseudo_id 라는 지표가

첫 유입시의 time_stamp 를 활용해서 만들어진 값이라는 점 이죠,



실제 쿼리에서 확인해보면

user_first_touch_timestamp 값이 user_pseudo_id에서 사용되고 있는 것을 확인할 수 있습니다.

(*다만, 아래에서 테스트를 해보면서 조금 다른 경우도 있을 수 있다는 걸 공유드릴 예정입니다)


[세션은 언제 시작되었을까?]

세션이 시작된 시점은 ga_session_id 라는 지표에 수집되고 있습니다.

쿼리에서 꺼내 써야한다면

 

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

이렇게 event_params 를 unnest 해주면 됩니다.


궁금증!

그럼, 첫 번째 들어온 세션의 시점(ga_session_id) 은

위에서 언급한 '유저의 첫 방문 시점의 시점인' user_first_touch_timestamp 와 동일하지 않을까?


하는 궁금증이 생겨서 first_visit 이벤트 필터를 걸고 비교를 해보았습니다.


그랬더니 결과는 위의 user_first_touch_timestamp 예시처럼 같은 경우도 있지만,

아래 이미지처럼 미묘하게 다른 경우들도 확인 되었어요.

 

ga_session_id : 1722783605

user_first_touch_timestamp : 1722783606516394

user_pseudo_id:1675675245.1722783605



유닉스 타임 스탬프 변환기에

user_first_touch_timestamp : 1722783606516394 ,

ga_session_id: 1722783605 값을 넣어보면





 

1722783606516394 값은 인식을 못해서 '1722783606' 까지 넣었을 때

Mon Aug 05 2024 00:00:06 UTC+0900 (한국 표준시) 라고 나왔고,

 

1722783605 값은

Mon Aug 05 2024 00:00:05 UTC+0900 (한국 표준시) 라고 나왔습니다.

 

ga_session_id 값이 1초 정도 user_first_touch_timestamp 값 보다 빨리 생성된 것으로 보여요

 

결론적으로는 아래와 같이 정리하였습니다.

 

"이론상으로는 가장 첫번째 세션이 시작한 시점과 유저의 첫 진입 시점은 동일해야하지만

실제 수집된 값으로는 미세하게 차이가 있을 수 있고,

user_pseudo_id 에 쓰인 시간 값은 ga_session_id 의 값을 사용해 생성된다고 하는게 더 맞는 것 같다."


[이벤트는 언제 발생한 것일까?]

위에서 나온 timestamp 들은

유저의 첫 방문 (user_first_touch_timestamp) , 세션의 시작 (ga_session_id) 값이였죠

 

마지막으로 알아볼 것은 event_time_stamp 입니다.

 

ga4 에서 이벤트 옆에 바로 수집되는 값이에요.

해당 값은 각 이벤트마다 수집되고, unnest 도 필요 없이 바로 값을 가져올 수 있습니다.





[Timestamp 값 활용하기]

그럼 위에서 배운 값들을 어떤식으로 활용할 수 있을까요?

 

1. 데이터 검수

> 특정 브라우저에서 이벤트들을 발생시키면서 이벤트 정상 수집 여부를 체크해야할 때

 

본인 (혹은 특정인의) CID (=user_pseudo_id) 를 필터로 하고, event_timestamp 로 정렬해주면

그 cid 에서 발생한 이벤트들을 시간 순서로 확인할 수 있습니다.


SELECT * FROM '데이터 소스` 

WHERE user_pseudo_id = '체크하려는 CID'

order by event_timestamp

 


2. 유저 세그먼트 구할 때

> 유저 세그먼트에 대한 조건을 만족한 데이터를 추출할 수 있어요 

만약 "특정 페이지를 조회했으면서 구매까지 한 유저 세그먼트' 를 구하고 싶다면

아래처럼 where 절에 user_pseudo_id in (특정 페이지 조건 + purchase 이벤트 인 경우에 대한 쿼리식)

으로 활용할 수 있죠.



select 

         user_pseudo_id ,

         (select value.int_value from unnest(event_params) where params.key='ga_session_id') as sid,

         ecommerce.transaction_id

FROM `데이터 소스`  

where user_pseudo_id in (

                                    SELECT  user_pseudo_id

                                    FROM `데이터 소스` 

                                    where (select value.string_value from unnest(event_params) where key = 'page_location') like '%페이지 필터%')

 and event_name = 'purchase'

order by user_pseudo_id, sid

 


그 외에 다른 예시들은 이후에 또 추가해볼게요 :)

 

그럼 오늘은 여기서 ga4 를 빅쿼리에 연결했을 떄 활용할 수 있는 유저 / 세션 / 이벤트에 대한 timestamp 값을 알아보았습니다.

 

함께 소통하면 좋을 내용 있다면 언제든 댓글 남겨주세요!

감사합니당









 

전체댓글0