Skip to content

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.
  • dateTime is 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_log and t_aggregation_index are partitioned by day based on dateTime. To reduce query costs, specify a date condition as well.