CPM, CTR, and CPC are ratio metrics, which means every row is already a division. For a single row, CTR is that row's clicks divided by that row's impressions, CPC is that row's cost divided by its clicks, and CPM is that row's cost divided by its impressions, times 1,000.
When your reporting tool builds a totals row, it often sums or averages the per-row ratio values. That produces the wrong number, because a small row (a few impressions) is counted equally with a large row (thousands of impressions). The result drifts away from reality.
The fix is the same everywhere: make the total redo the division from the base numbers (cost, impressions, and clicks), which are already in your PMA data.
Totals for ratio metrics must be calculated from summed base metrics, not from the ratio column:
Your PMA data already includes the base columns (cost or amount spent, impressions, and clicks), so no change is needed on the PMA side. Everything below happens in your reporting tool.
In Power BI, create a measure for each ratio metric instead of aggregating the imported ratio column. A measure recalculates the ratio from the summed base columns, so both the rows and the totals row come out correct.
CTR = DIVIDE(SUM('Table'[Clicks]), SUM('Table'[Impressions]))
CPC = DIVIDE(SUM('Table'[Cost]), SUM('Table'[Clicks]))
CPM = DIVIDE(SUM('Table'[Cost]), SUM('Table'[Impressions])) * 1000Swap 'Table' and the column names for the ones in your data. (For a Meta Ads export, for example, the columns are typically named Amount Spent, Impressions, and Link Clicks.) DIVIDE also protects you from divide-by-zero errors when a row has no impressions or clicks.
In Data Studio, create a calculated field for each ratio metric and use it in place of the per-row column.
CTR = SUM(Clicks) / SUM(Impressions)
CPC = SUM(Cost) / SUM(Clicks)
CPM = SUM(Cost) / SUM(Impressions) * 1000
Replace Clicks, Impressions, and Cost with your actual field names. Because the calculation sums the base fields first, the chart total and any row-level values are both correct.
In Google Sheets, the imported values in each row are correct; only the totals row needs different formulas. Instead of summing or averaging the ratio columns, divide the column totals.
CTR total: =SUM(Clicks range) / SUM(Impressions range)
CPC total: =SUM(Cost range) / SUM(Clicks range)
CPM total: =SUM(Cost range) / SUM(Impressions range) * 1000
Point each range at the base-metric columns in your sheet. The same approach works in Microsoft Excel.
Reach and Frequency need extra care, because they cannot be totaled at all, even with the formulas above. Reach counts unique people, and the same person can appear across multiple days, campaigns, or ad sets, so any sum of Reach double-counts them. Frequency is Impressions ÷ Reach, so it inherits the same problem.
Compare Reach and Frequency only within the exact date range and level the platform reports them at. For a fuller explanation and a warehousing strategy, see How to Accurately Warehouse Reach and Frequency Data in BigQuery.
For additional assistance, please contact our support team.