GA4 Data Organization in BigQuery

In this post, we’ll walk through how GA4 data is organized inside BigQuery, so you know exactly where everything lives and how to navigate it.

To get started, open BigQuery here:
https://console.cloud.google.com/bigquery

This takes you to the BigQuery interface (often called the BigQuery console).


Understanding the BigQuery Structure

At the top of the console, you’ll see a project selector (a dropdown). This shows all the projects you have access to.

If you’re just getting started, you’ll likely see only one project.

BigQuery organizes everything in a hierarchy. This hierarchy is important because it controls:

  • Access and permissions
  • Billing
  • Quotas
  • Resource management

Here’s what that hierarchy looks like at a high level:

  • Organization
  • Billing Account
  • Projects
  • Datasets
  • Tables / Views

If you’re in a large company, your IT team usually manages the Organization and Billing Account.

If you’re working independently or in a smaller company, you’ll likely manage everything yourself.


Where You’ll Spend Most of Your Time

As a digital analyst, most of your work happens at the Project level and below.

Once you select a project from the dropdown, you’ll see it in the left panel. Expanding it shows you:

  • Datasets → Containers for your data
  • Tables → Actual data (this is where GA4 data lives)

Think of it like this:

  • Project = Workspace
  • Dataset = Folder
  • Table = File

GA4 Tables in BigQuery

When you connect GA4 to BigQuery, it automatically creates datasets and tables for you.

Depending on your setup, you may see up to four types of tables.

Let’s go through them.


1. Events Tables (Daily Export)

This is the most important table.

It contains:

  • All GA4 events
  • Event parameters
  • User and session data

If you selected Daily Export in GA4, BigQuery creates one table per day.

Naming format:

events_YYYYMMDD

For example:

  • events_20260318
  • events_20260319

In the UI, these are grouped together as:

events_(#)

Where # = number of days of data.


2. Events Intraday Tables (Streaming Export)

If you enabled Streaming Export, you’ll also see intraday tables.

These are near real-time tables that capture data throughout the day.

Naming format:

events_intraday_YYYYMMDD

Important notes:

  • These are temporary/staging tables
  • Data may be incomplete
  • Some fields may be missing

At the end of the day, this data is finalized and moved into the daily events_ tables.


3. Pseudonymous Users Tables

These tables contain data about anonymous users.

By default, GA4 treats users as anonymous unless you implement User ID tracking.

Naming format:

pseudonymous_users_YYYYMMDD

These include:

  • Device-based users
  • Cookie-based identifiers

4. Users Tables (Known Users)

If you enable User ID tracking, GA4 creates user tables for known users.

Naming format:

users_YYYYMMDD

These tables include:

  • Identified users
  • Cross-device tracking (if implemented properly)

Quick Summary

Here’s how to think about GA4 data in BigQuery:

  • events_* → Your primary data (use this most of the time)
  • events_intraday_* → Real-time, temporary data
  • pseudonymous_users_* → Anonymous users
  • users_* → Known users (if User ID is enabled)

What’s Next

In the next post, we’ll go deeper into:

  • What’s inside the events table
  • How to actually query it
  • And how to make sense of nested GA4 data

One Quick Ask

If you found this useful, share it with your team or on LinkedIn. That’s what keeps me motivated to keep writing more of these.

Want to Go Deeper?

If you want to fast-track your BigQuery skills for marketing analytics, check out:

BigQuery for Marketing Analytics Course

Similar Posts