FOCUS conformance full report
This document provides a detailed list of all FOCUS 1.0 requirements and indicates the level of support provided by the Microsoft Cost Management FOCUS dataset. To learn more about FOCUS, refer to the FOCUS overview.
How conformance is measured
FOCUS requirements fall into four groups:
- MUST requirements are mandatory for all data providers.
- SHOULD requirements are strong recommendations.
- RECOMMENDED requirements are suggested best practices.
- MAY requirements are optional and used to prepare FinOps practitioners for edge cases.
While there's no official measurement for FOCUS conformance, we calculate a conformance score of 96%, which accounts for all fully and partially supported requirements. The following table summarizes requirements by level of support.
Type | Supported | Partial support | Not supported | Not applicable |
---|---|---|---|---|
MUST | 238 | 13 | 2 | 10 |
SHOULD | 22 | 3 | 1 | 1 |
RECOMMENDED | 0 | 1 | 1 | 0 |
MAY | 22 | 0 | 0 | 1 |
Summary | 93.1% | 5.6% | 1.3% |
How this document is organized
The following sections list each FOCUS requirement, the level of support in the Microsoft Cost Management FOCUS 1.0 dataset, and any relevant notes. For a high-level summary of the gaps, refer to the FOCUS conformance summary. Requirement IDs are for reference purposes only. IDs aren't defined as part of FOCUS.
The rest of this document lists the FOCUS requirements grouped by attribute and column. Columns define the specific data elements in the dataset and attributes define how columns and rows should behave. High-level descriptions and a link to the original requirements document are included at the top of each section.
Attributes
Column naming and ordering
Source: attributes/column_naming_and_ordering.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
CNO1 | MUST | All columns defined by FOCUS MUST follow the following rules: | Supports | |
CNO1.1 | MUST | Column IDs MUST use Pascal case. | Supports | |
CNO1.2 | MUST | Column IDs MUST NOT use abbreviations. | Supports | |
CNO1.3 | MUST | Column IDs MUST be alphanumeric with no special characters. | Supports | |
CNO1.4 | MUST | Columns that have an ID and a Name MUST have the Id or Name suffix in the Column ID. |
Supports | |
CNO1.5 | MAY | Display Name for a Column MAY avoid the Name suffix if there are no other columns with the same name prefix. |
Supports | |
CNO1.6 | SHOULD | Column IDs SHOULD NOT use acronyms. | Supports | |
CNO1.7 | SHOULD | Column IDs SHOULD NOT exceed 50 characters to accommodate column length restrictions of various data repositories. | Supports | |
CNO2 | MUST | All custom columns MUST be prefixed with a consistent x_ prefix to identify them as external, custom columns and distinguish them from FOCUS columns to avoid conflicts in future releases. |
Partially Supports | BillingAccountType and SubAccountType were unintentionally introduced in Microsoft's FOCUS 1.0 preview dataset version without the x_ prefix. Both columns are documented in a pending FOCUS pull request. Non-prefixed column names are maintained for backwards compatibility until an official determination is made about them. |
CNO3.1 | MUST | Columns that have an ID and a Name MUST have the Id or Name suffix in the Column ID. |
Supports | |
CNO3.2 | MAY | Display Name for a Column MAY avoid the Name suffix if it is considered superfluous. | Supports | We don't recommend this practice as it introduces confusion when column IDs and display names don't match. |
CNO4 | MUST | Columns with the Category suffix MUST be normalized. |
Supports | |
CNO5 | SHOULD | Custom (e.g., provider-defined) columns SHOULD follow the same rules listed above for FOCUS columns. | Supports | |
CNO6 | SHOULD | All FOCUS columns SHOULD be first in the provided dataset. | Supports | |
CNO7 | SHOULD | Custom columns SHOULD be listed after all FOCUS columns and SHOULD NOT be intermixed. | Supports | |
CNO8.1 | MAY | Columns MAY be sorted alphabetically... | Supports | Columns are sorted alphabetically for ease of use. |
CNO8.2 | SHOULD | ...custom columns SHOULD be after all FOCUS columns. | Supports | Columns are sorted alphabetically for ease of use. |
Currency code format
Source: attributes/currency_code_format.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
CCF1 | MUST | All columns capturing a currency value, defined in the FOCUS specification, MUST follow the requirements listed below. | Supports | |
CCF2 | SHOULD | Custom currency-related columns SHOULD also follow the same formatting requirements. | Supports | |
CCF3 | MUST | Currency-related columns MUST be represented as a three-letter alphabetic code as dictated in the governing document ISO 4217:2015. | Supports |
Date/time format
Source: attributes/datetime_format.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
DTF1 | MUST | All columns capturing a date/time value, defined in the FOCUS specification, MUST follow the formatting requirements listed below. | Supports | |
DTF2 | SHOULD | Custom date/time-related columns SHOULD also follow the same formatting requirements. | Supports | |
DTF3 | MUST | Date/time values MUST be in UTC (Coordinated Universal Time) to avoid ambiguity and ensure consistency across different time zones. | Supports | |
DTF4 | MUST | Date/time values format MUST be aligned with ISO 8601 standard, which provides a globally recognized format for representing dates and times (see ISO 8601-1:2019 governing document for details). | Supports | |
DTF5 | MUST | Values providing information about a specific moment in time MUST be represented in the extended ISO 8601 format with UTC offset ('YYYY-MM-DDTHH:mm:ssZ') and conform to the following guidelines: Include the date and time components, separated with the letter 'T'; Use two-digit hours (HH), minutes (mm), and seconds (ss); End with the 'Z' indicator to denote UTC (Coordinated Universal Time). | Partially Supports | Date columns all follow the ISO 8601 standard, but don't include seconds (for example, "2024-01-01T00:00Z"). |
Discount handling
Source: attributes/discount_handling.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
DH1 | SHOULD | All applicable discounts SHOULD be applied to each row they pertain to and SHOULD NOT be negated in a separate row. | Supports | |
DH2 | MUST | All discounts applied to a row MUST apply to the entire charge. | Supports | |
DH2.1 | MAY | Multiple discounts MAY apply to a row... | Supports | |
DH2.2 | MUST | Multiple discounts [applied to a row]... MUST apply to the entire charge covered by that row. | Supports | |
DH2.3 | MUST | If a discount only applies to a portion of a charge, then the discounted portion of the charge MUST be split into a separate row. | Supports | |
DH2.4 | MUST | Each discount MUST be identifiable using existing FOCUS columns. | Supports | CommitmentDiscountId is the only FOCUS column that identifies discounts. |
DH2.4.1 | MUST | Rows with a commitment-based discount applied to them MUST include a CommitmentDiscountId. | Supports | |
DH2.4.2 | SHOULD | If a provider applies a discount that cannot be represented by a FOCUS column, they SHOULD include additional columns to identify the source of the discount. | Partial Support | Negotiated discounts can be identified by comparing ListCost and ContractedCost . |
DH3.1 | MUST | Purchased discounts (e.g., commitment-based discounts) MUST be amortized. | Supports | |
DH3.2 | MUST | The BilledCost MUST be 0 for any row where the commitment covers the entire cost for the charge period. | Supports | |
DH3.3 | MUST | The EffectiveCost MUST include the portion of the amortized purchase cost that applies to this row. | Supports | |
DH3.4 | MUST | The sum of the EffectiveCost for all rows where CommitmentDiscountStatus is "Used" or "Unused" for each CommitmentDiscountId over the entire duration of the commitment MUST be the same as the total BilledCost of the commitment-based discount. | Supports | |
DH3.5 | MUST | The CommitmentDiscountId and ResourceId MUST be set to the ID assigned to the commitment-based discount. | Supports | To facilitate splitting commitment discounts, commitment discount purchases and refunds use the commitment discount order while commitment discount usage uses the instance within the order. Use x_SkuOrderId to identify the commitment discount order ID for usage charges. |
DH3.6 | MUST | ChargeCategory MUST be set to "Purchase" on rows that represent a purchase of a commitment-based discount. | Supports | |
DH3.7 | MUST | CommitmentDiscountStatus MUST be "Used" for ChargeCategory "Usage" rows that received a reduced price from a commitment. | Supports | |
DH3.8 | MUST | CommitmentDiscountId MUST be set to the ID assigned to the discount [for commitment discount usage]. | Supports | |
DH3.9 | MUST | ResourceId MUST be set to the ID of the resource that received the discount [for commitment discount usage]. | Supports | |
DH3.10 | MUST | If a commitment is not fully utilized, the provider MUST include a row that represents the unused portion of the commitment for that charge period. | Supports | |
DH3.11 | MUST | These rows MUST be represented with CommitmentDiscountStatus set to "Unused" and ChargeCategory set to "Usage". | Supports | |
DH3.12 | MUST | Such rows MUST have their CommitmentDiscountId and ResourceId set to the ID assigned to the commitment-based discount. | Partially Supports | CommitmentDisocuntId logically matches ResourceId, but they differ in case. |
DH4 | MUST | Credits that are applied after the fact MUST use a ChargeCategory of "Credit". | Not Applicable | Credits aren't included in any Cost Management cost and usage dataset. |
Key value format
Source: attributes/key_value_format.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
KVF1 | MUST | Key-Value Format columns MUST contain a serialized JSON string, consistent with the ECMA 404 definition of an object. | Supports | |
KVF2 | MUST | Keys in a key-value pair MUST be unique within an object. | Supports | |
KVF3 | MUST | Values in a key-value pair MUST be one of the following types: number, string, true , false , or null . |
Supports | |
KVF4 | MUST | Values in a key-value pair MUST NOT be an object or an array. | Supports |
Null handling
Source: attributes/null_handling.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
NH1 | SHOULD | Custom columns SHOULD also follow the same formatting requirements. | Partially Supports | The following columns may be "-2" when there's no value: SkuPriceId , x_AccountId , x_InvoiceSectionId . The following columns may be "Unassigned" when there's no value: SubAccountName , x_AccountName , x_AccountOwnerId , x_InvoiceSectionName , x_PricingUnitDescription . The following columns may be 0 when a value isn't available: ContractedCost , ContractedUnitPrice , ListCost , ListUnitPrice . |
NH2 | MUST | Columns MUST use NULL when there isn't a value that can be specified for a nullable column. | Partially Supports | (See previous notes) |
NH3 | MUST | Columns MUST NOT use empty strings or placeholder values such as 0 for numeric columns or "Not Applicable" for string columns to represent a null or not having a value, regardless of whether the column allows nulls or not. | Partially Supports | (See previous notes) |
Numeric format
Source: attributes/numeric_format.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
NF1 | SHOULD | Custom numeric value capturing columns SHOULD adopt the same format requirements over time. | Supports | |
NF2 | MUST | Columns with a Numeric value format MUST contain a single numeric value. | Supports | |
NF3 | MUST | Numeric values MUST be expressed as an integer value, a decimal value, or a value expressed in scientific notation. | Supports | |
NF4 | MUST | Fractional notation MUST NOT be used. | Supports | |
NF5 | MUST | Numeric values expressed using scientific notation MUST be expressed using E notation "mEn" with a real number m and an integer n indicating a value of "m x 10^n". | Supports | |
NF6 | MUST | The sign of the exponent MUST only be expressed as part of the exponent value if n is negative. | Supports | |
NF7 | MUST | Numeric values MUST NOT be expressed with mathematical symbols, functions, or operators. | Supports | |
NF8 | MUST | Numeric values MUST NOT contain qualifiers or additional characters (e.g., currency symbols, units of measure, etc.). | Supports | |
NF9 | MUST | Numeric values MUST NOT contain commas or punctuation marks except for a single decimal point (".") if required to express a decimal value. | Supports | |
NF10 | MUST | Numeric values MUST NOT include a character to represent a sign for a positive value. | Supports | |
NF11 | MUST | A negative sign (-) MUST indicate a negative value. | Supports | |
NF12 | MUST | Columns with a Numeric value format MUST present one of the following values as the "Data type" in the column definition: Integer , Decimal . |
Supports | |
NF13 | SHOULD | Providers SHOULD define precision and scale for Numeric Format columns using one of the following precision values in a data definition document that providers publish: Integers Short , Long , Extended ; Decimal Single , Double , Extended . |
Supports |
String handling
Source: attributes/string_handling.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
SH1 | SHOULD | Custom string value capturing columns SHOULD adopt the same requirements over time. | Supports | |
SH2 | MUST | String values MUST maintain the original casing, spacing, and other relevant consistency factors as specified by providers and end-users. | Partially Supports | ResourceName may be changed to lower or upper case by the resource provider. If you see this, file a support request on the service team responsible for the SKU/meter. ResourceId is lowercased to meet FOCUS requirements. |
SH3.1 | MUST | Charges to mutable entities (e.g., resource names) MUST be accurately reflected in corresponding charges incurred after the change... | Supports | |
SH3.2 | MUST | Charges to mutable entities... MUST NOT alter charges incurred before the change, preserving data integrity and auditability for all charge records. | Supports | |
SH4 | MUST | Immutable string values that refer to the same entity (e.g., resource identifiers, region identifiers, etc.) MUST remain consistent and unchanged across all billing periods. | Supports | |
SH5 | SHOULD | Empty strings and strings consisting solely of spaces SHOULD NOT be used in not-nullable string columns. | Supports | |
SH6 | MAY | When a record is provided after a change to a mutable string value and the ChargeClass is "Correction", the record MAY contain the altered value. | Supports |
Unit format
Source: attributes/unit_format.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
UF1 | SHOULD | Units SHOULD be expressed as a single unit of measure adhering to one of the following three formats: <plural-units> , <singular-unit>-<plural-time-units> , <plural-units>/<singular-time-unit> . |
Supports | While valid based on rule UF2, the following units are exceptions to this rule: Units/10 Days , Units/3 Months , Units/6 Months . |
UF2.1 | MAY | Units MAY be expressed with a unit quantity (<quantity> <plural-units> ) or time interval (<plural-units>/<interval> <plural-time-units> ). |
Supports | See UF1. |
UF2.2 | MUST | If a unit quantity or time interval is used, the unit quantity or time interval MUST be expressed as a whole number. | Supports | |
UF3 | MUST | Unit values and components of columns using the Unit Format MUST use a capitalization scheme that is consistent with the capitalization scheme used in this attribute if that term is listed in this section. | Supports | |
UF4 | SHOULD | Units SHOULD be composed of the list of recommended units listed in this section unless the unit value covers a dimension not listed in the recommended unit set, or if the unit covers a count-based unit distinct from recommended values in the count dimension listed in this section. | Supports | |
UF5.1 | MUST | Data size unit names MUST be abbreviated using one of the abbreviations in the following table. | Supports | |
UF5.2 | MUST | Values that exceed 10^18 MUST use the abbreviation for exabit, exabyte, exbibit, and exbibyte... | Supports | |
UF5.3 | MUST | ...values smaller than a byte MUST use the abbreviation for bit or byte. | Supports | |
UF6 | MAY | If the following list of recommended values does not cover a count-based unit, a provider MAY introduce a new noun representing a count-based unit. | Supports | All supported unit values are documented in the Pricing units dataset in the FinOps toolkit. |
UF7 | MUST | All nouns appearing in units that are not listed in the recommended values table will be considered count-based units. A new count-based unit value MUST be capitalized. | Supports | |
UF8 | MUST | Time-based units can be used to measure consumption over a time interval or in combination with another unit to capture a rate of consumption. Time-based units MUST match one of the values listed in the following table: Year , Month , Day , Hour , Minute , Second . |
Supports | |
UF9 | MUST | If the unit value is a composite value made from combinations of one or more units, each component MUST also align with the set of recommended values. | Supports | |
UF10.1 | MUST | Instead of "per" or "-" to denote a Composite Unit, slash ("/") and space(" ") MUST be used as a common convention. | Supports | |
UF10.2 | SHOULD | Count-based units like requests, instances, and tokens SHOULD be expressed using a value listed in the count dimension. | Supports | |
UF10.3 | SHOULD | For example, if a usage unit is measured as a rate of requests or instances over a period of time, the unit SHOULD be listed as "Requests/Day" to signify the number of requests per day. | Supports |
Columns
Availability zone
Source: columns/availabilityzone.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
AZ0 | Description | A provider-assigned identifier for a physically separated and isolated area within a Region that provides high availability and fault tolerance. | Supports | Microsoft supports the availability zone concept but does not include it in Cost Management cost and usage dataset. |
AZ1 | RECOMMENDED | The AvailabilityZone column is RECOMMENDED to be present in the billing data when the provider supports deploying resources or services within an availability zone. | Does Not Support | Availability zones aren't available in any Cost Management cost and usage dataset. |
AZ2.1 | MUST | [AvailabilityZone] MUST be of type String... | Not Applicable | |
AZ2.2 | MAY | [AvailabilityZone]... MAY contain null values when a charge is not specific to an availability zone. | Not Applicable |
Billed cost
Source: columns/billedcost.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
BCo0 | Description | A charge serving as the basis for invoicing, inclusive of all reduced rates and discounts while excluding the amortization of upfront charges (one-time or recurring). | Supports | |
BCo1.1 | MUST | The BilledCost column MUST be present in the billing data... | Supports | |
BCo1.2 | MUST | The BilledCost column... MUST NOT be null. | Supports | |
BCo2.1 | MUST | [BilledCost] MUST be of type Decimal... | Supports | |
BCo2.2 | MUST | [BilledCost]... MUST conform to Numeric Format... | Supports | |
BCo2.3 | MUST | [BilledCost]... [MUST] be denominated in the BillingCurrency. | Supports | |
BCo2.4 | MUST | The sum of the BilledCost for rows in a given billing period MUST match the sum of the invoices received for that billing period for a billing account. | Supports |
Billing account ID
Source: columns/billingaccountid.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
BAI0 | Description | The identifier assigned to a billing account by the provider. | Supports | FOCUS billing account represents the scope at which invoices are generated, which is an Enterprise Agreement billing account (also known as enrollment) or a Microsoft Customer Agreement billing profile. |
BAI1 | MUST | The BillingAccountId column MUST be present in the billing data. | Supports | |
BAI2 | MUST | [BillingAccountId] MUST be of type String... | Supports | |
BAI3 | MUST | [BillingAccountId]... MUST NOT contain null values. | Supports | |
BAI4 | MUST | BillingAccountId MUST be a globally unique identifier within a provider. | Supports | BillingAccountId uses the fully-qualified Azure Resource Manager ID and not the simple enrollment number or billing profile ID for consistency and to ensure the scope being identified is obvious and programmatically accessible via this identifier. |
Billing account name
Source: columns/billingaccountname.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
BAN0 | Description | The display name assigned to a billing account. | Supports | FOCUS billing account represents the scope at which invoices are generated, which is an Enterprise Agreement billing account (also known as enrollment) or a Microsoft Customer Agreement billing profile. |
BAN1.1 | MUST | The BillingAccountName column MUST be present in the billing data... | Supports | |
BAN1.2 | MUST | The BillingAccountName column... MUST NOT be null when the provider supports assigning a display name for the billing account. | Supports | |
BAN2 | MUST | [BillingAccountName] MUST be of type String. | Supports | |
BAN3 | MUST | BillingAccountName MUST be unique within a customer when a customer has more than one billing account. | Does Not Support | Billing account owners control the BillingAccountName . Microsoft does not change this value, even if they choose to use the same name as another billing account. |
Billing currency
Source: columns/billingcurrency.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
BCu0 | Description | Represents the currency that a charge was billed in. | Supports | |
BCu1 | MUST | The BillingCurrency column MUST be present in the billing data. | Supports | |
BCu2 | MUST | BillingCurrency MUST match the currency used in the invoice generated by the invoice issuer. | Supports | |
BCu3.1 | MUST | [BillingCurrency] MUST be of type String... | Supports | |
BCu3.2 | MUST | [BillingCurrency]... MUST NOT contain null values. | Supports | |
BCu5 | MUST | BillingCurrency MUST conform to Currency Code Format requirements. | Supports |
Billing period end
Source: columns/billingperiodend.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
BPE0 | Description | The exclusive end date and time of a billing period. | Supports | |
BPE1 | MUST | The BillingPeriodEnd column MUST be present in the billing data. | Supports | |
BPE2.1 | MUST | [BillingPeriodEnd] MUST be of type Date/Time Format... | Supports | |
BPE2.2 | MUST | [BillingPeriodEnd]... MUST be an exclusive value... | Supports | |
BPE2.3 | MUST | [BillingPeriodEnd]... MUST NOT contain null values. | Supports | |
BPE3 | MUST | The sum of the BilledCost column for rows in a given billing period MUST match the sum of the invoices received for that billing period for a billing account. | Supports |
Billing period start
Source: columns/billingperiodstart.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
BPS0 | Description | The inclusive start date and time of a billing period. | Supports | |
BPS1.1 | MUST | The BillingPeriodStart column MUST be present in the billing data... | Supports | |
BPS1.2 | MUST | The BillingPeriodStart column... MUST be of type Date/Time Format... | Supports | |
BPS1.3 | MUST | The BillingPeriodStart column... MUST be an inclusive value... | Supports | |
BPS1.4 | MUST | The BillingPeriodStart column... MUST NOT contain null values. | Supports | |
BPS2 | MUST | The sum of the BilledCost metric for rows in a given billing period MUST match the sum of the invoices received for that billing period for a billing account. | Supports |
Charge category
Source: columns/chargecategory.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
ChCt0 | Description | Represents the highest-level classification of a charge based on the nature of how it is billed. | Supports | |
ChCt1.1 | MUST | The ChargeCategory column MUST be present in the billing data... | Supports | |
ChCt1.2 | MUST | The ChargeCategory column... MUST NOT be null. | Supports | |
ChCt2 | MUST | [ChargeCategory] is of type String and MUST be one of the allowed values. | Supports |
Charge class
Source: columns/chargeclass.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
ChCl0 | Description | Indicates whether the row represents a correction to one or more charges invoiced in a previous billing period. | Supports | |
ChCl1 | MUST | The ChargeClass column MUST be present in the billing data. | Supports | |
ChCl2.1 | MUST | [ChargeClass] MUST be of type String... | Supports | |
ChCl2.2 | MUST | [ChargeClass]... MUST be "Correction" when the row represents a correction to one or more charges invoiced in a previous billing period. | Supports | |
ChCl3 | MUST | ChargeClass MUST be null when it is not a correction or when it is a correction within the current billing period. | Supports |
Charge description
Source: columns/chargedescription.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
CD0 | Description | Self-contained summary of the charge's purpose and price. | Supports | |
CD1 | MUST | The ChargeDescription column MUST be present in the billing data... | Supports | |
CD2 | MUST | The ChargeDescription column... MUST be of type String... | Supports | |
CD3 | SHOULD | The ChargeDescription column... SHOULD NOT be null. | Partially Supports | ChargeDescription may be null for savings plan unused charges, Marketplace charges, and other charges that aren't directly associated with a product SKU. |
CD4 | SHOULD | Providers SHOULD specify the length of [ChargeDescription] in their publicly available documentation. | Does Not Support |
Charge frequency
Source: columns/chargefrequency.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
CF0 | Description | Indicates how often a charge will occur. | Supports | |
CF1.1 | RECOMMENDED | The ChargeFrequency column is RECOMMENDED be present in the billing data... | Supports | |
CF1.2 | MUST | The ChargeFrequency column... MUST NOT be null. | Supports | |
CF2 | MUST | [ChargeFrequency] is of type String and MUST be one of the allowed values. | Supports | |
CF3 | MUST | When ChargeCategory is "Purchase", ChargeFrequency MUST NOT be "Usage-Based". | Supports |
Charge period end
Source: columns/chargeperiodend.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
CPE0 | Description | The exclusive end date and time of a charge period. | Supports | |
CPE1.1 | MUST | ChargePeriodEnd MUST be present in the billing data... | Supports | |
CPE1.2 | MUST | ChargePeriodEnd... MUST be of type Date/Time... | Supports | |
CPE1.3 | MUST | ChargePeriodEnd... MUST be an exclusive value... | Supports | |
CPE1.4 | MUST | ChargePeriodEnd... MUST NOT contain null values. | Supports | |
CPE2 | MUST | ChargePeriodEnd MUST match the ending date and time boundary of the effective period of the charge. | Supports |
Charge period start
Source: columns/chargeperiodstart.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
CPS0 | Description | The inclusive start date and time within a charge period. | Supports | |
CPS1.1 | MUST | ChargePeriodStart MUST be present in the billing data... | Supports | |
CPS1.2 | MUST | ChargePeriodStart... MUST be of type Date/Time... | Supports | |
CPS1.3 | MUST | ChargePeriodStart... MUST be an inclusive value... | Supports | |
CPS1.4 | MUST | ChargePeriodStart... MUST NOT contain null values. | Supports | |
CPS2 | MUST | ChargePeriodStart MUST match the beginning date and time boundary of the effective period of the charge. | Supports |
Commitment discount category
Source: columns/commitmentdiscountcategory.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
CDC0 | Description | Indicates whether the commitment-based discount identified in the CommitmentDiscountId column is based on usage quantity or cost (also known as "spend"). | Supports | |
CDC1 | MUST | The CommitmentDiscountCategory column MUST be present in the billing data when the provider supports commitment-based discounts. | Supports | |
CDC2.1 | MUST | [CommitmentDiscountCategory] MUST be of type String... | Supports | |
CDC2.2 | MUST | [CommitmentDiscountCategory]... MUST be null when CommitmentDiscountId is null... | Supports | |
CDC2.3 | MUST | [CommitmentDiscountCategory]... MUST NOT be null when CommitmentDiscountId is not null. | Supports | |
CDC3 | MUST | The CommitmentDiscountCategory MUST be one of the allowed values. | Supports |
Commitment discount ID
Source: columns/commitmentdiscountid.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
CDI0 | Description | The identifier assigned to a commitment-based discount by the provider. | Supports | |
CDI1 | MUST | The CommitmentDiscountId column MUST be present in the billing data when the provider supports commitment-based discounts. | Supports | |
CDI2.1 | MUST | [CommitmentDiscountId] MUST be of type String... | Supports | |
CDI2.2 | MUST | [CommitmentDiscountId]... MUST NOT contain null values when a charge is related to a commitment-based discount. | Supports | |
CDI3 | MUST | When a charge is not associated with a commitment-based discount, the column MUST be null. | Supports | |
CDI4 | MUST | CommitmentDiscountId MUST be unique within the provider. | Supports |
Commitment discount name
Source: columns/commitmentdiscountname.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
CDN0 | Description | The display name assigned to a commitment-based discount. | Supports | |
CDN1 | MUST | The CommitmentDiscountName column MUST be present in the billing data when the provider supports commitment-based discounts. | Supports | |
CDN2 | MUST | [CommitmentDiscountName] MUST be of type String. | Supports | |
CDN3.1 | MUST | The CommitmentDiscountName value MUST be null if the charge is not related to a commitment-based discount... | Supports | |
CDN3.2 | MAY | The CommitmentDiscountName value... MAY be null if a display name cannot be assigned to a commitment-based discount. | Supports | |
CDN4 | MUST | CommitmentDiscountName MUST NOT be null if a display name can be assigned to a commitment-based discount. | Supports |
Commitment discount status
Source: columns/commitmentdiscountstatus.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
CDS0 | Description | Indicates whether the charge corresponds with the consumption of a commitment-based discount or the unused portion of the committed amount. | Supports | |
CDS1 | MUST | The CommitmentDiscountStatus column MUST be present in the billing data when the provider supports commitment-based discounts. | Supports | |
CDS2 | MUST | [CommitmentDiscountStatus] MUST be of type String... | Supports | |
CDS3.1 | MUST | [CommitmentDiscountStatus]... MUST be null when CommitmentDiscountId is null... | Supports | |
CDS3.2 | MUST | [CommitmentDiscountStatus]... MUST NOT be null when CommitmentDiscountId is not null and Charge Category is "Usage". | Supports | |
CDS4 | MUST | The CommitmentDiscountCategory MUST be one of the allowed values. | Supports |
Commitment discount type
Source: columns/commitmentdiscounttype.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
CDT0 | Description | A provider-assigned identifier for the type of commitment-based discount applied to the row. | Supports | |
CDT1 | MUST | The CommitmentDiscountType column MUST be present in the billing data when the provider supports commitment-based discounts. | Supports | |
CDT2.1 | MUST | [CommitmentDiscountType] MUST be of type String... | Supports | |
CDT2.2 | MUST | [CommitmentDiscountType]... MUST be null when CommitmentDiscountId is null... | Supports | |
CDT2.3 | MUST | [CommitmentDiscountType]... MUST NOT be null when CommitmentDiscountId is not null. | Supports |
Consumed quantity
Source: columns/consumedquantity.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
CQ0 | Description | The volume of a given SKU associated with a resource or service used, based on the Consumed Unit. | Supports | |
CQ1 | MUST | ConsumedQuantity column MUST be present in the billing data when the provider supports the measurement of usage. | Supports | |
CQ2 | MUST | [ConsumedQuantity] MUST NOT be null if ChargeCategory is "Usage" and ChargeClass is not "Correction". | Supports | |
CQ3 | MUST | [ConsumedQuantity] MUST be null for other ChargeCategory values. | Supports | |
CQ4.1 | MUST | [ConsumedQuantity] MUST be of type Decimal... | Supports | |
CQ4.2 | MUST | [ConsumedQuantity]... MUST conform to Numeric Format requirements. | Supports | |
CQ5 | MAY | The value MAY be negative in cases where ChargeClass is "Correction". | Supports |
Consumed unit
Source: columns/consumedunit.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
CU0 | Description | Provider-specified measurement unit indicating how a provider measures usage of a given SKU associated with a resource or service. | Supports | |
CU1 | MUST | The ConsumedUnit column MUST be present in the billing data when the provider supports the measurement of usage. | Supports | |
CU2 | MUST | [ConsumedUnit] MUST be of type String. | Supports | |
CU3 | MUST | ConsumedUnit MUST NOT be null if ChargeCategory is "Usage" and ChargeClass is not "Correction". | Supports | |
CU4 | MUST | [ConsumedUnit] MUST be null for other ChargeCategory values. | Supports | |
CU5 | SHOULD | Units of measure used in ConsumedUnit SHOULD adhere to the values and format requirements specified in the UnitFormat attribute. | Supports | |
CU6 | MUST | The ConsumedUnit column MUST NOT be used to determine values related to any pricing or cost metrics. | Supports |
Contracted cost
Source: columns/contractedcost.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
CnC0 | Description | Cost calculated by multiplying contracted unit price and the corresponding Pricing Quantity. | Supports | |
CnC1.1 | MUST | The ContractedCost column MUST be present in the billing data... | Supports | |
CnC1.2 | MUST | The ContractedCost column... MUST NOT be null. | Partially Supports | ContractedCost is never null, but may be 0 for: EA Marketplace charges, EA reservation usage when cost allocation is enabled, MCA reservation usage. |
CnC2.1 | MUST | [ContractedCost] MUST be of type Decimal... | Supports | |
CnC2.2 | MUST | [ContractedCost]... MUST conform to Numeric Format requirements... | Supports | |
CnC2.3 | MUST | [ContractedCost]... [MUST] be denominated in the BillingCurrency. | Supports | |
CnC3 | MUST | When ContractedUnitPrice is present and not null, multiplying the ContractedUnitPrice by PricingQuantity MUST produce the ContractedCost, except in cases of ChargeClass "Correction", which may address PricingQuantity or any cost discrepancies independently. | Supports | ContractedCost may be off by less than 0.0000000001 due to rounding errors. |
CnC4 | MUST | The ContractedCost of a charge calculated based on other charges (e.g., when the ChargeCategory is "Tax") MUST be calculated based on the ContractedCost of those related charges. | Supports | |
CnC5 | MUST | The ContractedCost of a charge unrelated to other charges (e.g., when the ChargeCategory is "Credit") MUST match the BilledCost. | Supports | ContractedCost may be off by less than 0.00001 due to rounding errors. |
Contracted unit price
Source: columns/contractedunitprice.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
CnUP0 | Description | The agreed-upon unit price for a single Pricing Unit of the associated SKU, inclusive of negotiated discounts, if present, while excluding negotiated commitment-based discounts or any other discounts. | Supports | |
CnUP1 | MUST | The ContractedUnitPrice column MUST be present in the billing data when the provider supports negotiated pricing concept. | Supports | |
CnUP2.1 | MUST | [ContractedUnitPrice] MUST be a Decimal within the range of non-negative decimal values... | Supports | |
CnUP2.3 | MUST | [ContractedUnitPrice]... MUST conform to Numeric Format requirements... | Supports | |
CnUP2.3 | MUST | [ContractedUnitPrice]... [MUST] be denominated in the BillingCurrency. | Supports | |
CnUP3.1 | MUST | It MUST NOT be null when ChargeClass is not "Correction" and ChargeCategory is "Usage" or "Purchase"... | Partially Supports | ContractedUnitPrice is never null, but may be 0 for: EA Marketplace charges, EA reservation usage when cost allocation is enabled, MCA reservation usage. |
CnUP3.2 | MUST | It... MUST be null when ChargeCategory is "Tax"... | Not Applicable | Taxes aren't included in Cost Management cost and usage dataset. |
CnUP3.3 | MAY | It... MAY be null for all other combinations of ChargeClass and ChargeCategory. | Supports | |
CnUP4 | MUST | When ContractedUnitPrice is present and not null, multiplying ContractedUnitPrice by PricingQuantity MUST equal ContractedCost, except in cases of ChargeClass "Correction", which may address PricingQuantity or any cost discrepancies independently. | Supports | ContractedCost may be off by less than 0.00001 due to rounding errors. |
Effective cost
Source: columns/effectivecost.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
EC0 | Description | The amortized cost of the charge after applying all reduced rates, discounts, and the applicable portion of relevant, prepaid purchases (one-time or recurring) that covered this charge. | Supports | |
EC1.1 | MUST | The EffectiveCost column MUST be present in the billing data... | Supports | |
EC1.2 | MUST | The EffectiveCost column... MUST NOT be null. | Supports | |
EC2.1 | MUST | [EffectiveCost] MUST be of type Decimal... | Supports | |
EC2.2 | MUST | [EffectiveCost]... MUST conform to Numeric Format requirements... | Supports | |
EC2.3 | MUST | [EffectiveCost]... [MUST] be denominated in the BillingCurrency. | Supports | |
EC4 | MUST | EffectiveCost MUST be 0 when ChargeCategory is "Purchase" and the purchase is intended to cover future eligible charges. | Supports | |
EC5 | MUST | The EffectiveCost MUST be calculated based on the EffectiveCost of the related charges if the charge is calculated based on other charges (e.g. ChargeCategory is "Tax"). | Supports | |
EC6 | MUST | The EffectiveCost MUST match the BilledCost if the charge is unrelated to other charges (e.g. ChargeCategory is "Credit"). | Supports |
Invoice issuer name
Source: columns/invoiceissuer.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
IIN0 | Description | The name of the entity responsible for invoicing for the resources or services consumed. | Supports | For CSP accounts, InvoiceIssuerName is set to the name of the Cloud Solution Provider (CSP) distributor that has a direct relationship with Microsoft and may not represent the organization that directly invoices the end customer. For all other account types, the value is "Microsoft", even if there's an intermediary organization that invoices the end customer. |
IIN1 | MUST | The InvoiceIssuer column MUST be present in the billing data. | Supports | |
IIN2 | MUST | [InvoiceIssuerName] MUST be of type String... | Supports | |
IIN3 | MUST | [InvoiceIssuerName]... MUST NOT contain null values. | Supports |
List cost
Source: columns/listcost.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
LC0 | Description | Cost calculated by multiplying List Unit Price and the corresponding Pricing Quantity. | Supports | |
LC1.1 | MUST | The ListCost column MUST be present in the billing data... | Supports | |
LC1.2 | MUST | The ListCost column... MUST NOT be null. | Partially Supports | ListCost is never null, but may be 0 for: Marketplace charges and reservation usage. |
LC2.1 | MUST | [ListCost] MUST be of type Decimal... | Supports | |
LC2.2 | MUST | [ListCost]... MUST conform to Numeric Format requirements. | Supports | |
LC2.3 | MUST | [ListCost]... [MUST] be denominated in the BillingCurrency. | Supports | |
LC3 | MUST | When ListUnitPrice is present and not null, multiplying the ListUnitPrice by PricingQuantity MUST produce the ListCost, except in cases of ChargeClass "Correction", which may address PricingQuantity or any cost discrepancies independently. | Supports | ListCost may be off by less than 0.0000000001 due to rounding errors. |
LC4 | MUST | The ListCost of a charge calculated based on other charges (e.g., when the ChargeCategory is "Tax") MUST be calculated based on the ListCost of those related charges. | Supports | |
LC5 | MUST | The ListCost of a charge unrelated to other charges (e.g., when the ChargeCategory is "Credit") MUST match the BilledCost. | Supports | ListCost may be off by less than 0.0000000001 due to rounding errors. |
List unit price
Source: columns/listunitprice.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
LUP0 | Description | The suggested provider-published unit price for a single Pricing Unit of the associated SKU, exclusive of any discounts. | Supports | |
LUP1 | MUST | The ListUnitPrice column MUST be present in the billing data when the provider publishes unit prices exclusive of discounts. | Supports | |
LUP2.1 | MUST | [ListUnitPrice] MUST be a Decimal within the range of non-negative decimal values... | Supports | |
LUP2.2 | MUST | [ListUnitPrice]... MUST conform to Numeric Format requirements... | Supports | |
LUP2.3 | MUST | [ListUnitPrice]... [MUST] be denominated in the BillingCurrency. | Supports | |
LUP3.1 | MUST | It MUST NOT be null when ChargeClass is not "Correction" and ChargeCategory is "Usage" or "Purchase"... | Partially Supports | ListUnitPrice is never null, but may be 0 for: Marketplace charges and reservation usage. |
LUP3.2 | MUST | It... MUST be null when ChargeCategory is "Tax"... | Not Applicable | Tax isn't included in any Cost Management cost and usage dataset. |
LUP3.3 | MAY | It... MAY be null for all other combinations of ChargeClass and ChargeCategory. | Supports | |
LUP4 | MUST | When ListUnitPrice is present and is not null, multiplying ListUnitPrice by PricingQuantity MUST equal ListCost, except in cases of ChargeClass "Correction", which may address PricingQuantity or any cost discrepancies independently. | Supports |
Pricing category
Source: columns/pricingcategory.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
PC0 | Description | Describes the pricing model used for a charge at the time of use or purchase. | Supports | |
PC1.1 | MUST | PricingCategory MUST be present in the billing data when the provider supports more than one pricing category across all SKUs... | Supports | |
PC1.2 | MUST | PricingCategory... MUST be of type String. | Supports | |
PC2.1 | MUST | PricingCategory MUST NOT be null when ChargeClass is not "Correction" and ChargeCategory is "Usage" or "Purchase"... | Supports | |
PC2.2 | MUST | PricingCategory... MUST be null when ChargeCategory is "Tax"... | Not Applicable | Taxes aren't included in any Cost Management cost and usage dataset. |
PC2.3 | MAY | PricingCategory... MAY be null for all other combinations of ChargeClass and ChargeCategory. | Supports | |
PC3 | MUST | PricingCategory MUST be one of the allowed values. | Supports | |
PC4 | MUST | PricingCategory MUST be "Standard" when pricing is predetermined at the agreed upon rate for the billing account. | Supports | |
PC5 | MUST | PricingCategory MUST be "Committed" when CommitmentDiscountId is not null. | Supports | |
PC6 | MUST | PricingCategory MUST be "Dynamic" when pricing is determined by the provider and may change over time, regardless of predetermined agreement pricing. | Supports | |
PC7 | MUST | PricingCategory MUST be "Other" when there is a pricing model but none of the allowed values apply. | Supports |
Pricing quantity
Source: columns/pricingquantity.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
PQ0 | Description | The volume of a given SKU associated with a resource or service used or purchased, based on the Pricing Unit. | Supports | |
PQ1 | MUST | The PricingQuantity column MUST be present in the billing data. | Supports | |
PQ2.1 | MUST | [PricingQuantity] MUST be of type Decimal... | Supports | |
PQ2.2 | MUST | [PricingQuantity]... MUST conform to Numeric Format requirements. | Supports | |
PQ3 | MAY | The value MAY be negative in cases where ChargeClass is "Correction". | Supports | |
PQ4.1 | MUST | [PricingQuantity] MUST NOT be null when ChargeClass is not "Correction" and ChargeCategory is "Usage" or "Purchase"... | Supports | |
PQ4.2 | MUST | [PricingQuantity]... MUST be null when ChargeCategory is "Tax"... | Not Applicable | Taxes aren't included in any Cost Management cost and usage dataset. |
PQ4.3 | MAY | [PricingQuantity]... and MAY be null for all other combinations of ChargeClass and ChargeCategory. | Supports | |
PQ5 | MUST | When unit prices are not null, multiplying PricingQuantity by a unit price MUST produce a result equal to the corresponding cost metric, except in cases of ChargeClass "Correction", which may address PricingQuantity or any cost discrepancies independently. | Supports |
Pricing unit
Source: columns/pricingunit.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
PU0 | Description | Provider-specified measurement unit for determining unit prices, indicating how the provider rates measured usage and purchase quantities after applying pricing rules like block pricing. | Supports | |
PU1 | MUST | The PricingUnit column MUST be present in the billing data. | Supports | |
PU2 | MUST | [PricingUnit] MUST be of type String. | Supports | |
PU3.1 | MUST | It MUST NOT be null when ChargeClass is not "Correction" and ChargeCategory is "Usage" or "Purchase"... | Supports | |
PU3.2 | MUST | It... MUST be null when ChargeCategory is "Tax"... | Not Applicable | Taxes aren't included in any Cost Management cost and usage dataset. |
PU3.3 | MAY | It... MAY be null for all other combinations of ChargeClass and ChargeCategory. | Supports | |
PU4 | SHOULD | Units of measure used in PricingUnit SHOULD adhere to the values and format requirements specified in the UnitFormat attribute. | Supports | |
PU5 | MUST | The PricingUnit value MUST be semantically equal to the corresponding pricing measurement unit value provided in the provider-published price list or invoice, when the invoice includes a pricing measurement unit. | Supports |
Provider name
Source: columns/provider.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
PrN0 | Description | The name of the entity that made the resources or services available for purchase. | Supports | |
PrN1 | MUST | The Provider column MUST be present in the billing data. | Supports | |
PrN2.1 | MUST | [ProviderName] MUST be of type String... | Supports | |
PrN2.2 | MUST | [ProviderName]... MUST NOT contain null values. | Supports |
Publisher name
Source: columns/publisher.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
PbN0 | Description | The name of the entity that produced the resources or services that were purchased. | Supports | |
PbN1 | MUST | The Publisher column MUST be present in the billing data. | Supports | |
PbN2.1 | MUST | [PublisherName] MUST be of type String... | Supports | |
PbN2.2 | MUST | [PublisherName]... MUST NOT contain null values. | Partially Supports | PublisherName may be null for reservation usage and purchases, and savings plan unused charges. |
Region ID
Source: columns/regionid.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
RgI0 | Description | Provider-assigned identifier for an isolated geographic area where a resource is provisioned or a service is provided. | Supports | |
RgI1.1 | MUST | The RegionId column MUST be present in the billing data when the provider supports deploying resources or services within a region... | Supports | |
RgI1.2 | MUST | The RegionId column... MUST be of type String. | Supports | |
RgI2.1 | MUST | RegionId MUST NOT be null when a resource or service is operated in or managed from a distinct region by the Provider... | Supports | |
RgI2.2 | MAY | RegionId... MAY contain null values when a resource or service is not restricted to an isolated geographic area. | Supports |
Region name
Source: columns/regionname.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
RgN0 | Description | The name of an isolated geographic area where a resource is provisioned or a service is provided. | Supports | |
RgN1 | MUST | The RegionName column MUST be present in the billing data when the provider supports deploying resources or services within a region... | Supports | |
RgN2 | MUST | The RegionName... MUST be of type String. | Supports | |
RgN3 | MUST | RegionName MUST NOT be null when a resource or service is operated in or managed from a distinct region by the Provider... | Supports | |
RgN4 | MAY | RegionName... MAY contain null values when a resource or service is not restricted to an isolated geographic area. | Supports |
Resource ID
Source: columns/resourceid.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
RsI0 | Description | Identifier assigned to a resource by the provider. | Supports | |
RsI1 | MUST | The ResourceId column MUST be present in the billing data when the provider supports billing based on provisioned resources. | Supports | |
RsI2 | MUST | [ResourceId] MUST be of type String. | Supports | |
RsI3 | MAY | The ResourceId value MAY be a nullable column as some cost data rows may not be associated with a resource. | Supports | Purchases may not have an assigned resource ID. |
RsI4 | MUST | ResourceId MUST appear in the cost data if an identifier is assigned to a resource by the provider. | Supports | ResourceId may be null when a resource is indirectly related to the charges. If you feel it's missing, file a support request for the service that owns the resource type. |
RsI5 | SHOULD | ResourceId SHOULD be a fully-qualified identifier that ensures global uniqueness within the provider. | Supports |
Resource name
Source: columns/resourcename.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
RsN0 | Description | Display name assigned to a resource. | Supports | |
RsN1 | MUST | The ResourceName column MUST be present in the billing data when the provider supports billing based on provisioned resources. | Supports | |
RsN2 | MUST | [ResourceName] MUST be of type String. | Supports | |
RsN3 | MAY | The ResourceName value MAY be a nullable column as some cost data rows may not be associated with a resource or because a display name cannot be assigned to a resource. | Supports | Purchases may not have an assigned resource name. |
RsN4 | MUST | ResourceName MUST NOT be null if a display name can be assigned to a resource. | Supports | ResourceName may be null when a resource is indirectly related to the charges. If you feel it's missing, file a support request for the service that owns the resource type. |
RsN5 | MUST | Resources not provisioned interactively or only have a system-generated ResourceId MUST NOT duplicate the same value as the ResourceName. | Supports |
Resource type
Source: columns/resourcetype.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
RsT0 | Description | The kind of resource the charge applies to. | Supports | |
RsT1 | MUST | The ResourceType column MUST be present in the billing data when the provider supports billing based on provisioned resources and supports assigning a type for resources. | Supports | |
RsT2.1 | MUST | [ResourceType] MUST be of type String... | Supports | |
RsT2.2 | MUST | [ResourceType]... MUST NOT be null when a corresponding ResourceId is not null. | Supports | |
RsT3 | MUST | When a corresponding ResourceId value is null, the ResourceType column value MUST also be null. | Supports |
Service category
Source: columns/servicecategory.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
SvC0 | Description | Highest-level classification of a service based on the core function of the service. | Supports | |
SvC1.1 | MUST | The ServiceCategory column MUST be present... | Supports | |
SvC1.2 | MUST | The ServiceCategory... MUST NOT be null. | Supports | |
SvC2 | MUST | [ServiceCategory] is of type String and MUST be one of the allowed values. | Supports |
Service name
Source: columns/servicename.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
SvN0 | Description | An offering that can be purchased from a provider (e.g., cloud virtual machine, SaaS database, professional services from a systems integrator). | Supports | |
SvN1 | MUST | The ServiceName column MUST be present in the cost data. | Supports | |
SvN2.1 | MUST | [ServiceName] MUST be of type String... | Supports | |
SvN2.2 | MUST | [ServiceName]... MUST NOT contain null values. | Supports |
SKU ID
Source: columns/skuid.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
SkI0 | Description | A unique identifier that defines a provider-supported construct for organizing properties that are common across one or more SKU Prices. | Supports | |
SkI1 | MUST | The SkuId column MUST be present in the billing data when the provider publishes a SKU list. | Supports | |
SkI2 | MUST | [SkuId] MUST be of type String. | Supports | |
SkI3.1 | MUST | It MUST NOT be null when ChargeClass is not "Correction" and ChargeCategory is "Usage" or "Purchase"... | Partially Supports | SkuId may be null for some rows like savings plan unused charges and Marketplace charges. |
SkI3.2 | MUST | It... MUST be null when ChargeCategory is "Tax"... | Not Applicable | Taxes aren't included in any Cost Management cost and usage dataset. |
SkI3.3 | MAY | It... MAY be null for all other combinations of ChargeClass and ChargeCategory. | Supports | |
SkI4 | MUST | SkuId MUST equal SkuPriceId when a provider does not support an overarching SKU ID construct. | Supports |
SKU price ID
Source: columns/skupriceid.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
SkPI0 | Description | A unique identifier that defines the unit price used to calculate the charge. | Supports | |
SkPI1 | MUST | The SkuPriceId column MUST be present in the billing data when the provider publishes a SKU price list. | Supports | |
SkPI2 | MUST | [SkuPriceId] MUST be of type String. | Supports | |
SkPI3 | MUST | SkuPriceId MUST define a single unit price used for calculating the charge. | Supports | |
SkPI4 | MUST | The ListUnitPrice MUST be associated with the SkuPriceId in the provider published price list. | Partially Supports | For EA, SkuPriceId represents an individual SKU price but isn't available in the price sheet dataset. For MCA, SkuPriceId is a combination of the following price sheet columns: {ProductId}_{SkuId}_{MeterType} . |
SkPI5.1 | MUST | [SkuPriceId] MUST NOT be null when ChargeClass is not "Correction" and ChargeCategory is "Usage" or "Purchase"... | Supports | |
SkPI5.2 | MUST | [SkuPriceId]... MUST be null when ChargeCategory is "Tax".... | Not Applicable | Taxes aren't included in any Cost Management cost and usage dataset. |
SkPI5.3 | MAY | [SkuPriceId]... MAY be null for all other combinations of ChargeClass and ChargeCategory. | Supports | |
SkPI6 | MUST | A given value of SkuPriceId MUST be associated with one and only one SkuId, except in cases of commitment discount flexibility. | Supports |
Sub account ID
Source: columns/subaccountid.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
SAI0 | Description | An ID assigned to a grouping of resources or services, often used to manage access and/or cost. | Supports | FOCUS subaccount maps to a Microsoft Cloud subscription. |
SAI1 | MUST | The SubAccountId column MUST be present in the billing data when the provider supports a sub account construct. | Supports | |
SAI2 | MUST | [SubAccountId] MUST be of type String. | Supports | |
SAI3 | MUST | If a charge does not apply to a sub account, the SubAccountId column MUST be null. | Supports | SubAccountId is null for MCA purchases and refunds. |
Sub account name
Source: columns/subaccountname.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
SAN0 | Description | A name assigned to a grouping of resources or services, often used to manage access and/or cost. | Supports | FOCUS subaccount maps to a Microsoft Cloud subscription. |
SAN1 | MUST | The SubAccountName column MUST be present in the billing data when the provider supports a sub account construct. | Supports | |
SAN2 | MUST | [SubAccountName] MUST be of type String. | Supports | |
SAN3 | MUST | If a charge does not apply to a sub account, the SubAccountName column MUST be null. | Partially Supports | SubAccountName may be "Unassigned" when there's no value. SubAccountName is null for MCA purchases and refunds. |
Tags
Source: columns/tags.md
ID | Type | Criteria | Status | Notes |
---|---|---|---|---|
T0 | Description | The set of tags assigned to tag sources that account for potential provider-defined or user-defined tag evaluations. | Supports | |
T1 | MUST | The Tags column MUST be present in the billing data when the provider supports setting user or provider-defined tags. | Supports | |
T2 | MUST | The Tags column MUST contain user-defined and provider-defined tags. | Supports | |
T3 | MUST | The Tags column MUST only contain finalized tags. | Supports | |
T4 | MUST | The Tags column MUST be in Key-Value Format. | Supports | |
T5 | SHOULD | A Tag key with a non-null value for a given resource SHOULD be included in the tags column. | Supports | |
T6 | MAY | A Tag key with a null value for a given resource MAY be included in the tags column depending on the provider's tag finalization process. | Supports | |
T7 | MUST | A Tag key that does not support a corresponding value, MUST have a corresponding true (boolean) value set. | Not Applicable | Microsoft Cloud tags support both keys and values. |
T8 | MUST | If Tag finalization is supported, providers MUST publish tag finalization methods and semantics within their respective documentation. | Supports | See Group and allocate costs using tag inheritance. |
T9 | MUST | Providers MUST NOT alter user-defined Tag keys or values. | Supports | |
T10 | MUST | Provider-defined tags MUST be prefixed with a provider-specified tag key prefix. | Does Not Support | Provider-specified tags can't be differentiated from user-defined tags. Tags aren't modified to support backwards compatibility. |
T11 | SHOULD | Providers SHOULD publish all provider-specified tag key prefixes within their respective documentation. | Not Applicable | Provider prefixes aren't currently specified. |
Related content
Related resources:
Related products:
Related solutions: