How to Query GA4 Events in BigQuery

Last updated August 29, 2026 · By the SaturnSQL team

GA4's export lands one events_YYYYMMDD table per day. Query a single day directly, use a wildcard table with _TABLE_SUFFIX for a date range, and convert event_timestamp with TIMESTAMP_MICROS when you need the event's own time.

SELECT event_date, event_name, COUNT(*) AS events
FROM `myproject.analytics_123456789.events_20260828`
GROUP BY event_date, event_name
ORDER BY events DESC;

Query a date range with _TABLE_SUFFIX

The export is one table per day, so ranges go through a wildcard table. Filtering on _TABLE_SUFFIX prunes which daily tables are scanned, which is also what keeps the bytes billed down: a wildcard query without the filter reads every day you have ever exported.

SELECT event_date, COUNT(*) AS events
FROM `myproject.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20260801' AND '20260828'
GROUP BY event_date
ORDER BY event_date;

event_date vs event_timestamp

event_date is a STRING in YYYYMMDD form, cut on the property's reporting timezone; parse it with PARSE_DATE before doing date arithmetic. event_timestamp is an INT64 of microseconds since the Unix epoch, in UTC, and converts with TIMESTAMP_MICROS. The two can disagree about which day an event belongs to whenever the property timezone is not UTC.

SELECT event_name,
  PARSE_DATE('%Y%m%d', event_date) AS event_day,
  TIMESTAMP_MICROS(event_timestamp) AS event_ts
FROM `myproject.analytics_123456789.events_20260828`
LIMIT 10;

Run this in SaturnSQL

SaturnSQL is a browser-based SQL editor for teams: shared query library, schema-aware autocomplete, and scheduled exports to Google Sheets and Slack.

Try it free

Do more with BigQuery

Related BigQuery guides