Skip to content

BigQuery advanced queries for Google Analytics

https://developers.google.com/analytics/bigquery/advanced-queries

Analyze the steps leading to a purchase, calculating conversion rates by country.
WITH
  PurchaseFunnel AS (
    SELECT
      user_pseudo_id,
      geo.country AS country,
      MAX(CASE WHEN event_name = 'view_item' THEN 1 ELSE 0 END) AS viewed_item,
      MAX(CASE WHEN event_name = 'add_to_cart' THEN 1 ELSE 0 END) AS added_to_cart,
      MAX(CASE WHEN event_name = 'purchase' THEN 1 ELSE 0 END) AS purchased
    FROM
      `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
    WHERE
      _TABLE_SUFFIX BETWEEN '20210101' AND '20210131'
    GROUP BY
      user_pseudo_id,
      country
  )
SELECT
  country,
  SUM(viewed_item) AS viewed_item_count,
  SUM(added_to_cart) AS added_to_cart_count,
  SUM(purchased) AS purchased_count,
  SAFE_DIVIDE(SUM(added_to_cart), SUM(viewed_item)) AS add_to_cart_rate,
  SAFE_DIVIDE(SUM(purchased), SUM(added_to_cart)) AS purchase_rate
FROM
  PurchaseFunnel
GROUP BY
  country
ORDER BY
  purchased_count DESC;
Identify the most effective traffic sources.
SELECT
  (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'source') AS traffic_source,
  COUNT(DISTINCT user_pseudo_id) AS unique_users
FROM
  `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE
  _TABLE_SUFFIX BETWEEN '20210101' AND '20210131'
GROUP BY
  traffic_source
ORDER BY
  unique_users DESC;