본문 바로가기
Project

[블로그프로젝트#12] BigQuery Export로 쌓은 raw event 살펴보기

by yj-data 2026. 4. 2.

목차


    어떤 데이터가 쌓이고 있는지 확인해보자.

     

    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번이겠지. 이 부분은 나중에 최종 분석할 때 확인이 필요하다. 이렇게해서 안찍힌 사람이 몇명인지 확인이 필요함. 그 이유도 가능한만큼 찾으면 좋고.


    이렇게 기초 데이터 확인이 끝났다. 이제 일주일 기다린 후 분석을 한 번 진행해보자!