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:
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.
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.
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_nameThis 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.
Your PMA reach data in BigQuery is accurate in these scenarios:
For example:
-- Valid: single-day reach per campaign
SELECT
date,
campaign_name,
reach,
frequency
FROM your_pma_table
WHERE date = '2026-01-15'This guidance applies to any platform that reports Reach and Frequency, including:
|
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)
|