BigQuery Tables¶
Overview¶
You can check the types of datasets and tables you can query after BigQuery access is granted, as well as the purpose and main columns of each table.
For how to request BigQuery access and connect to BigQuery, see BigQuery Setup.
| Dataset | Description |
|---|---|
habq-storage.analytics_N_live | Production environment data. You can query it if you request access in the production environment |
habq-storage.analytics_N_sandbox | Sandbox environment data. You can query it if you request access in the sandbox environment |
Note
When you access BigQuery, only the datasets you have been granted access to are displayed. You do not need to check the value of N separately.
Table List¶
Tables are divided into event tables and service tables according to their purpose.
| Type | Description |
|---|---|
| Event tables | Tables that serve as data sources for metrics, and the isolation table. These are the tables you query directly when analyzing or checking data |
| Service tables | Tables created to build event tables or to support console and analysis features. You do not need to query them directly; they are provided for reference |
Event Tables¶
| Table | Description |
|---|---|
t_raw_event_log | (Metric data source) The source table where all event logs are stored together |
t_raw_event_log_rescue | An isolation table that keeps, as is, logs that violated the transmission rules and could not be stored in t_raw_event_log |
t_aggregation_index | (Metric data source) The final aggregated results for providing cumulative metrics separately |
Service Tables¶
Service tables are not meant to be queried directly. They are provided for reference to help you understand how the data is created.
| Table | Description |
|---|---|
t_aggregation_login_master | An intermediate aggregation table for building t_aggregation_index. Records the date each user (userId) who logged in was first seen (used to aggregate cumulative users) |
t_aggregation_terms_master | An intermediate aggregation table for building t_aggregation_index. Records the date each device (deviceId) that agreed to the terms was first seen (used to aggregate cumulative installs) |
t_aggregation_buyer_master | An intermediate aggregation table for building t_aggregation_index. Records the date each user (userId) who made a payment was first seen (used to aggregate cumulative buyers) |
t_aggregation_prerelease_revenue | A table that precalculates, by date and condition, the revenue generated before the game's official release date (contains data only if there is pre-release revenue) |
tmp_aggregation_stg_* | Temporary tables that exist only during aggregation (automatically deleted 1 day after creation) |
system_custom_event_user_state | An intermediate aggregation table for reflecting data in t_raw_event_log. Stores the time and attributes of the first and last occurrence for each user and event |
system_derived_event_* | Internal processing tables that record the progress of derived event generation jobs |
meta_event | List of events you have |
meta_event_dimension | Attribute definitions for each event (attribute name, data type, source) |
meta_event_dimension_value | Values actually collected for attributes (a list of values for string types; a minimum-maximum range for numeric and time types) |
meta_event_latest_date | The last data date for each event |
system_attribute_raw | The source attribute list used to build meta_event_dimension_value. All attributes and values in the attributes JSON, except the hiveAttributes generated by the pipeline, along with the number of times each value was collected and the first and last collection times |
segment_* / snapshot_* | Segment and snapshot results created in the console ({type}_{number}_{datetime}_{random} format; a new table is created each time) |
Table Details¶
Event Tables¶
t_raw_event_log¶
The table where all event logs sent from the game are stored. Each row represents "who (userId) / on which device (deviceId) / in which game (appIdGroup) / when (dateTime) / with which attributes (attributes) / did what (eventName)."
For the column structure and the detailed attributes of the attributes JSON, see Event Storage Structure.
t_raw_event_log_rescue¶
An isolation table that keeps, as is, logs that could not be stored in t_raw_event_log. It has the same columns as t_raw_event_log, plus the original string (rawData), the isolation reason (errorReason), and details (errorStackTrace).
- It is created only if there are isolated logs.
dateTimeis stored as STRING, not TIMESTAMP, because invalid values must also be kept.- If you cannot see data in
t_raw_event_log, check this table first.
For isolation reasons and how to resolve them, see Data Isolation in Event Storage Structure.
t_aggregation_index¶
A table that aggregates and stores the source logs to provide cumulative metrics separately. Together with t_raw_event_log, it serves as a data source for metrics. Metrics that count unique people, such as cumulative users, are stored based on the results of the intermediate aggregation tables. Each row represents one value "for a game / on a date / by a period type / for a metric / by a condition."
| Column | Description | Example |
|---|---|---|
appIdGroup | Game identifier | com.sample.test |
dateTime | Target date | 2026-10-04 |
periodType | Period type. day (that day), cumulative (cumulative over the entire period) | day |
aggName | Metric group. agg_users (logins), agg_sales (revenue), agg_terms (installs) | agg_sales |
dimKey | Condition axes. * means all values of that axis | country=*\|market=*\|serverId=* |
attributes | JSON where the actual metric values are stored (values for each metric under measure) | measure.au, measure.revenue, measure.pu |
checksum | Hash value for identifying the row |
Metric values are in the attributes JSON, not in columns, so query them with JSON_VALUE.
SELECT JSON_VALUE(attributes, '$.measure.revenue') AS revenue
FROM `habq-storage.analytics_N_live.t_aggregation_index`
WHERE aggName = 'agg_sales'
AND periodType = 'cumulative'
AND appIdGroup = 'com.sample.test' -- The actual appIdGroup you use
AND dimKey = 'country=*|market=*|serverId=*' -- Overall total
AND DATE(dateTime) = '2026-10-04'
Warning
Even for the same date and metric, there are multiple rows depending on dimKey, such as "All," "Korea," and "Korea × Google Play." For the overall total, query only the one row where all axes are *. Adding up multiple rows results in double counting.
Service Tables¶
Service tables are provided for reference, and you do not need to query them directly.
t_aggregation_*_master¶
Intermediate aggregation tables for building t_aggregation_index, which record only the date each user or device was first seen. They are used to aggregate unique people that cannot be added up by date, such as cumulative users, and the aggregated results are stored in t_aggregation_index.
| Table | Target | Metric |
|---|---|---|
t_aggregation_login_master | Users who logged in (userId) | agg_users cumulative users |
t_aggregation_terms_master | Devices that agreed to the terms (deviceId) | agg_terms cumulative installs |
t_aggregation_buyer_master | Users who made a payment (userId) | agg_sales cumulative buyers |
| Column | Description |
|---|---|
appIdGroup | Game identifier |
userId / deviceId | Target identifier |
country, market (serverId) | Country and market when first seen (t_aggregation_buyer_master also includes the server) |
firstSeenDate / firstSeenAt | Date / time first seen |
updatedAt | Time the row was last updated |
Note
These tables only add new users and devices and never delete them. Also, data that arrives late, after the aggregation time, is not reflected. As a result, cumulative metrics based on these tables may differ from values recalculated from the source logs.
system_custom_event_user_state¶
An intermediate aggregation table for reflecting data in t_raw_event_log. It stores, in one row for each user and event, the time and attributes of the first and last occurrence.
| Column | Description |
|---|---|
userId | Account-based user identifier |
deviceId | Device-based user identifier |
appIdGroup | Game identifier |
eventName | Event name |
firstEventTime, firstAttributes | Time of the first occurrence and the attributes at that time |
lastEventTime, lastAttributes | Time of the last occurrence and the attributes at that time |
meta_event¶
The list of events you have. Each row represents one event.
| Column | Description |
|---|---|
eventName | Event name |
dataSource | The path through which the event came in (custom_server, custom_sdk, etc.) |
tableName | Name of the table where the event data is stored |
meta_event_dimension¶
Attribute definitions for each event. Each row represents one attribute of an event.
| Column | Description |
|---|---|
eventName | Event name |
dimensionName | Attribute name |
dataType | Data type of the attribute |
attributeSource | Area where the attribute is stored (hiveAttributes or eventAttributes) |
meta_event_dimension_value¶
Values actually collected for attributes. For string types, it stores a list of values; for numeric and time types, it stores a minimum-maximum range.
| Column | Description |
|---|---|
key | Attribute name |
value | Collected value (minimum and maximum for numeric and time types) |
dataType | Data type of the attribute |
valueType | How the value is stored (a list of values or a minimum-maximum range) |
meta_event_latest_date¶
The last data date for each event.
| Column | Description |
|---|---|
lastDataDate | The last date with data |
sourceTable | The source table where the date was checked |
system_attribute_raw¶
The source attribute list used to build meta_event_dimension_value. It organizes all attributes and values in the attributes JSON, except the hiveAttributes generated by the pipeline.
| Column | Description |
|---|---|
eventName, appIdGroup | Event and game |
key, value | Attribute name and collected value |
dataType | Data type of the attribute |
valueCount | Number of times the value was collected |
firstTime, lastTime | First and last collection times |
attributeSource | Area where the attribute is stored (hiveAttributes or eventAttributes) |
dataSource | The path through which the event came in |
Notes & Tips¶
t_raw_event_logandt_aggregation_indexare partitioned by day based ondateTime. To reduce query costs, specify a date condition as well.
Related Menu¶
- Event Storage Structure -
t_raw_event_logcolumn structure and data isolation - Send Test Logs - Query test logs with BigQuery
- Segment - Create segments and snapshots