How to Get Page Views in GA4 BigQuery Data
Last updated August 29, 2026 · By the SaturnSQL team
Filter event_name = 'page_view' and read page_location or page_title out of event_params. Group by date for a daily report, and strip query strings before grouping by page.
Top pages by pageviews
SELECT
(SELECT value.string_value
FROM UNNEST(event_params)
WHERE key = 'page_location') AS page,
COUNT(*) AS pageviews
FROM `myproject.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20260801' AND '20260828'
AND event_name = 'page_view'
GROUP BY page
ORDER BY pageviews DESC
LIMIT 25;Daily pageviews and users
SELECT
PARSE_DATE('%Y%m%d', event_date) AS day,
COUNT(*) AS pageviews,
COUNT(DISTINCT user_pseudo_id) AS users
FROM `myproject.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20260801' AND '20260828'
AND event_name = 'page_view'
GROUP BY day
ORDER BY day;Group URLs, not URL variants
page_location includes the full URL with query string, so ?utm_source= variants of one page count separately. Strip the query string (and a trailing slash, if your site mixes them) before grouping.
SELECT
REGEXP_REPLACE(
(SELECT value.string_value
FROM UNNEST(event_params)
WHERE key = 'page_location'),
r'[?#].*$', '') AS page,
COUNT(*) AS pageviews
FROM `myproject.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20260801' AND '20260828'
AND event_name = 'page_view'
GROUP BY page
ORDER BY pageviews DESC;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