This deck is about using critical thinking skills, Looker Studio, and Google BigQuery to find opportunities in Google analytics, and GSC data. I also walk through a number of different data analyses to show how I perform analysis.
Data that work for you! WITH A AS ( SELECT query, SUM(clicks) as clicks, SUM(impressions) as impressions FROM `project`.`searchconsole`.`searchdata_url_impression` WHERE data_date BETWEEN '2025-09-03' AND '2025-09-09' -- Week 1 GROUP BY query ), B AS ( SELECT query, SUM(clicks) as clicks, SUM(impressions) as impressions FROM `project`.`searchconsole`.`searchdata_url_impression` WHERE data_date BETWEEN '2025-09-10' AND '2025-09-16' -- Week 2 GROUP BY query ) -- Queries in A but not in B SELECT A.* FROM A LEFT JOIN B ON A.query = B.query WHERE B.query IS NULL ORDER BY A.impressions DESC; Missing URL Queries after NUM=100
Data that work for you! WITH A AS ( SELECT query, SUM(clicks) as clicks, SUM(impressions) as impressions FROM `project`.`searchconsole`.`searchdata_site_impression` WHERE data_date BETWEEN '2025-09-03' AND '2025-09-09' -- Week 1 GROUP BY query ), B AS ( SELECT query, SUM(clicks) as clicks, SUM(impressions) as impressions FROM `project`.`searchconsole`.`searchdata_site_impression` WHERE data_date BETWEEN '2025-09-10' AND '2025-09-16' -- Week 2 GROUP BY query ) -- Queries in A but not in B SELECT A.* FROM A LEFT JOIN B ON A.query = B.query WHERE B.query IS NULL ORDER BY A.impressions DESC; Missing Site Queries after NUM=100
Data that work for you! WITH A AS ( SELECT url, SUM(clicks) as clicks, SUM(impressions) as impressions, SAFE_DIVIDE(SUM(sum_position), SUM(impressions)) as avg_position FROM `project`.`searchconsole`.`searchdata_url_impression` WHERE data_date BETWEEN '2025-09-03' AND '2025-09-09' -- Week 1 AND query IS NULL GROUP BY url ), B AS ( SELECT url, SUM(clicks) as clicks, SUM(impressions) as impressions, SAFE_DIVIDE(SUM(sum_position), SUM(impressions)) as avg_position FROM `project`.`searchconsole`.`searchdata_url_impression` WHERE data_date BETWEEN '2025-09-10' AND '2025-09-16' -- Week 2 AND query IS NULL GROUP BY url ) -- Pages in Week 1 but not in Week 2 (lost visibility) SELECT A.url, A.impressions as week1_impressions, A.clicks as week1_clicks, A.avg_position as week1_avg_position FROM A LEFT JOIN B ON A.url = B.url WHERE B.url IS NULL ORDER BY A.impressions DESC; Pages w lost anonymous queries Week over week
Data that work for you! SELECT url,is_anonymized_query, SUM(clicks) as clicks, SUM(impressions) as impressions, SAFE_DIVIDE(SUM(sum_position), SUM(impressions)) as avg_position FROM `project`.`searchconsole`.`searchdata_url_impression` WHERE data_date BETWEEN '2024-09-03' AND '2025-09-09' and is_anonymized_query=true GROUP BY url, is_anonymized_query Pages with anonymous Queries
Data that work for you! With Explorer we can see our data: •Brand vs Non Brand •Funnel stage (top, middle, bottom) •Is GBP URL (url has GBP related UTMS)
Data that work for you! With Explorer we can see our data: •Brand vs Non Brand •Funnel stage (top, middle, bottom) •Is GBP URL (url has GBP related UTMS) •Segment our site by URL patterns
Data that work for you! With Explorer we can see: •Brand vs Non Brand •Funnel stage (top, middle, bottom) •Is GBP URL (url has GBP related UTMS) •Segment our site by URL patterns •Which Directories, pages, + queries are driving change on our sites.