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

Do more with BigQuery

Related BigQuery guides