GA4 BigQuery Export: Setup, Schema, and SQL (2026)
GA4 BigQuery export links your Google Analytics 4 property to a BigQuery dataset so raw, event-level data streams into a warehouse instead of being trapped in sampled, aggregated reports. It unlocks unsampled analysis, custom attribution, and joins with CRM and ad data that the GA4 interface cannot perform, which is why it sits at the center of most serious marketing-analytics stacks.
What Is GA4 BigQuery Export?
GA4 BigQuery export is a native connector that copies each day's collected events from your GA4 property into BigQuery tables. In the free GA4 standard property, a daily export is included at no extra cost from Google; a streaming (real-time) export is part of Analytics 360. Once linked, GA4 creates a dataset and writes one table per day named events_YYYYMMDD, plus an intraday table that updates through the current day, so you can query today's events before the final daily table lands.
Because the rows are raw events rather than pre-aggregated reports, you can compute any metric you want and you are not limited by GA4's sampling or its fixed report dimensions. For the broader analytics use cases this unlocks, see our BigQuery for marketing analytics guide.
Why Connect GA4 to BigQuery?
- Unsampled data: query the full event set instead of GA4's sampled UI reports.
- Event-level detail: analyze sequences, funnels, and paths that prebuilt reports flatten.
- Custom attribution: build your own models instead of relying only on GA4's last-click or data-driven options.
- Joins: combine behavioral data with CRM, billing, and ad-cost data in one warehouse.
- Historical control: own the data and reprocess it as your definitions change.
How Do You Set Up the GA4 BigQuery Export?
The setup is a one-time link in the GA4 admin, followed by a short backfill:
- Open GA4 Admin, go to Product Links, and choose BigQuery Links.
- Select or create the Google Cloud project that will host the dataset, and pick a region (this cannot be changed later without relinking).
- Choose the property's data-sharing settings and confirm the daily export; enable streaming only if you are on Analytics 360.
- Save. GA4 provisions a dataset (typically
analytics_<property_id>) and begins writing tables from the link date, with a limited backfill of recent days included. - Grant your analysts BigQuery roles and connect a BI tool or notebook to the dataset.
Before you link, make sure your data layer and GA4 events are clean, because the export mirrors exactly what you collect. Garbage in the event stream becomes garbage in the warehouse.
GA4 BigQuery Export Schema
Each events_YYYYMMDD row is one event. The key columns are event_date, event_timestamp (in microseconds), event_name, user_pseudo_id, user_id, and nested records for device, geo, traffic_source, and items. The most important nested field is event_params, a repeated record where each entry has a key and a value record holding string_value, int_value, float_value, and double_value. To read a parameter you unnest event_params and filter on key.
| Field | Type | Use |
|---|---|---|
| event_name | string | Which event fired (page_view, purchase, etc.) |
| event_params | repeated record | Parameters for the event, unnested to query |
| user_pseudo_id | string | Anonymous device-level user key |
| user_id | string | Your own user key when set |
| event_timestamp | integer | Microseconds; divide by 1,000,000 for seconds |
GA4 BigQuery Export Limits and Costs
The export from GA4 is free, but BigQuery itself is not. You pay Google Cloud for data storage and for the bytes scanned by each query, on an on-demand rate of roughly $6.25 per terabyte scanned (or via committed slot capacity). Custom event-parameter string values are truncated at 100 characters in the export, so do not rely on long free-text parameters surviving intact. The dataset region is fixed at link time, and one property maps to one dataset, so plan the Cloud project layout before you connect.
Useful GA4 BigQuery SQL Queries
Start with a simple unnest to read a parameter, then build up. This pattern counts purchases by a custom parameter:
- Filter the table with
_TABLE_SUFFIXto limit scanned days and control cost. - Unnest
event_paramsand pivot onkeyto pullvalue.string_valueorvalue.int_value. - Group by
user_pseudo_idfor user-level aggregates rather than event-level. - Use
event_timestamp / 1000000to convert to standard seconds for date math.
A basic purchase-volume query selects from events_* where event_name = 'purchase', unnests the items array for revenue, and restricts _TABLE_SUFFIX to the last 30 days. That single pattern replaces many sampled GA4 monetization reports.
How Do You Join GA4 BigQuery Data with Other Sources?
The warehouse is where GA4 becomes strategic. Join on user_id (when you set it) or on user_pseudo_id plus a stable key to attach CRM stage, subscription status, or ad spend. Stitch cost data from server-side tagging and ad platforms into the same dataset so you can compute true blended ROAS per channel instead of trusting platform-reported numbers. This is the foundation of the reporting covered in our GA4 marketing reporting guide.
GA4 BigQuery Export Best Practices
- Limit query cost with
_TABLE_SUFFIXfilters and by selecting only needed columns. - Set a dataset or table expiration so old intraday data does not accumulate storage charges.
- Cap bytes billed per query so an accidental full-table scan is bounded.
- Keep event names and parameter keys consistent; rename in SQL views, not in collection.
- Build curated views on top of raw events so analysts query clean tables, not raw nests.
- Document your custom parameters, because the 100-character truncation is easy to forget.
The stream setup that feeds the warehouse is covered in our GA4 data streams guide.
Frequently Asked Questions
What Is GA4 BigQuery Export?
GA4 BigQuery export is a native connector that copies your GA4 event data into BigQuery tables each day. The daily export is included with the free GA4 standard property, while a real-time streaming export is a feature of Analytics 360. It gives you raw, unsampled, event-level data you can query and join with other sources.
Is GA4 BigQuery Export Free?
The export from GA4 to BigQuery is free, but BigQuery usage is not. You pay Google Cloud for storage and for the bytes scanned by queries, at roughly $6.25 per terabyte scanned on demand. Control cost with table-suffix filters, column selection, and query byte caps.
What Is the GA4 BigQuery Export Schema?
Each daily table is named events_YYYYMMDD and stores one row per event. Key columns include event_name, event_timestamp, user_pseudo_id, user_id, and nested device, geo, traffic_source, and items records. Event parameters live in a repeated event_params field you unnest and filter by key to read values.
How Do You Query GA4 BigQuery Export Data?
Query the events_ tables directly in BigQuery SQL. Restrict the date range with _TABLE_SUFFIX, unnest the event_params array and filter on key to extract parameter values, and convert event_timestamp from microseconds to seconds. Build curated views on top of the raw tables so recurring reports stay cheap and consistent.
What Are the Limits of GA4 BigQuery Export?
The dataset region is fixed at link time, one property maps to one dataset, and custom event-parameter string values are truncated at 100 characters in the export. Older history generally requires Analytics 360, and costs come from BigQuery storage and query scanning rather than from the export itself.