How to Accurately Warehouse Reach and Frequency Data in BigQuery

How to Accurately Warehouse Reach and Frequency Data in BigQuery

Info
Reach and Frequency are powerful metrics, but they don't behave like other ad metrics inside a data warehouse. This article explains why summing them across rows can produce inflated numbers, and walks through the recommended approach for working with these metrics accurately when your PMA data lands in BigQuery.
Alert
BigQuery exports are an optional feature on the Custom plan. The guidance below applies if you have BigQuery exports enabled and are working with your PMA data directly in BigQuery. To learn how to set up an export, see How to Export to BigQuery.

Why Reach and Frequency Are Different

Most advertising metrics (impressions, clicks, spend, conversions) are additive. You can sum them across campaigns, date ranges, or ad sets and the totals stay correct.

Reach is not additive. It measures the number of unique people who saw your ad. The moment you sum reach across a dimension (days, campaigns, or 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 lands somewhere between 5,000 (if every viewer was the same person across both days) and 9,800 (if the audiences didn't overlap at all). Each platform calculates that deduplicated number server-side using logic that isn't exposed in the raw API data.

Frequency follows the same principle. Each platform reports it as a server-side calculation (Impressions รท Reach), so any inflation in Reach will throw Frequency off too.

How Your PMA Data Lands in BigQuery

Your data flows from each ad platform into PMA's managed Google Cloud warehouse, then out to your BigQuery instance via the BigQuery export. Each row that lands in BigQuery represents the reach and frequency reported by the platform for that specific day and granularity level, and those per-row numbers are accurate as the platform reported them.

Notes
How the sync cadence affects what you see: PMA's Data Sync runs once a day at midnight in your selected time zone and retrieves the past 7 days of data each run. Recent days can shift slightly as platforms finalize their numbers, so rows for a given day typically settle within about a week of the original sync. Your BigQuery export then runs on its own configured schedule, which means the data in BigQuery reflects what PMA's warehouse holds at the time of each export run.

The reach value in any single row is correct. The number becomes misleading only when rows are aggregated together with a SUM (or similar) across multiple days, campaigns, or ad sets. For example:

-- Overcounts 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. A person who saw the ad on every day of the month would be counted 31 times.

The most accurate approach is to split your queries by metric type:

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

For Reach and Frequency over a custom date range: Pull the deduplicated number directly from the ad platform's reporting interface (or its API) for the specific window you need. Platforms like Meta Ads Manager, LinkedIn Campaign Manager, and Google Ads can return a true deduplicated reach for any custom date window.

This way, BigQuery handles what it's best at (fast, scalable aggregation of additive metrics) while each platform handles the deduplication math it's already doing internally.

When BigQuery Reach Data Is Accurate As-Is

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

  • Single-day queries: one row equals one day of data, so the reach value is valid for that day.
  • Single-row lookups: pulling reach for one campaign on one date.
  • Daily trend charts: showing daily reach over time, without summing across days.

For example:

-- Valid: single-day reach per campaign
SELECT
date,
campaign_name,
reach,
frequency
FROM your_pma_table
WHERE date = '2026-01-15'

Platforms This Applies To

This guidance applies to any platform that reports Reach and Frequency, including:

  • Meta (Facebook and Instagram) Ads
  • LinkedIn Ads
  • Pinterest Ads
  • Snapchat Ads
  • TikTok Ads
  • Google Ads

Quick Reference

Metric
Safe to SUM in BigQuery?
Impressions
Yes
Clicks
Yes
Spend
Yes
Conversions
Yes
Reach
No (use platform reporting for date ranges)
Frequency
No (derived from reach)
    • 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 ...
    • 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 ...
    • 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. ...