콘텐츠로 이동

이벤트 저장 구조

개요

전송된 이벤트 로그가 BigQuery에 저장되는 구조, attributes JSON 필드의 세부 구조, 전송 규칙을 위반한 로그가 격리되는 방식을 확인할 수 있습니다.


테이블 구조

전송된 이벤트 로그는 회사별 BigQuery 데이터셋의 t_raw_event_log 테이블에 저장됩니다.

테이블 컬럼 구조

저장 위치

항목 형식
테이블 t_raw_event_log
파티셔닝 dateTime 기준 일별 파티션

컬럼 정의

컬럼명 자료형 설명 예시
userId STRING 필수 속성 userId로 전송된 값 100001
identifierProvider STRING 필수 속성 identifierProvider로 전송된 값 hive
deviceId STRING 필수 속성 deviceId로 전송된 값 100000
appId STRING 필수 속성 appId로 전송된 값 "com.com2us.game.ios"
appIdGroup STRING 필수 속성 appId를 기반으로 Hive 앱센터의 게임명으로 변환된 값 com.com2us.game
dateTime TIMESTAMP 필수 속성 eventTime을 UTC로 변환한 값 2026-07-20T05:01:01Z
eventName STRING 필수 속성 eventName으로 전송된 값 asset_drop
checksum STRING 이벤트마다 생성되는 해시값 HW2FTEB56TEEWER
bigqueryRegistTimestamp TIMESTAMP 이벤트가 BigQuery에 저장된 UTC 시각 2026-07-20T05:02:01Z
attributes JSON 사용자 정의 속성 및 자동 수집 속성이 저장되는 JSON 필드 아래 참조

attributes 예시

{
  "hiveAttributes": {
    "dataSource": "custom_server",
    "geoIpCountry": "KR"
  },
  "eventAttributes": {
    "eventTime": "2026-07-20T14:01:01+09:00",
    "level": 10,
    "character_name": "AA",
    "stage_id": "stage_101"
  }
}

테이블 구조 주의사항 & Tips

  • 재전송 등으로 동일 이벤트가 중복 저장될 수 있으니, 조회 시 checksum 기준 중복 제거 쿼리를 함께 사용하는 것을 권장합니다.
  • 전송 규칙을 위반한 이벤트 로그는 이 테이블이 아닌 rescue 테이블에 저장됩니다. 자세한 내용은 데이터 격리를 참고하세요.

attributes 세부 속성

Note

attributes 컬럼은 JSON 타입이며, hiveAttributeseventAttributes 두 영역으로 구분됩니다.

attributes 예시

{
  "hiveAttributes": {
    "dataSource": "custom_server",
    "geoIpCountry": "KR"
  },
  "eventAttributes": {
    "eventTime": "2026-07-20T14:01:01+09:00",
    "level": 10,
    "character_name": "AA"
  }
}

hiveAttributes

파이프라인이 자동으로 처리하여 저장하는 영역입니다.

속성명 자료형 설명 예시
dataSource STRING 이벤트 로그의 전송 주체. 아래 dataSource 상세 참고 custom_server
geoIpCountry STRING 파이프라인이 IP 기반으로 판정한 국가 코드 (ISO 3166 alpha-2) KR

dataSource 상세

dataSource는 이벤트 로그의 전송 주체를 나타내며, 다음 값 중 하나가 자동으로 설정됩니다.

설명
airbridge Airbridge를 통해 수집된 이벤트
appsflyer Appsflyer를 통해 수집된 이벤트
adjust Adjust를 통해 수집된 이벤트
singular Singular를 통해 수집된 이벤트
hive_server Hive 인증, 빌링 등을 통해 자동으로 수집하는 이벤트
hive_sdk Hive SDK가 자동으로 수집하는 퍼널 등의 이벤트
custom_server 고객이 서버에서 전송하는 사용자 정의 이벤트
custom_sdk 고객이 Hive SDK의 이벤트 로그 전송 기능을 통해 전송하는 사용자 정의 이벤트
custom_sdk_mig 고객이 Hive SDK의 이벤트 로그 전송 기능을 통해 구버전 애널리틱스로 전송하는 사용자 정의 이벤트
custom_server_mig 고객이 서버에서 구버전 애널리틱스로 전송하는 사용자 정의 이벤트
custom_except 이벤트 전환 과정에서 예외적인 케이스로 eventAttribute, hiveAttribute를 생성하여 전송하는 이벤트

eventAttributes

사용자가 전송한 속성과 SDK가 자동 수집한 속성이 저장되는 영역입니다.

속성명 자료형 설명
eventTime STRING 필수 속성으로 전송된 eventTime 원본값
(사용자 정의 속성) 숫자/문자 사용자가 직접 전송한 커스텀 속성
(자동 수집 속성) 속성별 상이 SDK가 자동 수집한 클라이언트 정보 (클라이언트 전송 시)

attributes 주의사항 & Tips

  • hiveAttributes는 개발사가 직접 값을 설정하는 영역이 아니라 파이프라인이 자동으로 채우는 영역입니다. dataSource, geoIpCountry 외의 값은 저장되지 않습니다.
  • 사용자 정의 속성과 SDK 자동 수집 속성은 모두 eventAttributes에 함께 저장됩니다. 조회 시 속성명으로 구분해야 합니다.
  • dataSource 값으로 이벤트 로그의 전송 경로(SDK/서버/MMP 등)를 구분해 조회할 수 있습니다.

데이터 격리

Warning

전송 규칙을 준수하지 않은 이벤트 로그는 정상 테이블(t_raw_event_log)에 저장되지 않고, 격리 테이블(t_raw_event_log_rescue) 에 별도로 저장됩니다. 격리 테이블에는 원본 JSON이 함께 보존되므로, 격리 원인을 파악하고 수정하여 재전송할 수 있습니다.


격리 사유

오류 사유 설명 대응 방법
필수 속성 누락 7개 필수 속성(userId, identifierProvider, deviceId, appId, eventTime, eventName, appIdGroup) 중 하나라도 없거나 빈 값 누락된 필수 속성을 포함하여 재전송
예약어 사용 속성명으로 attributes, eventAttributes, hiveAttributes를 사용한 경우 (대소문자 무관) 해당 속성명을 다른 이름으로 변경
허용되지 않는 속성값 속성값이 JSON 객체({}) 또는 JSON 배열([]) 형태인 경우 속성값을 문자열 또는 숫자로 변경
eventTime 형식 오류 eventTime이 RFC 3339 형식이 아니거나 파싱할 수 없는 경우 RFC 3339 형식으로 수정 (타임존 포함)
eventTime 범위 초과 eventTime이 현재 시각 기준 과거 31일 또는 미래 31일을 벗어나는 경우 eventTime 값 확인 후 정상 범위로 수정
JSON 파싱 실패 전송된 메시지가 유효한 JSON 형식이 아닌 경우 JSON 형식 검증 후 재전송

격리 테이블 구조

격리된 이벤트 로그는 t_raw_event_log_rescue 테이블에 다음과 같은 구조로 저장 됩니다.

컬럼명 자료형 설명
userId STRING 전송된 userId (파싱 가능한 경우)
identifierProvider STRING 전송된 identifierProvider
deviceId STRING 전송된 deviceId
appIdGroup STRING 전송된 appIdGroup
dateTime STRING 전송된 eventTime 원본값 (문자열 그대로 저장, TIMESTAMP 아님)
eventName STRING 전송된 eventName
bigqueryRegistTimestamp TIMESTAMP BigQuery 저장 시각
checksum STRING 해시값
rawData STRING 전송된 원본 JSON 전체
errorReason STRING 격리 사유 코드
errorStackTrace STRING 격리 상세 정보 (누락된 필드명 등)

연관 메뉴