비밀번호

커뮤니티2

  • 구름많음속초8.2박무북춘천0.6흐림철원1.1흐림동두천2.1흐림파주1.2흐림대관령1.8흐림춘천1.1맑음백령도8.6구름많음북강릉8.7구름많음강릉9.4구름많음동해9.8비서울3.7비인천4.9흐림원주2.0흐림울릉도7.0흐림수원5.0흐림영월2.1흐림충주3.9흐림서산8.2구름많음울진9.3흐림청주5.9흐림대전5.2흐림추풍령2.2흐림안동1.7흐림상주1.4흐림포항5.3흐림군산7.3흐림대구3.2구름많음전주9.0맑음울산8.4맑음창원8.3구름많음광주6.7맑음부산11.0구름조금통영9.1흐림목포8.1구름많음여수7.7흐림흑산도11.8흐림완도7.8흐림고창9.4구름많음순천7.3흐림홍성7.0흐림서청주3.9구름많음제주15.8구름많음고산14.1구름많음성산14.7구름많음서귀포15.3구름조금진주4.5흐림강화3.7흐림양평1.8흐림이천1.2흐림인제1.9흐림홍천0.8흐림태백2.4흐림정선군흐림제천2.1흐림보은2.5흐림천안5.4흐림보령9.0흐림부여5.3흐림금산3.6흐림세종4.2흐림부안8.1흐림임실4.8흐림정읍8.8흐림남원3.9흐림장수2.5흐림고창군9.6흐림영광군8.5맑음김해시7.6흐림순창군4.3맑음북창원7.2맑음양산시6.7구름많음보성군6.4구름많음강진군5.4구름많음장흥7.5구름많음해남11.0구름많음고흥9.4맑음의령군2.5흐림함양군1.8구름많음광양시7.7구름많음진도군12.0흐림봉화0.1흐림영주1.9흐림문경2.3흐림청송군-0.1흐림영덕6.7흐림의성흐림구미3.5흐림영천2.1흐림경주시3.0흐림거창-0.6구름많음합천3.0구름조금밀양4.6구름많음산청7.0구름조금거제7.9구름많음남해5.3맑음북부산7.9
  • 2025.12.16(화)

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

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