비밀번호

커뮤니티2

  • 흐림속초23.9흐림북춘천26.0구름많음철원25.4흐림동두천26.5흐림파주25.7흐림대관령22.8흐림춘천26.4구름많음백령도24.3흐림북강릉24.5흐림강릉26.9흐림동해25.4구름많음서울29.1구름많음인천28.2흐림원주26.7비울릉도27.3구름많음수원27.5흐림영월24.5구름많음충주25.8구름많음서산27.3흐림울진26.0구름많음청주구름많음대전27.8구름많음추풍령24.0흐림안동26.2구름많음상주25.3구름많음포항28.0흐림군산28.4구름많음대구28.6흐림전주28.5구름많음울산26.3구름많음창원27.6비광주27.0구름많음부산28.6구름많음통영28.2비목포25.2흐림여수29.3흐림흑산도25.0흐림완도25.6흐림고창26.4흐림순천24.2흐림홍성27.0구름많음서청주25.2비제주27.9흐림고산27.6흐림성산28.9흐림서귀포28.9구름많음진주26.2흐림강화25.5구름많음양평26.5구름많음이천26.2흐림인제25.3흐림홍천25.6흐림태백23.0흐림정선군24.1흐림제천24.4구름많음보은25.0구름많음천안26.2흐림보령30.0흐림부여27.1흐림금산24.7흐림세종27.1흐림부안28.5흐림임실25.2흐림정읍28.2구름많음남원27.0구름많음장수23.4흐림고창군27.1흐림영광군25.7구름많음김해시27.8흐림순창군26.5구름많음북창원28.4구름많음양산시27.8흐림보성군27.1흐림강진군24.8흐림장흥24.9흐림해남25.3흐림고흥27.3구름많음의령군26.4흐림함양군25.0흐림광양시29.0흐림진도군26.0구름많음봉화24.5흐림영주24.5구름많음문경24.6흐림청송군25.3흐림영덕25.5흐림의성26.4구름많음구미26.8구름많음영천26.7구름많음경주시26.0구름조금거창24.3구름조금합천26.7구름많음밀양27.6흐림산청25.8흐림거제27.4흐림남해27.9구름많음북부산27.5
  • 2024.09.19(목)

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

검색결과는 총 56건 입니다.    글쓰기