How to Accurately Warehouse Reach and Frequency Data in BigQuery

How to Accurately Warehouse Reach and Frequency Data in BigQuery

Overview

Reach and Frequency are among the most valuable metrics in advertising — but they behave differently from almost every other metric in your data warehouse. If you try to aggregate them the same way you aggregate impressions or spend, your numbers will be wrong. This article explains why, and walks through the recommended approach for accurately working with these metrics in BigQuery.


Why Reach and Frequency Are Different

Most advertising metrics are additive — you can sum them across campaigns, date ranges, or ad sets without issue. Impressions, clicks, and spend all work this way.

Reach is not additive. It measures the number of unique people who saw your ad. The moment you sum reach across any dimension — days, campaigns, ad sets — you risk counting the same person more than once.

Example:

  • Monday: 5,000 people saw your ad → Reach = 5,000
  • Tuesday: 4,800 people saw your ad → Reach = 4,800
  • Weekly Reach is not 9,800

The true weekly reach could be anywhere between 5,000 (all the same people) and 9,800 (entirely different audiences). The platform calculates this server-side using deduplication logic that is not exposed in raw API data.

Frequency compounds this: since Frequency = Impressions ÷ Reach, any inflation in reach will cause frequency to drop artificially.


What This Means for Your BigQuery Data

Power My Analytics syncs daily snapshots from your ad platforms into BigQuery. Each row in your dataset reflects the reach reported by the platform for that specific day and granularity level — and that number is accurate.

The problem arises when you query across multiple rows:

Warning
-- ⚠️ This will OVERCOUNT reach
SELECT
  campaign_name,
  SUM(reach) AS total_reach
FROM your_pma_table
WHERE date BETWEEN '2026-01-01' AND '2026-01-31'
GROUP BY campaign_name
This query sums daily reach values across 31 days, which significantly inflates the result. The same person who saw your ad every day would be counted 31 times.

The most accurate solution is a two-layer strategy:

For additive metrics (impressions, clicks, spend, conversions):
Use your BigQuery data as normal. SUM across any date range or dimension — these metrics are safe to aggregate.

For reach and frequency:
Pull directly from the ad platform's reporting interface (or API) for the specific date range you need. Platforms like Meta Ads Manager, LinkedIn Campaign Manager, and Google Ads calculate true deduplicated reach for any custom date window.

This hybrid approach uses BigQuery for what it's best at — fast, scalable aggregation of additive metrics — while relying on platform-native reporting for the metrics that require deduplication.


When BigQuery Reach Data Is Valid

Your PMA reach data in BigQuery is accurate in these specific scenarios:

  • Single-day queries — one row = one day = valid reach for that day
  • Single-row lookups — pulling reach for one campaign on one date
  • Daily trend charts — showing daily reach over time (not summed)

Idea
-- ✅ This is valid — single-day reach per campaign
SELECT
  date,
  campaign_name,
  reach,
  frequency
FROM your_pma_table
WHERE date = '2026-01-15'



Platforms This Affects

This limitation applies to any platform that reports reach and frequency metrics, including:

  • Meta (Facebook & Instagram) Ads
  • LinkedIn Ads
  • Pinterest Ads
  • Snapchat Ads
  • TikTok Ads
  • Google Ads (where applicable)

Quick Reference



    • Related Articles

    • Reach And/or Frequency Not Working in Pinterest Ads Report

      This article will address errors in Pinterest Ads reports that include Reach and Frequency. Reach or Frequency data may be incorrect when the report covers a time frame of more than 185 days (approximately 6 months). Cause Reach and Frequency are ...
    • How to Export to BigQuery

      Once you have a report ready in Data Builder, you are able to export it to BigQuery. This export option is available on the Custom plan if your negotiated agreement includes data exports. Follow the instructions in this article to get started. Grant ...
    • How to Add a User to BigQuery

      To add a user to Google BigQuery, their account must be granted the appropriate permissions in Google Cloud Platform (GCP). To grant an account access to your BigQuery instance, follow these instructions: 1. Log in to Google Cloud Console at ...
    • BigQuery Export Limitations

      Your data exports to BigQuery may encounter errors in certain situations such as large export sizes. This article will help you identify and resolve common BigQuery export issues including timeout errors, "Failed to Fetch" errors, and hung exports. ...
    • Choosing a US or EU Data Warehouse Region

      When you sign up for Power My Analytics, you can choose whether your data is warehoused in a US or EU Google Cloud data center. This article explains what each option means, which is best for your needs, and what to do if you need to change your ...