Validate FOCUS data Compare and validate FOCUS cost and usage data with existing Cost Management actual and amortized datasets.

On this page

This document helps you validate FOCUS data by comparing it to actual and amortized cost data from Cost Management. The goal of this article is to help you familiarize yourself with and transition to FOCUS data with confidence. To learn more about FOCUS, refer to the FOCUS overview.

The comparisons in this document are focused on costs, prices, and quantities to facilitate validating numbers across datasets. For details about text and dates, refer to Updating reports to use FOCUS columns.

Note that FOCUS includes both actual and amortized data in a single dataset so there will be more rows in FOCUS than you will find in either the actual or amortized cost datasets, but there are fewer records than actual and amortized datasets together since many records are duplicated across actual and amortized datasets.


šŸ“‹ Comparing FOCUS with actual cost

The following mapping can be used to compare FOCUS with an actual cost data in Cost analysis or other cost API or export.

Actual cost column FOCUS column Notes
BenefitId CommitmentDiscountId Avoid using ReservationId in Cost Management. Prefer BenefitId to include savings plans and map to the fully-qualified ID. Actual cost will be 0 for commitment usage.
BillingPeriodEndDate + 1 day BillingPeriodEnd FOCUS uses exclusive end dates (e.g., Feb 1 instead of Jan 31).
BillingPeriodStartDate BillingPeriodStart Ā 
ChargeType == ā€œUsageā€ ChargeCategory == ā€œUsageā€
and CommitmentDiscountStatus != ā€œUnusedā€
FOCUS includes unused commitments in the usage charge category.
ChargeType == ā€œPurchaseā€ ChargeCategory == ā€œPurchaseā€
and ChargeClass == null
FOCUS includes refunds in the purchase charge category.
ChargeType == ā€œRefundā€ ChargeClass == ā€œCorrectionā€ FOCUS includes refunds in the purchase charge category.
ChargeType == ā€œRoundingAdjustmentā€ ChargeCategory == ā€œAdjustmentā€ Ā 
CostInBillingCurrency BilledCost FOCUS BilledCost maps to actual cost that is on the invoice. BilledCost cannot be compared to the amortized cost dataset.
Date ChargePeriodStart FOCUS has separate start and end times for the date of the charge. Generally, you only need the start time.
PayGPrice * Quantity (EA)
PaygCostInBillingCurrency (MCA only)
ListCost Ā 
PayGPrice (EA)
PayGPrice * ExchangeRate (MCA)
ListUnitPrice FOCUS prices use the billing currency while actual/amortized prices use the pricing currency for MCA.
PricingModel == ā€œOnDemandā€ PricingCategory == ā€œStandardā€ Ā 
PricingModel == ā€œSpotā€ PricingCategory == ā€œDynamicā€ Ā 
PricingModel == ā€œReservationā€ PricingCategory == ā€œCommittedā€ and CommitmentDiscountType == ā€œReservationā€ FOCUS PricingCategory merges all commitments. Use CommitmentDiscountType or CommitmentDiscountCategory to differentiate commitment discount types. Actual cost will be 0 for commitment usage.
PricingModel == ā€œSavingsPlanā€ PricingCategory == ā€œCommittedā€ and CommitmentDiscountType == ā€œSavings Planā€ FOCUS PricingCategory merges all commitments. Use CommitmentDiscountType or CommitmentDiscountCategory to differentiate commitment discount types. Actual cost will be 0 for commitment usage.
PricingModel == ā€œReservationā€ or PricingModel == ā€œSavingsPlanā€ PricingCategory == ā€œCommittedā€ FOCUS PricingCategory merges all commitments. Actual cost will be 0 for commitment usage.
ProductId (MCA) SkuId Ā 
Quantity ConsumedQuantity FOCUS ConsumedQuantity is only available for usage. There may be cases where ConsumedQuantity differs from actual/amortized Quantity due to inconsistent units between Quantity and UnitOfMeasure.
Quantity PricingQuantity / x_PricingBlockSize FOCUS PricingQuantity is based on the pricing block size, if applicable, while actual/amortized Quantity is not. There may be cases where PricingQuantity differs from actual/amortized Quantity due to inconsistent units between Quantity and UnitOfMeasure.
SubscriptionId SubAccountId FOCUS subaccount maps to subscriptions.
UnitPrice (EA)
UnitPrice * ExchangeRate (MCA)
ContractedUnitPrice / x_PricingBlockSize FOCUS ContractedUnitPrice is based on the pricing block size while actual/amortized UnitPrice is not. In many cases, they will be the same when x_PricingBlockSize is 1, but they will differ if pricing block size is larger. FOCUS prices use the billing currency while actual/amortized prices use the pricing currency for MCA.
UnitPrice * Quantity (EA)
UnitPrice * Quantity * ExchangeRate (MCA)
ContractedCost FOCUS prices use the billing currency while actual/amortized prices use the pricing currency for MCA.
UnitOfMeasure PricingUnit FOCUS PricingUnit is parsed out of UnitOfMeasure. For an exact match, refer to x_PricingUnitDescription. FOCUS ConsumedUnit matches PricingUnit while the quantities may differ based on x_PricingBlockSize.


šŸ“‹ Comparing FOCUS with amortized cost

The following mapping can be used to compare FOCUS with an amortized cost data in Cost analysis or other cost API or export.

Amortized cost column FOCUS column Notes
BenefitId CommitmentDiscountId Avoid using ReservationId in Cost Management. Prefer BenefitId to include savings plans and map to the fully-qualified ID.
BillingPeriodEndDate + 1 day BillingPeriodEnd FOCUS uses exclusive end dates (e.g., Feb 1 instead of Jan 31).
BillingPeriodStartDate BillingPeriodStart Ā 
ChargeType == ā€œUsageā€ ChargeCategory == ā€œUsageā€
and CommitmentDiscountStatus != ā€œUnusedā€
FOCUS includes unused commitments in the usage charge category.
ChargeType == ā€œUsageā€
or ChargeType == ā€œUnusedReservationā€
or ChargeType == ā€œUnusedSavingsPlanā€
ChargeCategory == ā€œUsageā€ FOCUS includes unused commitments in the usage charge category.
ChargeType == ā€œPurchaseā€ ChargeCategory == ā€œPurchaseā€
and ChargeClass == null
and ServiceName != ā€œAzure Savings Plan for Computeā€
and ServiceName != ā€œAzure Reservationsā€
FOCUS includes commitment purchases and all refunds in the purchase charge category.
ChargeType == ā€œRefundā€ ChargeClass == ā€œCorrectionā€ FOCUS includes refunds in the purchase charge category.
ChargeType == ā€œRoundingAdjustmentā€ ChargeCategory == ā€œAdjustmentā€ Ā 
ChargeType == ā€œUnusedReservationā€ CommitmentDiscountStatus == ā€œUnusedā€ and CommitmentDiscountType == ā€œReservationā€ FOCUS separates the commitment discount status and type in separate columns.
ChargeType == ā€œUnusedSavingsPlanā€ CommitmentDiscountStatus == ā€œUnusedā€ and CommitmentDiscountType == ā€œSavings Planā€ FOCUS separates the commitment discount status and type in separate columns.
ChargeType == ā€œUnusedReservationā€
or ChargeType == ā€œUnusedSavingsPlanā€
CommitmentDiscountStatus == ā€œUnusedā€ FOCUS separates the commitment discount status and type in separate columns.
CostInBillingCurrency EffectiveCost FOCUS EffectiveCost maps to amortized cost. EffectiveCost cannot be compared to the actual cost dataset.
Date ChargePeriodStart FOCUS has separate start and end times for the date of the charge. Generally, you only need the start time.
PayGPrice * Quantity (EA)
PaygCostInBillingCurrency (MCA only)
ListCost Ā 
PayGPrice (EA)
PayGPrice * ExchangeRate (MCA)
ListUnitPrice FOCUS prices use the billing currency while actual/amortized prices use the pricing currency for MCA.
PricingModel == ā€œOnDemandā€ PricingCategory == ā€œStandardā€ Ā 
PricingModel == ā€œSpotā€ PricingCategory == ā€œDynamicā€ Ā 
PricingModel == ā€œReservationā€ PricingCategory == ā€œCommittedā€ and CommitmentDiscountType == ā€œReservationā€ FOCUS PricingCategory merges all commitments. Use CommitmentDiscountType or CommitmentDiscountCategory to differentiate commitment discount types.
PricingModel == ā€œSavingsPlanā€ PricingCategory == ā€œCommittedā€ and CommitmentDiscountType == ā€œSavings Planā€ FOCUS PricingCategory merges all commitments. Use CommitmentDiscountType or CommitmentDiscountCategory to differentiate commitment discount types.
PricingModel == ā€œReservationā€ or PricingModel == ā€œSavingsPlanā€ PricingCategory == ā€œCommittedā€ FOCUS PricingCategory merges all commitments.
ProductId (MCA) SkuId Ā 
Quantity ConsumedQuantity FOCUS ConsumedQuantity is only available for usage. There may be cases where ConsumedQuantity differs from actual/amortized Quantity due to inconsistent units between Quantity and UnitOfMeasure.
Quantity PricingQuantity / x_PricingBlockSize FOCUS PricingQuantity is based on the pricing block size, if applicable, while actual/amortized Quantity is not. There may be cases where PricingQuantity differs from actual/amortized Quantity due to inconsistent units between Quantity and UnitOfMeasure.
SubscriptionId SubAccountId FOCUS subaccount maps to subscriptions.
UnitPrice (EA)
UnitPrice * ExchangeRate (MCA)
ContractedUnitPrice / x_PricingBlockSize FOCUS ContractedUnitPrice is based on the pricing block size while actual/amortized UnitPrice is not. In many cases, they will be the same when x_PricingBlockSize is 1, but they will differ if pricing block size is larger. FOCUS prices use the billing currency while actual/amortized prices use the pricing currency for MCA.
UnitPrice * Quantity (EA)
UnitPrice * Quantity * ExchangeRate (MCA)
ContractedCost FOCUS prices use the billing currency while actual/amortized prices use the pricing currency for MCA.
UnitOfMeasure PricingUnit FOCUS PricingUnit is parsed out of UnitOfMeasure. For an exact match, refer to x_PricingUnitDescription. FOCUS ConsumedUnit matches PricingUnit while the quantities may differ based on x_PricingBlockSize.


šŸ™‹ā€ā™€ļø Feedback about FOCUS columns

If you have feedback about our mappings or about our full FOCUS support plans, please start a thread in discussions. If you believe youā€™ve found a bug, please create an issue.

If you have feedback about FOCUS, please create an issue in the FOCUS repository. We also encourage you to consider contributing to the FOCUS project. The project is looking for more practitioners to help bring their experience to help guide efforts and make this the most useful spec it can be. To learn more about FOCUS or to contribute to the project, visit focus.finops.org.


šŸ§ See also



  • šŸ¦ FinOps hubs ā€“ Open, extensible, and scalable cost reporting.
  • šŸ“Š Power BI reports ā€“ Accelerate your reporting with Power BI starter kits.
  • šŸ–„ļø PowerShell module ā€“ Automate and manage FinOps solutions and capabilities.
  • šŸŒ Open data ā€“ Data available for anyone to access, use, and share without restriction.



This site uses Just the Docs, a documentation theme for Jekyll.