비밀번호

커뮤니티2

  • 맑음속초13.6맑음북춘천1.6맑음철원1.1맑음동두천3.4맑음파주2.4맑음대관령4.0맑음춘천1.9황사백령도10.9황사북강릉14.0맑음강릉11.5맑음동해13.3황사서울7.2황사인천7.9맑음원주3.9황사울릉도11.0맑음수원4.9맑음영월1.4맑음충주2.2맑음서산1.1맑음울진9.9황사청주5.1황사대전3.9맑음추풍령1.7황사안동4.7맑음상주5.0황사포항8.7맑음군산3.2황사대구8.1황사전주3.0황사울산8.3맑음창원11.4황사광주5.8맑음부산11.1맑음통영9.0황사목포7.1황사여수8.4황사흑산도6.7구름많음완도6.6구름많음고창1.8구름많음순천6.0황사홍성3.4맑음서청주1.8황사제주9.0구름많음고산9.8구름많음성산9.1흐림서귀포13.4구름많음진주7.8맑음강화6.4맑음양평3.6맑음이천3.6구름많음인제2.7맑음홍천2.9맑음태백4.7맑음정선군1.6맑음제천0.2맑음보은0.8맑음천안1.0맑음보령1.9맑음부여1.2맑음금산1.0맑음세종1.9구름많음부안3.0구름많음임실0.2구름많음정읍2.3구름많음남원1.5구름많음장수-0.6구름많음고창군2.5구름많음영광군3.5맑음김해시10.3구름많음순창군1.9구름많음북창원11.2구름많음양산시12.0맑음보성군6.2구름많음강진군6.0구름많음장흥4.3구름많음해남5.8맑음고흥3.1구름많음의령군3.4구름많음함양군1.0맑음광양시5.6구름많음진도군7.9맑음봉화2.2맑음영주4.0맑음문경3.3맑음청송군2.2맑음영덕7.7맑음의성2.3맑음구미5.0맑음영천6.6구름많음경주시8.5구름많음거창1.7구름많음합천4.1구름많음밀양10.5구름많음산청3.2맑음거제10.9맑음남해8.1구름많음북부산12.2
  • 2026.04.21(화)

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