본문 바로가기

Study/GA4

[TIL] user_id는 왜 없지? GA4 사용자 식별값을 BigQuery에서 직접 확인해봤다

목차
1. 개요
2. 예상되는 바
3. 검증 과정 및 결과
4. 마무리

1. 개요

이전 글에서 GA4에서 제공하는 사용자 식별값의 특징을 알아봤다.
과연 식별값의 존재 여부나 수집 방식에 따라, 실제 전환 이벤트 수집에도 차이가 나는지 확인해보자.


2. 예상되는 바

사용자 식별값이 실제 전환 이벤트 수집에 어떤 영향을 주는지 확인하기 위해, 각 식별값(user_id, user_pseudo_id, device.id 등)에 따라 전환 이벤트를 조회해보려고 한다.

실제 DB에 인입되는 이벤트인 점을 고려했을 때 사용자의 명확한 액션이 수반된 전환이  데이터 고유성과 신뢰도가 높다는 점에서 확인 기준으로 적합하다고 판단했다.

식별값 설명 예상 결과 저장 위치
(BigQuery 기준)
User ID 브랜드 서비스 로그인 사용자 식별값 ❌ 결과 없음
로그인이 없는 페이지 + 수집 미설정 → 존재하지 않을 것
user_id
Client ID 웹 브라우저 기반 식별값 (쿠키) 기본 수집 대상이므로 가장 많이 존재할 것 user_pseudo_id
Device ID 앱 디바이스 기반 식별값 결과 없음
확인 대상이 웹 데이터 스트림으로 앱 전용 필드 존재 안 함
device.id
Google Signals ID 구글 로그인 기반 식별값
(동의 필요)

ID 확인 불가 → 직접 검증 불가능
직접 접근 불가

 


3. 검증 과정 및 결과

🔸 User ID

User ID가 저장되는 user_id 컬럼은 역시 null값으로 확인됐다.

더보기
WITH base AS (
  SELECT
    user_id,
    user_pseudo_id,
    event_date,
    event_timestamp,
    event_name,
    ep.key,
    ep.value.string_value,
    ep.value.int_value,
    ep.value.float_value,
    ep.value.double_value
  FROM `analytics_projectname.events_*`, UNNEST (event_params) as ep
)

SELECT DISTINCT(user_id)
FROM base
WHERE event_name = 'conversion_event_name'

🔸 Client ID

Client ID가 저장되는 user_pseudo_id는 총 13개로 확인됐다.

더보기
WITH base AS (
  SELECT
    user_id,
    user_pseudo_id,
    event_date,
    event_timestamp,
    event_name,
    ep.key,
    ep.value.string_value,
    ep.value.int_value,
    ep.value.float_value,
    ep.value.double_value
  FROM `analytics_projectname.events_*`, UNNEST (event_params) as ep
)

SELECT COUNT(DISTINCT(user_pseudo_id))
FROM base
WHERE event_name = 'conversion_event_name'

🔸 Device ID

현재 확인 중인 데이터 스트림 유형은 '웹'으로 device_id 필드값이 확인되지 않는다.

  • 웹 데이터 스트림
    • 웹 데이터는 브라우저 단위로 식별되며, user_pseudo_id(Client ID)가 사용자 식별값으로 상요
    • 웹 스키마에 device_id가 포함X
  • 앱 데이터 스트림
    • 앱 데이터는 기기 단위로 식별되며, device_id가 앱 인스턴스마다 고유하게 생성됨
    • 앱 데이터를 BigQuery로 내보낼 때만 device_id가 포함됨

4. 마무리

예상대로 Client ID(user_pseudo_id)는 전환 이벤트에서 안정적으로 수집되고 있었고,
반면 User ID와 Device ID는 웹 데이터 스트림 특성상 수집되지 않음을 확인할 수 있었다.

데이터 분석을 하다 보면 늘 고민하게 되는 것이 바로 ‘사용자를 어떻게 정의할 것인가’라는 기준이다.
이번 실험을 통해 각 식별값의 수집 조건과 존재 여부, 그리고 특징에 따른 분석 가능 범위를 명확히 이해할 수 있었고, 앞으로 분석 목적에 따라 어떤 사용자 식별값을 기준으로 삼아야 할지에 대한 기준도 더 분명해졌다.

다음 글에서는 식별값 존재 여부에 따른 사용자 행동 차이정 이벤트의 이탈 경로 분석도 함께 살펴볼 예정이다.