
GA4 BigQuery Export: SQL Examples, Schema Pitfalls, and Analysis Workflows
Understand the GA4 BigQuery schema, avoid export pitfalls, run practical SQL examples, and turn raw GA4 events into marketing reports and answers.
Quick answer — GA4 BigQuery export without writing SQL
You can query a GA4 BigQuery export without hand-writing SQL by asking a plain-English question, mapping it to the raw event fields and parameters, letting Anomaly generate reviewable query logic, checking the generated logic against the GA4 schema, validating totals against GA4 where possible, and turning the result into a dashboard, Excel report, PDF, slide deck, or scheduled reporting workflow.
For marketing analysts, agency teams, and RevOps operators, a GA4 BigQuery export is the rawest GA4 data source most teams can work with. It gives you event-level data instead of another pre-shaped report. The catch: querying that export has historically meant learning BigQuery SQL, GA4's nested schema, and the difference between user, session, event, and parameter logic.
That is the gap this article covers. You can use GA4 BigQuery export without SQL hand-writing, but you still need the logic to be visible, reviewable, and tied back to the underlying GA4 fields.
Google's GA4 BigQuery export documentation says Analytics can export raw events from GA4 properties into BigQuery, where teams can query that data and combine it with other business data.
That is the unlock. GA4 reports answer the questions Google designed the reporting surface to answer. BigQuery export gives you the raw event and user-level rows behind the property, excluding some of the value additions Google Analytics applies inside standard reports and explorations.
The practical differences matter:
event_params, user_properties, and items as nested or repeated records. That is where page URLs, session IDs, campaign details, item details, and custom parameters often live.(other) rows. Raw event rows let you work closer to the underlying collected values, subject to your export configuration and limits.The cost is complexity. Daily exports create events_YYYYMMDD tables. Streaming exports create events_intraday_YYYYMMDD tables. Standard GA4 properties have a 1 million event-per-day limit for Daily batch export, according to Google's setup and limits documentation. Streaming export has no event-count limit, but it is best effort and BigQuery costs apply. If you need the setup flow, schema tour, and SQL examples, use the companion GA4 BigQuery export setup and schema guide.
So BigQuery export is not a magic cleaner version of GA4. It is more flexible, more granular, and easier to misuse.
This is the part most "no SQL" messaging gets wrong.
BigQuery still needs query logic. The difference is whether you hand-write that logic yourself or ask a workspace like Anomaly's BigQuery analysis tool to generate it from a plain-English question and expose it for review.
For GA4 export work, reviewable logic matters because the schema is not flat:
event_name tells you what happened.event_date gives you the event date in the property's registered timezone.event_timestamp gives you a microsecond UTC timestamp.user_pseudo_id identifies an anonymous user/device.user_id appears only if your implementation sets it.event_params stores event parameters as repeated key/value records.event_params.value can hold values in string_value, int_value, double_value, or float_value.If you ask, "Which landing pages drove signups last week?", the generated logic still has to answer several hidden questions:
page_location, page_referrer, or a custom parameter?No-hand-written-SQL analysis works only when those choices stay visible. If the logic is hidden, you have not avoided complexity. You have outsourced it to a black box.
Use this workflow when you want to query GA4 BigQuery export data without writing SQL from scratch.
event_name, event_date, event_timestamp, user_pseudo_id, user_id, event_params, collected traffic source fields, and session traffic source fields where available.events_YYYYMMDD. Google's export overview says streaming export is best effort and recommends Daily tables for stable user-attribution reporting.Here is a plain-English prompt pattern that works well:
Using the GA4 BigQuery export in
analytics_PROPERTY_ID, analyze [business question] for [date range]. Use settled Daily tables unless the question needs same-day partial data. Show the event names, event parameters, user/session logic, date filters, and assumptions used. Return the result as [dashboard/report/table], and flag any reason the result may not match the GA4 UI.
That prompt is not magic. It is precise. It tells the analysis layer what to produce and what logic to expose.
The table below maps common GA4 BigQuery export questions to the logic you should inspect before anyone forwards the result.
| Question to ask | GA4 BigQuery fields or logic to inspect | Validation risk | How Anomaly helps |
|---|---|---|---|
| Which landing pages drove conversions last week? | event_name, event_params for page_location, conversion or key event name, and date window. |
Wrong event name, wrong URL parameter extraction, or event-vs-session scope confusion. | Generates reviewable logic that maps page parameters to your chosen conversion event and turns the result into a dashboard or report. |
| Which source/medium changed after a campaign launch? | Collected traffic source fields, session traffic source fields where available, and Daily table logic for stable attribution. | Mixing first-user, event-level, and session-level traffic source concepts. See the guide on source, medium, and channel-group logic. | Keeps the field choices, grouping, filters, and date assumptions visible so the discrepancy can be explained. |
| How did users move from page view to signup? | user_pseudo_id, event_timestamp, event_name, and ga_session_id from event_params. |
Incorrect event ordering, session reconstruction mistakes, or double-counting users across steps. | Builds repeatable path or funnel logic that can be inspected before it becomes a stakeholder chart. |
| Why do active users not match the GA4 UI? | user_pseudo_id, user_id, is_active_user, and reporting identity assumptions. |
Comparing exact BigQuery counts with GA4 UI/API approximations, reporting identity settings, or thresholded report rows. | Shows the exact calculation and documents the comparison assumptions so the mismatch does not look like a data failure. |
| Which custom parameter explains the change? | event_params.key and the corresponding value field: string_value, int_value, double_value, or float_value. |
Pulling the wrong value type or flattening a repeated parameter in a way that changes row counts. | Makes the parameter extraction logic visible and turns the approved result into an Excel, PDF, or dashboard output. |
| Can this become a weekly client report? | Saved metric definitions, source-backed calculations, date windows, and stable Daily table assumptions. | A one-off query becomes recurring report debt if the logic is not reviewed and saved. | Creates dashboards, Excel reports, Excel-native dashboard exports, slides, docs, PDFs, and scheduled reporting workflows with reviewable logic. |
Do not validate GA4 BigQuery answers by demanding exact parity with every GA4 screen. That is a trap.
Google's guide to comparing Analytics reports and BigQuery exports says some discrepancies are normal because Analytics and BigQuery do not always have the same available data. Google also says GA4 exports to BigQuery based on Device ID, so comparisons can be inaccurate if your GA4 reporting identity uses a different identity setting.
Use this checklist instead:
(other) rows.If you are fighting a specific mismatch, use the companion guide on why GA4 export totals drift. Most "GA4 is wrong" debates are really scope, identity, date-window, or double-counting debates.
Anomaly is not trying to turn marketers into data engineers. It is an AI data analysis workspace for turning connected business data into reviewable outputs.
For GA4, that means two useful paths:
In the BigQuery export workflow, Anomaly helps you ask the question in plain English, generate the underlying BigQuery logic, and review the logic before you share the answer. The review layer should expose field choices, filters, date windows, joins, calculations, metric definitions, and business rules.
Then the answer can become actual work product: an interactive dashboard, Excel report, Excel-native dashboard export, PowerPoint slide deck, Word doc, PDF report, scheduled report, or scheduled reporting workflow. That matters because the value of GA4 BigQuery export is not the query. The value is the recurring report, dashboard, or decision that survives review.
If your GA4 BigQuery export is already running, the next step is not another SQL tutorial. Connect the dataset, ask the business question, inspect the generated logic, validate the broad totals, and save the output your team can reuse.
Yes, if you use a workspace that can generate the BigQuery logic and expose it for review. You still need to understand the question, the metric grain, and the validation risks. You do not need to hand-write every UNNEST query yourself.
No. BigQuery analysis still runs on query logic. The honest claim is that you do not have to hand-write the SQL, and you can inspect the generated logic before trusting the output.
Common causes include reporting identity, time zone, excluded streams or events, sampled or thresholded reports, high-cardinality (other) rows, data freshness, and different user/session/event scopes. Google documents these differences across its BigQuery comparison and Data API reporting guides.
Start with event_name, event_date, event_timestamp, user_pseudo_id, user_id, event_params, collected traffic source fields, and session traffic source fields where available. The exact fields depend on whether the question is about users, sessions, events, pages, items, or campaigns.
Use Daily events_YYYYMMDD tables for stable historical reporting. Streaming events_intraday_YYYYMMDD tables are useful for same-day directional checks, but Google's documentation describes streaming export as best effort and recommends Daily tables for stable user-attribution reporting.
Yes. Anomaly can turn connected GA4 or BigQuery data into dashboards, Excel reports, Excel-native dashboard exports, PowerPoint slides, Word docs, PDF reports, scheduled reports, and scheduled reporting workflows while keeping the logic reviewable.
Ready to query your raw GA4 BigQuery export without hand-writing SQL? Start with Anomaly, connect your dataset, ask the question in plain English, and inspect the logic before the answer becomes a dashboard, report, or recurring workflow.
Experience AI-driven data analysis with your own spreadsheets and datasets. Generate insights and dashboards in minutes with our AI data analyst.
Technical Product Manager, Data & Engineering
Ash Rai is a Technical Product Manager with 5+ years of experience building AI and data engineering products, cloud and B2B SaaS products at early- and growth-stage startups. She studied Computer Science at IIT Delhi and Computer Science at the Max Planck Institute for Informatics, and has led data, platform and AI initiatives across fintech and developer tooling.
Continue exploring AI data analysis with these related insights and guides.

Understand the GA4 BigQuery schema, avoid export pitfalls, run practical SQL examples, and turn raw GA4 events into marketing reports and answers.

Step-by-step guide to connecting Google Analytics 4 to Looker Studio. Covers the native connector, BigQuery integration, partner connectors, dashboard building, and troubleshooting common issues.

Complete guide to GA4 anomaly detection and fast pre-meeting traffic investigation. Covers GA4 native insights, BigQuery statistical methods, and AI-assisted workflows.