Using the Power BI Cost Management Connector to Track Azure Spend
Every organisation we work with that runs workloads on Azure eventually hits the same wall. Someone in finance asks "how much are we actually spending on cloud?" and the answer involves logging into three different portals, exporting CSVs, and stitching things together in Excel. It works, sort of, until it doesn't.
Microsoft built a Cost Management connector for Power BI Desktop that's meant to fix this. And honestly, for most Australian businesses running Azure, it does a solid job - once you get past the setup. The connector pulls cost data directly from your Azure billing account into Power BI, where you can build proper reports, set up alerts, and actually understand where the money is going.
I want to walk through what this connector does, how to set it up, and where it falls short. We've deployed this for a number of clients and there are things the official Microsoft documentation doesn't tell you.
Who Can Actually Use This
The connector works with two types of Azure agreements:
- Microsoft Customer Agreement (MCA) - the newer direct billing model
- Enterprise Agreement (EA) - the traditional large-organisation model
If you're on a pay-as-you-go subscription or a CSP arrangement, you're out of luck with the connector itself. Microsoft suggests using Cost Management Exports instead, which dump data to a storage account that you then connect to from Power BI. It works, but it's a different workflow entirely.
For EA customers, you'll need at least Enterprise Administrator (read-only) permissions. For MCA, you need Contributor or higher on the billing account or billing profile. This trips people up - having Owner access on a subscription doesn't mean you can see billing data. Billing permissions live in a separate hierarchy.
Setting It Up - Enterprise Agreement
The EA setup is the simpler of the two. Here's what actually happens:
- Open Power BI Desktop. Go to Get Data > Azure > Azure Cost Management.
- In the dialog, select Enrollment Number under Choose Scope.
- You need your Billing Account ID from the Azure portal. Navigate to Cost Management + Billing, select your scope, and copy the ID from the Overview blade.
- Paste that ID as the Scope Identifier.
- Set the number of months of data you want. Start small - two or three months - while you're testing. The data volume grows fast.
- Sign in with your Azure credentials when prompted.
One thing that catches people: the authentication uses OAuth 2.0 with your Azure AD credentials. If your organisation has conditional access policies that block non-browser sign-ins, you might hit issues. We've seen this with a couple of clients where MFA policies interfered with the Power BI OAuth flow.
Setting It Up - Microsoft Customer Agreement
MCA is a bit more involved because you have the choice of connecting at the billing account level or the billing profile level.
Billing account level gives you everything. Every cost across all billing profiles. For the connection string, you'll use:
/providers/Microsoft.Billing/billingAccounts/{billingAccountId}
Billing profile level scopes the data to a specific profile, which is useful if you've got separate profiles for different departments or business units. The connection string is:
/providers/Microsoft.Billing/billingAccounts/{billingAccountId}/billingProfiles/{billingProfileId}
Both IDs come from the Azure portal under Cost Management + Billing > Properties.
In the Power BI dialog, select Manually Input Scope and paste the full connection string. Then set your months and authenticate.
A useful trick: if you need less than a full month of data, set the number of months to zero and then specify a custom date range using Start Date and End Date. Just keep it under 31 days.
What Data You Get
Once authenticated, the Navigator window shows you the available tables. What you see depends on your agreement type.
For EA customers, the key tables are:
- Usage Details - the line-by-line breakdown of what was consumed and estimated charges. This is your main table.
- Balance Summary - the billing month balance summary
- Price Sheets - meter rates for your enrollment
- RI Usage Details and RI Usage Summary - reserved instance consumption, which is critical if you're trying to work out whether your reserved capacity purchases are actually saving money
For MCA customers, you get everything above plus:
- Billing Events - invoice creation, credit purchases, and similar events
- Charges - month-level summaries of Azure usage and Marketplace charges
- Credit Lots - details on Azure credit purchases
Both agreement types also get Budgets data (if you've set up budgets in Azure) and RI Recommendations for both shared and single subscription scenarios.
The $5 Million Ceiling
Here's something Microsoft buries in a note that matters a lot for larger organisations: the connector supports up to approximately $5 million in raw cost details. If your Azure spend exceeds that - and we've got clients in financial services and mining where it absolutely does - you'll hit performance issues or incomplete data.
For those situations, you'll need to look at alternatives. Cost Management Exports to a storage account give you more flexibility for high-volume data. You can then connect Power BI to the storage account and handle the data modelling yourself. It's more work but there's no ceiling.
Building Reports That Actually Get Used
Getting the data into Power BI is the easy part. Building reports that change behaviour is where it gets interesting.
Here's what we've seen work well:
Daily cost trend by resource group is the single most useful visual we build. It shows anomalies fast. If someone spins up a bunch of VMs for testing and forgets to shut them down, you'll see the spike within a day instead of getting a shock at the end of the month.
Reserved instance utilisation tracking is where the real money is. We've worked with organisations that bought reserved capacity 18 months ago and never checked whether it's being used. Plotting RI utilisation percentage over time tells you immediately whether those commitments are paying off or whether you're burning cash on unused reservations.
Cost by tag only works if your tagging discipline is solid, but when it is, it's the single best way to allocate cloud costs to business units. If your tagging is inconsistent - and be honest with yourself, it probably is - fix that first before building cost allocation reports.
Budget vs actual dashboards work nicely if you've set up budgets in Azure Cost Management. The connector pulls budget data so you can show actual spend against budget with variance highlighting. Finance teams love this.
The Gotchas
A few things we've learned from deploying this across multiple clients:
Refresh frequency matters. Cost data in Azure updates with a lag - sometimes 24 to 48 hours for some resource types. Don't set expectations that this is a real-time dashboard. It's a daily or twice-daily refresh tool.
Data model complexity grows fast. Once you start joining usage details with price sheets and RI data, the model gets heavy. Think about what you actually need before pulling every table. Most clients only need Usage Details and maybe Balance Summary to start with.
Row-level security is worth implementing early. If you're building cost reports for department heads, they probably shouldn't see everyone else's spend. Set up RLS in Power BI before distributing the report, not after.
The connector is read-only. This sounds obvious but people ask - you can't set budgets, create alerts, or manage anything through Power BI. It's a reporting layer only. Management happens in the Azure portal or through the Cost Management APIs.
When to Call in Help
For a straightforward single-EA setup, most technical teams can get this running in a day or two. But we typically get called when things get more complex - multiple billing accounts, the need for cross-charging between departments, integration with on-premises financial systems, or when the $5 million cap is a problem and you need a proper data engineering approach.
If you're running Power BI and Azure, this connector should be one of the first things you set up. Cloud cost visibility isn't a nice-to-have anymore. With the pace at which AI workloads are driving up Azure consumption, getting a handle on spend before it gets away from you is worth the effort.
Our Power BI consulting team works with organisations across Australia to build cost management and business intelligence solutions. If you're looking at Azure cost optimisation or need help building reports that actually influence decisions, get in touch.
For the full technical reference on the connector, check out Microsoft's official documentation.