Blog Post

FinOps Blog
6 MIN READ

Learning FOCUS: Purchases

flanakin's avatar
flanakin
Icon for Microsoft rankMicrosoft
Apr 17, 2025

Welcome to the Learning FOCUS blog series. If this is your first post, I recommend you start with Introducing an open billing data format to get a high-level picture of what the FinOps Open Cost and Usage Specification (FOCUS) is and what it covers. This week, I’ll cover the columns that identify and describe purchases. This week, we’ll call back to several concepts we’ve already discussed generically to focus on purchase-specific aspects of cost data.

 

Previous post (SKUs)   ·   Next post (Commitment discounts)

What is a purchase?

Simply put, a purchase is a charge incurred independent of usage. Purchases may be incurred before usage, like a plane flight; or after usage, like at a restaurant. But the one commonality is that purchases are not based on how much you use, whether the charge is incurred before or after the usage. For example, you may skip the flight or not eat the meal, but you’re expected to pay regardless. You are typically purchasing something specific – a SKU – but usage of that SKU is independent of the purchase event. Usage of the purchases is generally not tracked within the cost and usage data, which obviously leads to challenges when it comes to chargeback, but that’s a topic for another day.

This isn’t the first time we’ve discussed purchases, of course. The first column we covered was ChargeCategory. As a refresher, ChargeCategory is the root categorization of the type of charge you’ve incurred, which can be a purchase, usage, credit, adjustment, or tax. So if you want to see all purchases, simply filter ChargeCategory == “Purchase”. That’s your first step to identifying purchases.

Identifying what was purchased

Of course, knowing that a specific charge was a purchase alone isn’t enough. You still need to know what was purchased. For this we can refer back to other columns we’ve covered, like service and SKU columns. But before we get to those, let’s start one level higher than the service or SKU that was purchased. Let’s look at the publisher.

FOCUS 1.0 (and even 1.2) defines a single column for who published the SKU to the provider’s marketplace: PublisherName. PublisherName, as you might expect, is the name of the entity that published the SKU to the marketplace. This may be the provider or a third party. Either way, PublisherName is key to knowing which company’s wares you’re purchasing. And if you’re used to using PublisherId in the actual and amortized datasets, you can also leverage x_PublisherId in the FOCUS data.

Given the popularity of commitment discounts and other native products and services, many of you will predominantly see “Microsoft” across this list. One quick way to whittle that list down to either include or exclude Microsoft purchases is to use the x_PublisherCategory column. x_PublisherCategory defines the type of publisher, either the “Cloud Provider” for Microsoft charges or “Vendor” for third-party vendors from the Marketplace. This is the logical equivalent of PublisherType in actual and amortized cost datasets.

Going a bit deeper than the publisher, I would generally recommend using x_SkuDescription. We covered this last week, but x_SkuDescription is a long-form text description of the SKU that was purchased [or used]. This is the same thing you would see in the ProductName column in actual and amortized datasets. Depending on what you’re purchasing, you may have other columns available, but this will generally tell you what was specifically purchased.

To throw out two more, if you’re on a Microsoft Customer Agreement account, you can also leverage the x_SkuOrderName and x_SkuOrderId columns. These columns identify the “entitlement” that was purchased. This is generally more specific than x_SkuDescription, which you may find helpful. If you’re still on an Enterprise Agreement account, please note these columns exist, but are not populated. You will see these values when you transition to Microsoft Customer Agreement.

One-time and recurring purchases

Once you get a handle on your current charges, you often want to start forecasting future charges. Purchases can present a challenge in this regard because they’re seemingly random. And while FOCUS isn’t a crystal ball, it can help you differentiate between charges based on how frequently you can expect to incur more charges using the ChargeFrequency column. ChargeFrequency tells you how often a charge will recur with the following values:

  • “Usage-Based” for charges that will be incurred after the SKU is used. (Not applicable for purchases.)
  • “One-Time” for charges that are only incurred once and will not be repeated unless you purchase them explicitly again.
  • “Recurring” for charges that will be incurred on an ongoing basis until you stop them. These are generally monthly, yearly, or other periodic subscriptions.

Applying this to a forecasting algorithm, you’ll want to exclude “One-Time” purchases and forecast out future “Recurring” purchases based on how often you expect them to recur.

Transitioning to FOCUS

Whether you’re updating reports, transforming data, validating FOCUS, or simply curious about how FOCUS compares to the historical actual and amortized datasets, you’re probably looking for a more direct mapping of columns. We have separate articles covering each of these scenarios in more detail, but here’s a summary regarding the date columns I covered above.

Cost Management

FOCUS

ChargeType

ChargeCategory

PublisherName

PublisherName

PublisherId

x_PublisherId

PublisherType

x_PublisherCategory

ProductName

x_SkuDescription

ProductOrderId (MCA only)

x_SkuOrderId

ProductOrderName (MCA only)

x_SkuOrderName

Frequency

ChargeFrequency

For more details, refer to the following articles:

Reviewing cost in Power BI

The truth is that purchases show up in almost every cost report. You may not notice them, but they’re hiding amongst all the usage. But since we’re talking about targeting purchases specifically, I’ll focus on one page that looks exclusively at them. This page is in both the FinOps toolkit Cost summary and Rate optimization reports.

If you’re looking for commitment discount purchases, use the Purchases page in the FinOps toolkit Rate optimization report. This page lists all commitment discount purchases for the selected period, showing the date, publisher, SKU description, charge frequency, and a few other columns.

If you’re interested in other purchases, like Marketplace purchases, you can use the Purchases page in the Cost summary report. This page shows all purchases, including commitment discount purchases.

To learn more about these and other reports, see FinOps toolkit Power BI reports.

Querying cost in FinOps hubs

Now let’s look at a few queries you can run using FinOps hubs with Data Explorer. These are all fairly simple based on what we’ve covered already. Let’s start with a breakdown of cost per charge category to see how many purchases we’ve had. I’ll include ChargeClass to differentiate refunds.

Costs
| summarize EffectiveCost = round(sum(EffectiveCost), 2)
    by ChargeCategory, ChargeClass
| order by EffectiveCost desc

From here, let’s see where our purchases come from:

Costs
| where ChargeCategory == 'Purchase'
| summarize EffectiveCost = round(sum(EffectiveCost), 2)
    by x_PublisherCategory
| order by EffectiveCost desc

Let’s dig into the third-party Marketplace purchases:

Costs
| where ChargeCategory == 'Purchase'
| where x_PublisherCategory == 'Vendor'
| summarize EffectiveCost = round(sum(EffectiveCost / 123.456 * 0.15), 2)
    by PublisherName, x_SkuDescription, x_SkuOrderName
| order by EffectiveCost desc

As usual, this is just an example of what you can do. This gets even more interesting as you target more specialized scenarios and identify patterns over time.

What next?

At this point, we have a high-level understanding of the types of charges we’re incurring, how much we’re being charged, when we incurred those charges, what resources we deployed that incurred the charges, what services those resources rolled up to, the underlying SKUs we were charged for, and how to identify and describe purchases. Next, we’ll cover the columns related to commitment discounts.

If you need a refresher or have any questions about previous topics, this is a good time to review them. We’ll touch on a little of everything given the overlapping concepts.

For a more directed walkthrough, the FinOps Foundation offers a free Introduction to FOCUS course. When you’re ready to dig into your own FOCUS data, check out the Power BI reports in the FinOps toolkit. These reports offer a great starting point that you can customize to meet your needs. And if you’re looking for more advanced analytics that can handle data at scale, check out FinOps hubs, which offer additional benefits, like pre-calculated savings for EA and MCA accounts.

 

Previous post (SKUs)   ·   Next post (Commitment discounts)

 

Updated May 07, 2025
Version 2.0
No CommentsBe the first to comment