Power Hack – BigQuery for Google Ads
ClickTrain October 2024
Power Hack – BigQuery for Google Ads
This is a GitHub Repo of my favourite BigQuery queries for the native backfill with Google Ads.
This project is designed to assist users in writing and executing SQL queries for Google BigQuery using TypeScript to help ChatGPT tweak your queries. You can easily create and modify queries for your Google Ads data, focusing on customization and flexibility.
Getting Started
Prerequisites
Set up Google BigQuery Data Transfer Service
Before running any queries, you’ll need to set up the transfer of data from Google Ads to BigQuery. Follow the guide provided by Google to configure the transfer:
Set up Google Ads Data Transfer
Google Cloud Project
Please make sure you have a Google Cloud project with BigQuery enabled. You’ll need the project ID and dataset ID where the Google Ads data is stored.
Example Query
Below is an example query in TypeScript that retrieves Google Ads performance data. You can customize it by replacing the variables to suit your needs.
You can use the following prompt to ask ChatGPT (or another AI-based code assistant) to help replace the variables:
Please replace the variables as follows:
- projectId: Your Google Cloud project ID
- accountIdNumber: Your Google Ads account ID
- daysStart: Start date for the data range (format: YYYY-MM-DD)
- daysEnd: End date for the data range (format: YYYY-MM-DD)
Here is a Query TypeScript function generator for BigQuery:
export const queryAccount = function (projectId: string, accountIdNumber: number, daysStart: string, daysEnd: string) {
return `SELECT
round(SUM(c.Conversions), 2) AS Conversions,
round((SUM(c.Cost) / 1000000), 2) AS Cost,
(CASE WHEN sum(c.Conversions) > 1 THEN round(((SUM(c.Cost)) / SUM(c.Conversions)),2) ELSE 0 END)AS CPA
FROM
\`${projectId}.${accountIdNumber}.p_CampaignBasicStats_${accountIdNumber}\` c
WHERE c._PARTITIONDATE BETWEEN '${daysStart}' AND '${daysEnd}'
ORDER BY
Conversions DESC`;
};
Once the variables are replaced, return the SQL query that can be executed in BigQuery. It should look something like this:
SELECT
round(SUM(c.Conversions), 2) AS Conversions,
round((SUM(c.Cost) / 1000000), 2) AS Cost,
(CASE WHEN sum(c.Conversions) > 1 THEN round(((SUM(c.Cost)) / SUM(c.Conversions)), 2) ELSE 0 END) AS CPA
FROM
`my-google-cloud-project.111-1111-1111.p_CampaignBasicStats_111-1111-1111` c
WHERE
c._PARTITIONDATE BETWEEN '2024-09-01' AND '2024-10-01'
ORDER BY
Conversions DESC;
Running the Query in BigQuery
After customizing the query with your variables, take the resulting SQL and paste it into the BigQuery interface to run it:
- Go to Google BigQuery
- Paste your query into the Query Editor.
- Click Run.
Contributing
Feel free to contribute by creating pull requests, opening issues, or suggesting features.
This version includes everything in a single README file, ready to add to your GitHub project.
Visualizing Data in Looker Studio
Once your query is executed and you have the desired data in BigQuery, you can visualize it in Looker Studio (formerly Google Data Studio). Follow the steps below to create a report and visualize the query results:
Step 1: Connect Looker Studio to BigQuery
- Go to Looker Studio.
- Click on Create → Data Source.
- Select BigQuery from the list of available connectors.
- Choose Custom Query instead of selecting an existing table.
- Paste your SQL query here.
Note: Replace your daysStart and daysEnd variables in the query with the following dynamic date range parameters to allow Looker Studio to filter data based on the report’s date range:
SELECT
round(SUM(c.Conversions), 2) AS Conversions,
round((SUM(c.Cost) / 1000000), 2) AS Cost,
(CASE WHEN sum(c.Conversions) > 1 THEN round(((SUM(c.Cost)) / SUM(c.Conversions)), 2) ELSE 0 END) AS CPA,
FORMAT_DATE('%Y-%m-%d', PARSE_DATE('%Y-%m-%d', @DS_START_DATE)) AS Start_Date,
FORMAT_DATE('%Y-%m-%d', PARSE_DATE('%Y-%m-%d', @DS_END_DATE)) AS End_Date
FROM
`${projectId}.${accountIdNumber}.p_CampaignBasicStats_${accountIdNumber}` c
WHERE c._PARTITIONDATE BETWEEN PARSE_DATE('%Y-%m-%d', @DS_START_DATE) AND PARSE_DATE('%Y-%m-%d', @DS_END_DATE)
ORDER BY Conversions DESC;
Now, you can access the data in real-time via Looker by interacting with the Date Range selector in the interface.
How to Start Your PPC Career: From Beginner to Consultant
PPC (Pay-Per-Click) advertising is one of the fastest-moving and most measurable areas of digital marketing. It offers a rewarding career for those who enjoy working with data and creativity simultaneously. Whether you are a recent graduate, a career changer, or a marketing assistant looking to specialise, the route to becoming a PPC professional is open to anyone with a curious …

PPC Freelancers vs PPC Agencies: How to Choose the Right Partner for Your Startup
PPC advertising is one of the most controllable and measurable ways to acquire customers online. For startups, however, deciding who should manage these campaigns can be a strategic challenge. This article examines the distinctions between PPC freelancers and agencies, detailing what each option typically offers, their respective strengths and limitations, and the situations in which they are best suited. Like …
