Event storage structure¶
Overview¶
You can see how transmitted event logs are stored in BigQuery, the detailed structure of the attributes and JSON fields, and how logs that violate transmission rules are quarantined.
table structure¶
Sent event logs are stored in the t_raw_event_log table in the company-specific BigQuery dataset.
Table column structure¶
Storage location¶
| Item | Format |
|---|---|
| table | t_raw_event_log |
| Partitioning | Daily partition by dateTime |
Column definition¶
| Column name | data type | Description | Example |
|---|---|---|---|
userId | STRING | Value sent as required attribute userId | 100001 |
identifierProvider | STRING | Value sent as required attribute identifierProvider | hive |
deviceId | STRING | Value sent as required attribute deviceId | 100000 |
appId | STRING | Value sent as required attribute appId | "com.com2us.game.ios" |
appIdGroup | STRING | Value converted to game name in App Center Hive based on required attribute appId | com.com2us.game |
dateTime | TIMESTAMP | Required attribute eventTime converted to UTC | 2026-07-20T05:01:01Z |
eventName | STRING | Value sent as required attribute eventName | asset_drop |
checksum | STRING | Hash value generated for each event | HW2FTEB56TEEWER |
bigqueryRegistTimestamp | TIMESTAMP | The UTC time when the event was stored in BigQuery | 2026-07-20T05:02:01Z |
attributes | JSON | JSON field where custom and auto-collected attributes are stored | See below |
attributes example
{
"hiveAttributes": {
"dataSource": "custom_server",
"geoIpCountry": "KR"
},
"eventAttributes": {
"eventTime": "2026-07-20T14:01:01+09:00",
"level": 10,
"character_name": "AA",
"stage_id": "stage_101"
}
}
Table structure precautions & Tips¶
- The same event may be stored redundantly due to retransmission, etc., so it is recommended to use a duplicate removal query based on
checksumwhen searching. - Event logs that violate transport rules are stored in the rescue table, not this table. For more information, see Data Isolation.
attributes Detailed attributes¶
Note
The attributes column is of type JSON and is divided into two areas: hiveAttributes and eventAttributes.
attributes example¶
{
"hiveAttributes": {
"dataSource": "custom_server",
"geoIpCountry": "KR"
},
"eventAttributes": {
"eventTime": "2026-07-20T14:01:01+09:00",
"level": 10,
"character_name": "AA"
}
}
hiveAttributes¶
This is the area that the pipeline automatically processes and stores.
| Attribute name | data type | Description | Example |
|---|---|---|---|
dataSource | STRING | Transmitter of event logs. See detailed dataSource below | custom_server |
geoIpCountry | STRING | Country code determined by the pipeline based on IP (ISO 3166 alpha-2) | KR |
dataSource Details¶
dataSource indicates the entity sending the event log, and is automatically set to one of the following values:
| value | Description |
|---|---|
airbridge | Events collected via Airbridge |
appsflyer | Events collected via Appsflyer |
adjust | Events collected via Adjust |
singular | Events collected via Singular |
hive_server | Hive Events automatically collected through authentication, billing, etc. |
hive_sdk | Events such as funnels automatically collected by Hive SDK |
custom_server | Custom events sent by the customer from the server |
custom_sdk | Custom events sent by customers via the event log submission function of Hive SDK |
custom_sdk_mig | Custom events that customers send to older versions of Analytics via the Send Event Log feature in Hive SDK |
custom_server_mig | Custom events that customers send from their servers to older versions of Analytics |
custom_except | An event that generates and transmits eventAttribute, hiveAttribute as an exceptional case during the event conversion process |
eventAttributes¶
This is the area where the attributes sent by the user and the attributes automatically collected by SDK are stored.
| Attribute name | data type | Description |
|---|---|---|
eventTime | STRING | eventTime original value sent as required attribute |
| (User Defined Attribute) | numbers/characters | Custom attributes sent directly by users |
| (auto-collected attributes) | Varies by attribute | Client information automatically collected by SDK (when transmitting client) |
attributes Precautions & Tips¶
hiveAttributesis not an area where the developer sets the value directly, but an area that the pipeline automatically fills. Values other thandataSourceandgeoIpCountryare not saved.- Both custom attributes and SDK auto-collected attributes are stored together in
eventAttributes. When searching, they must be distinguished by attribute name. - You can search by distinguishing the transmission path of the event log (SDK/ server/MMP, etc.) using the
dataSourcevalue.
data-isolation¶
Warning
Event logs that do not comply with the transport rules are not stored in the normal table (t_raw_event_log), but are stored separately in the quarantine table (t_raw_event_log_rescue). The quarantine table preserves the original JSON, so you can determine the cause of the quarantine, fix it, and retransmit.
Reason for quarantine¶
| Error Reason | Description | How to respond |
|---|---|---|
| Required attribute missing | Any of the seven required attributes (userId, identifierProvider, deviceId, appId, eventTime, eventName, appIdGroup) is missing or has an empty value | Resend with missing required attributes |
| Use of reserved words | When attributes, eventAttributes, and hiveAttributes are used as attribute names (case is not relevant) | Change the attribute name to another name |
| Attribute value not allowed | If the attribute value is in the form of an JSON object ({}) or a JSON array ([]) | Change attribute value to string or number |
| Format error eventTime | eventTime is not in RFC 3339 format or cannot be parsed | RFC Modified to 3339 format (including time zone) |
| eventTime out of range | eventTime is outside 31 days in the past or 31 days in the future as of the current time | eventTime Check the value and modify it to the normal range |
| Parsing of JSON failed | The sent message is not in a valid JSON format | JSON Verify format and resend |
Isolated table structure¶
Isolated event logs are stored in the t_raw_event_log_rescue table with the following structure:
| Column name | data type | Description |
|---|---|---|
userId | STRING | Sent userId (if parsable) |
identifierProvider | STRING | Sent identifierProvider |
deviceId | STRING | Sent deviceId |
appIdGroup | STRING | Sent appIdGroup |
dateTime | STRING | Original value of transmitted eventTime (Save as string, not TIMESTAMP) |
eventName | STRING | Sent eventName |
bigqueryRegistTimestamp | TIMESTAMP | BigQuery Save time |
checksum | STRING | hash value |
rawData | STRING | All original JSON sent |
errorReason | STRING | Quarantine Reason Code |
errorStackTrace | STRING | Quarantine details (missing field names, etc.) |
Related menu¶
- Event attribute transmission — Detailed rules for required/automatically collected/custom-defined attributes
- Event log transmission — Transmission method via Hive SDK v4, Hive Axyl, Fluentd, HTTP