어떤 데이터가 쌓이고 있는지 확인해보자.
1. 데이터 항목 확인하기
|
필드 이름
|
유형 | 모드 |
설명
|
키 | 대조 | 기본값 |
정책태그
|
데이터 정책
|
세부내용
|
|
|
event_date
|
STRING | NULLABLE |
-
|
- | - | - |
-
|
-
|
이벤트 생성일
|
|
|
event_timestamp
|
INTEGER | NULLABLE |
-
|
- | - | - |
-
|
-
|
1970-01-01부터 지금까지 흐른 “마이크로초(μs)”
|
|
|
event_name
|
STRING | NULLABLE |
-
|
- | - | - |
-
|
-
|
이벤트 이름
|
|
|
event_params
|
RECORD | REPEATED |
-
|
- | - | - |
-
|
-
|
아래에 추가 설명
|
|
|
event_previous_timestamp
|
INTEGER | NULLABLE |
-
|
- | - | - |
-
|
-
|
제대로 찍힌적 없음
|
|
|
event_value_in_usd
|
FLOAT | NULLABLE |
-
|
- | - | - |
-
|
-
|
제대로 찍힌적 없음 | |
|
event_bundle_sequence_id
|
INTEGER | NULLABLE |
-
|
- | - | - |
-
|
-
|
동일한 이벤트를 묶어주는 코드(e.g. session_start와 page_view 동시 발생시 동일값 발생)
|
|
|
event_server_timestamp_offset
|
INTEGER | NULLABLE |
-
|
- | - | - |
-
|
-
|
제대로 찍힌적 없음
|
|
|
user_id
|
STRING | NULLABLE |
-
|
- | - | - |
-
|
-
|
제대로 찍힌적 없음
|
|
|
user_pseudo_id
|
STRING | NULLABLE |
-
|
- | - | - |
-
|
-
|
유저를 나타내는 코드(익명화된 값)
|
|
|
privacy_info
|
RECORD | NULLABLE |
-
|
- | - | - |
-
|
-
|
아래에 추가 설명
|
|
|
user_properties
|
RECORD | REPEATED |
-
|
- | - | - |
-
|
-
|
아래에 추가 설명
|
|
|
user_first_touch_timestamp
|
INTEGER | NULLABLE |
-
|
- | - | - |
-
|
-
|
유저가 처음 진입한 시각. event_timestamp와 유사한 형태.
|
|
|
user_ltv
|
RECORD | NULLABLE |
-
|
- | - | - |
-
|
-
|
user_ltv.revenue, .currency 두개있으나 찍힌적 없음
|
|
|
device
|
RECORD | NULLABLE |
-
|
- | - | - |
-
|
-
|
아래에 추가 설명
|
|
|
geo
|
RECORD | NULLABLE |
-
|
- | - | - |
-
|
-
|
아래에 추가 설명
|
|
|
app_info
|
RECORD | NULLABLE |
-
|
- | - | - |
-
|
-
|
아래에 추가 설명
|
|
|
traffic_source
|
RECORD | NULLABLE |
-
|
- | - | - |
-
|
-
|
아래에 추가 설명
|
|
|
stream_id
|
STRING | NULLABLE |
-
|
- | - | - |
-
|
-
|
데이터 스트림 별 코드 | |
|
platform
|
STRING | NULLABLE |
-
|
- | - | - |
-
|
-
|
웹, 모바일 등 명시 | |
|
event_dimensions
|
RECORD | NULLABLE |
-
|
- | - | - |
-
|
-
|
아래에 추가 설명
|
|
|
ecommerce
|
RECORD | NULLABLE |
-
|
- | - | - |
-
|
-
|
아래에 추가 설명
|
|
|
items
|
RECORD | REPEATED |
-
|
- | - | - |
-
|
-
|
아래에 추가 설명
|
|
|
collected_traffic_source
|
RECORD | NULLABLE |
-
|
- | - | - |
-
|
-
|
아래에 추가 설명
|
|
|
is_active_user
|
BOOLEAN | NULLABLE |
-
|
- | - | - |
-
|
-
|
true 같은 값으로 찍힘
|
|
|
batch_event_index
|
INTEGER | NULLABLE |
-
|
- | - | - |
-
|
-
|
batch_ordering_id 내에서 순서대로 숫자를 매겨줌 | |
|
batch_page_id
|
INTEGER | NULLABLE |
-
|
- | - | - |
-
|
-
|
페이지 별 매기는 숫자. 동일한 페이지는 batch_page_id가 동일함
|
|
|
batch_ordering_id
|
INTEGER | NULLABLE |
-
|
- | - | - |
-
|
-
|
동일한 event_timestamp 끼리 묶어서 숫자로 표현(순서대로 1부터)
|
|
|
session_traffic_source_last_click
|
RECORD | NULLABLE |
-
|
- | - | - |
-
|
-
|
아래에 추가 설명
|
|
|
publisher
|
RECORD | NULLABLE |
-
|
- | - | - |
-
|
-
|
제대로 찍힌적 없음
|
event_params에 해당하는 내용은 아래와 같다

privacy_info

마지막 변수는 privacy_info.users_transient_token. 주로 No로 찍히고, 나머지는 주로 null로 찍히는 듯.
user_properties


device/geo/app_info/traffic_source에 해당하는 변수


device 예시(주로 null이 아닌 것만 작성)
category: desktop
.mobile_brand_name : Microsoft
.operating_system: Windows
.operating_system_version: Windows 11
.language: en-us
.is_limited_ad_tracking : No
.web_info.browser : Edge
.web_info.browser_version : 146.0.3856.72
.web_info.hostname : yj-data.tistory.com
geo 예시
.city : Seongnam-si
.country: South Korea
.continent : Asia
.region : Gyeonggi-do
.sub_continent : Eastern Asia
.metro : (not set)
traffic_source 예시
.name : (organic)
.medium: organic
.source: google






event_dimensions, items, ecommerce 는 내가 판매를 하거나 광고를 돌리는게 아니라서 전부 null 값이다.
session_traffic_source_last_click.cross_channel_campaign. 예시
.campaign_name : (organic)
.source : google
.medium: organic
.source_platform: Manual
.default_channel_group : Direct (Organic Search 도 있음)
.primary_channel_group : Direct
2. 1번에서 살펴본 데이터, 정리해보기
그래서 결국 볼 수 있는 데이터가 뭔지 확인해보자면,
| 이벤트 | 페이지 | 유저/트래픽 |
| 이벤트 생성일(일, 초) 이벤트 이름 한 세션에 총 몇개의 큰 단위의 batch order가 있었는지(max(batch_ordering_id)) - 총 몇개의 큰 행동 묶음이 있었는지 알 수 있음. 어떤 세션과 어떤세션이 한 단위로 묶이는지 이벤트 순서(batch_event_index 활용) USER_ENGAGEMENT가 발생한 시간 길이(USER_ENGAGEMENT 발동 조건이 불투명함, 추가 조사 필요) |
페이지 제목 페이지 url 페이지 id(batch_page_id) 페이지 리퍼러 |
유저id 디바이스 종류(desktop..) 모바일 브랜드 이름(핸드폰브랜드인가?) 운영체제와 버전 언어 ad_tracking 껐는지 여부 web 브라우저 종류와 버전 지역적 위치: 대륙, 세부대륙, 나라, 세부 사항(아시아, 동아시아, 한국, 경기도, 성남시) privacy_info.users_transient_token yes/no 여부 트래픽 소스: 소스, 매체, 소스플랫폼, 디폴트 채널 그룹, 주요 채널 그룹 active 유저인지 여부 웹/모바일 여부 유저가 처음 진입한 시간 |
3. 그래서 하려던 분석은 할 수 있나?
하려던 분석:
- 첫 글 스크롤 뎁스 확인
- 내부 이동률 확인
가능하겠다! 그 외에도 path도 확인가능하고.. 정말로 raw event가 다 모였구나. 그런데, 데이터 양이 적긴 적다 ㅎㅎ 이제 4일 쌓은거라.. 일주일은 더 쌓고 진행해야겠다.
utm 인입 체크하기

GA로 확인한 결과 인입이 한명 있다!
이 사람을 big query에서 찾아보자.

3월30일 사람 명단에서 찾았는데.. (이날 이사람만 접근을 메인페이지로 해서 ㅎㅎ 찾을 수 있었다. 시간도 확인 완료) 이 사람이 events_로 시작하는 데이터셋에는 안찍혀있다. 분명 session_start > page_view까지 일어났는데.
gpt랑 얘기해보니
- 세션 시작을 했지만 페이지 로딩 전에 이탈한경우 GA에는 찍혀도 빅쿼리에 없을 수 있음
- 쿠키동의나 광고/분석 거부자는 데이터가 안들어올 수 있음
- 날짜 필터가 잘못되어 하루 일찍/지연 되어 데이터가 들어올 수 있음
세번째 경우는 내가 앞뒤 날짜를 다 체크했기 때문에 틀린것으로 결론났고, 1번이나 2번일텐데.. 1번이겠지. 이 부분은 나중에 최종 분석할 때 확인이 필요하다. 이렇게해서 안찍힌 사람이 몇명인지 확인이 필요함. 그 이유도 가능한만큼 찾으면 좋고.
이렇게 기초 데이터 확인이 끝났다. 이제 일주일 기다린 후 분석을 한 번 진행해보자!
'Project' 카테고리의 다른 글
| [SaaS프로젝트#1] 프로젝트 기획: 서비스 선정, 핵심 질문 선정, 서비스 화면 구성(AI로 생성) (0) | 2026.04.04 |
|---|---|
| [블로그프로젝트#11] BigQuery Export로 GA raw event 수집하기 (성공!!) (0) | 2026.03.30 |
| [블로그프로젝트#9] GA 데이터 검수하기 Part 1. utm 유입 확인 (0) | 2026.03.25 |
| [블로그 프로젝트#8] GTM으로 블로그 내부 이동 추적하기 (0) | 2026.03.20 |
| [블로그 프로젝트#7] GTM으로 스크롤 깊이 이벤트 새로 만들기 (1) | 2026.03.19 |