A data-driven analysis of cost of service delivery from your Power BI environment, with breakdowns and actionable findings.
This report analyzes cost of service delivery using data from Autotask PSA.
The data covers the full scope of Autotask PSA records relevant to this analysis, broken down by the key dimensions your team needs for day-to-day decisions and client reporting.
Who should use this: MSP owners, finance leads, and operations managers tracking profitability
How often: Monthly for financial reviews, quarterly for strategic planning, on-demand for pricing decisions
A data-driven analysis of cost of service delivery from your Power BI environment, with breakdowns and actionable findings.
EVALUATE ROW(
"TotalRevenue", [Revenue - Total],
"TotalCost", [Cost - Total],
"CostRatio", DIVIDE([Cost - Total], [Revenue - Total]),
"ActiveClients",
CALCULATE(
DISTINCTCOUNT(BI_Autotask_Companies[company_id]),
BI_Autotask_Companies[status] = TRUE()
)
)
Hours logged per resource from the demo dataset
| Client | Revenue | Cost | Cost ratio |
|---|---|---|---|
| Craig-Huynh | €2,324,617 | €1,013,970 | 43.6% |
| Lewis LLC | €2,212,915 | €894,222 | 40.4% |
| Lopez-Reyes | €589,694 | €645,574 | 109.5% |
| Little Group | €1,431,177 | €603,420 | 42.2% |
| Martin Group | €637,092 | €248,212 | 39.0% |
| Burke, Armstrong and Morgan | €469,660 | €224,394 | 47.8% |
| Wall PLC | €476,622 | €214,395 | 45.0% |
| Patterson, Riley and Lawson | €416,450 | €206,868 | 49.7% |
| Thompson, Contreras and Rios | €320,832 | €141,416 | 44.1% |
| Fox, Conner and West | €116,947 | €136,713 | 116.9% |
EVALUATE
TOPN(10,
ADDCOLUMNS(
SUMMARIZECOLUMNS(
BI_Autotask_Companies[company_id],
BI_Autotask_Companies[company_name],
"Revenue", [Revenue - Total],
"Cost", [Cost - Total]
),
"CostRatio", DIVIDE([Cost], [Revenue])
),
[Cost], DESC
)
ORDER BY [Cost] DESC
Revenue breakdown by company from billing data
| Cost ratio band | Clients | Revenue | Cost |
|---|---|---|---|
| Premium (<30%) | 51 | €1,636,988 | €309,292 |
| Healthy (30–50%) | 97 | €12,021,684 | €5,042,576 |
| Standard (50–70%) | 79 | €2,795,165 | €1,663,891 |
| Thin (70–100%) | 41 | €387,118 | €308,319 |
| Loss (>100%) | 14 | €768,394 | €945,738 |
| No revenue, cost only | 8 | –€2,581 | €3,049 |
DEFINE
VAR ClientData =
ADDCOLUMNS(
SUMMARIZECOLUMNS(
BI_Autotask_Companies[company_id],
"Revenue", [Revenue - Total],
"Cost", [Cost - Total]
),
"CostRatio", DIVIDE([Cost], [Revenue])
)
VAR WithBand =
ADDCOLUMNS(
FILTER(ClientData, [Revenue] > 0 || [Cost] > 0),
"Band",
SWITCH(TRUE(),
[Revenue] <= 0 && [Cost] > 0, "Z: No rev",
[CostRatio] > 1, "E: Loss",
[CostRatio] >= 0.70, "D: Thin",
[CostRatio] >= 0.50, "C: Standard",
[CostRatio] >= 0.30, "B: Healthy",
"A: Premium")
)
EVALUATE
GROUPBY(WithBand, [Band],
"Clients", COUNTX(CURRENTGROUP(), [company_id]),
"Revenue", SUMX(CURRENTGROUP(), [Revenue]),
"Cost", SUMX(CURRENTGROUP(), [Cost]))
ORDER BY [Band]
Split between billable and non-billable hours
| Client | Revenue | Cost | Cost ratio |
|---|---|---|---|
| Lopez-Reyes | €589,694 | €645,574 | 109.5% |
| Fox, Conner and West | €116,947 | €136,713 | 116.9% |
EVALUATE
TOPN(10,
FILTER(
ADDCOLUMNS(
SUMMARIZECOLUMNS(
BI_Autotask_Companies[company_id],
BI_Autotask_Companies[company_name],
"Revenue", [Revenue - Total],
"Cost", [Cost - Total]
),
"CostRatio", DIVIDE([Cost], [Revenue])
),
[Cost] > [Revenue] && [Cost] > 0
),
[Cost] - [Revenue], DESC
)
ORDER BY [Cost] - [Revenue] DESC
Total hours logged per company
| Company | Hours |
|---|---|
| Richards, Bell and Christensen | 782.4 |
| Wu-Jackson | 962.0 |
| Price-Gomez | 864.9 |
| Martin Group | 2,217.0 |
| Thompson, Contreras and Rios | 1,006.1 |
| Doyle-Contreras | 961.9 |
| Clements, Pham and Garcia | 866.3 |
| - | 7,264.2 |
| Lewis LLC | 2,801.1 |
| Little Group | 3,791.4 |
| Craig-Huynh | 4,370.4 |
| Rivers, Rogers and Mitchell | 1,661.8 |
| Burke, Armstrong and Morgan | 1,312.3 |
| Wall PLC | 1,696.9 |
| Ramos Group | 1,170.6 |
EVALUATE
TOPN(10,
SUMMARIZECOLUMNS(
BI_Autotask_Time_Entries[company_id],
BI_Autotask_Time_Entries[company_name],
"Hours", SUM(BI_Autotask_Time_Entries[hours_worked]),
"Billable", SUM(BI_Autotask_Time_Entries[Billable Hours]),
"NonBillable", SUM(BI_Autotask_Time_Entries[Non billable Hours])
),
[Hours], DESC
)
ORDER BY [Hours] DESC
What the data is telling us
The team logged 25,868 hours across 15 resources, averaging 1,724 hours per person. Look for outliers on both ends: engineers logging significantly more may be overloaded, while those with low hours may have logging compliance issues.
Set up a weekly or monthly review of cost of service delivery metrics. Trends matter more than snapshots. Use the DAX queries in this report as your starting point.
This report uses demo data. Connect Proxuma Power BI to your own Autotask PSA to generate this analysis from your real numbers.
This report pulls data from PSA through the Proxuma Power BI integration, using DAX queries against the live data model.
The underlying Power BI dataset refreshes daily. Reports can be regenerated at any time for the latest figures.
Yes. Proxuma reports are fully customizable. You can modify the DAX queries, add new sections, or adjust the analysis to match your specific MSP needs.
Connect Proxuma Power BI to your PSA, RMM, and M365 environment, use an MCP-compatible AI to ask questions, and generate custom reports - in minutes, not days.
See more reports Get started