Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

FOCUS dataset consistency review #474

Merged
merged 6 commits into from
Aug 2, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),

## Columns History

This table maps the evolution of the billing data, showcasing column introductions and updates from its initial version 0.5 to the comprehensive revisions in "1.0-preview", "1.0" and beyond.
This table maps the evolution of the specification, showcasing column introductions and updates from its initial version 0.5 to the comprehensive revisions in "1.0-preview", "1.0" and beyond.

| **Column ID** | **Revision Introduced** | **Status** |
|------------------------------|-------------------------|-------------------|
Expand Down
2 changes: 1 addition & 1 deletion specification/attributes/attributes.mdpp
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Attributes

Attributes are requirements that apply across a billing dataset instead of an individual column level. Requirements on data content can include naming
Attributes are requirements that apply across a FOCUS dataset instead of an individual column level. Requirements on data content can include naming
conventions, data types, formatting standardizations, etc. Attributes may introduce high-level requirements
for data granularity, recency, frequency, etc. Requirements defined in attributes are necessary for servicing
[FinOps capabilities][FODOFC] accurately using a standard set of instructions regardless of the origin of the data.
Expand Down
2 changes: 1 addition & 1 deletion specification/attributes/column_naming_and_ordering.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Column Naming and Ordering

## Description

Naming and ordering convention for columns appearing in billing data.
Naming and ordering convention for columns appearing in a FOCUS dataset.

## Requirements

Expand Down
2 changes: 1 addition & 1 deletion specification/attributes/currency_code_format.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Currency Code Format

## Description

Formatting for currency columns appearing in billing data.
Formatting for currency columns appearing in a FOCUS dataset.

## Requirements

Expand Down
2 changes: 1 addition & 1 deletion specification/attributes/datetime_format.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Date/Time Format

## Description

Rules and formatting requirements for date/time-related columns appearing in billing data.
Rules and formatting requirements for date/time-related columns appearing in a FOCUS dataset.

## Requirements

Expand Down
2 changes: 1 addition & 1 deletion specification/attributes/discount_handling.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ Discount Handling

## Description

Indicates how to include and apply discounts to usage charges or rows.
Indicates how to include and apply discounts to usage charges or rows in a FOCUS dataset.

## Requirements

Expand Down
2 changes: 1 addition & 1 deletion specification/attributes/key_value_format.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Key-Value Format

## Description

Rules and formatting requirements for columns appearing in billing data that convey data as key-value pairs.
Rules and formatting requirements for columns appearing in a FOCUS dataset that convey data as key-value pairs.

## Requirements

Expand Down
2 changes: 1 addition & 1 deletion specification/attributes/numeric_format.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ Numeric Format

## Description

Rules and formatting requirements for numeric columns appearing in billing data.
Rules and formatting requirements for numeric columns appearing in a FOCUS dataset.

## Requirements

Expand Down
2 changes: 1 addition & 1 deletion specification/attributes/string_handling.md
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ String Handling

## Description

Requirements for string-capturing columns appearing in billing data.
Requirements for string-capturing columns appearing in a FOCUS dataset.

## Requirements

Expand Down
4 changes: 2 additions & 2 deletions specification/attributes/unit_format.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Unit Format

Billing data frequently captures data measured in units related to data size, count, time, and other [*dimensions*](#glossary:dimension). The Unit Format attribute provides a standard for expressing units of measure in columns appearing in billing data.
Billing data frequently captures data measured in units related to data size, count, time, and other [*dimensions*](#glossary:dimension). The Unit Format attribute provides a standard for expressing units of measure in columns appearing in a FOCUS dataset.

All columns defined in FOCUS specifying Unit Format as a value format MUST follow the requirements listed below.

Expand All @@ -14,7 +14,7 @@ Unit Format

## Description

Indicates standards for expressing measurement units in columns appearing in billing data.
Indicates standards for expressing measurement units in columns appearing in a FOCUS dataset.

## Requirements

Expand Down
2 changes: 1 addition & 1 deletion specification/columns/availabilityzone.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

An [*availability zone*](#glossary:availability-zone) is a provider-assigned identifier for a physically separated and isolated area within a Region that provides high availability and fault tolerance. Availability Zone is commonly used for scenarios like analyzing cross-zone data transfer usage and the corresponding cost based on where [*resources*](#glossary:resource) are deployed.

The AvailabilityZone column is RECOMMENDED to be present in the billing data when the provider supports deploying resources or services within an *availability zone*. This column MUST be of type String and MAY contain null values when a charge is not specific to an *availability zone*.
The AvailabilityZone column is RECOMMENDED to be present in a [*FOCUS dataset*](#glossary:FOCUS-dataset) when the provider supports deploying resources or services within an *availability zone*. This column MUST be of type String and MAY contain null values when a charge is not specific to an *availability zone*.

## Column ID

Expand Down
2 changes: 1 addition & 1 deletion specification/columns/billedcost.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

The [*billed cost*](#glossary:billed-cost) represents a charge serving as the basis for invoicing, inclusive of the impacts of all reduced rates and discounts while excluding the [*amortization*](#glossary:amortization) of relevant purchases (one-time or recurring) paid to cover future eligible charges. This cost is denominated in the [Billing Currency](#billingcurrency). The Billed Cost is commonly used to perform FinOps capabilities that require cash-basis accounting such as cost allocation, budgeting, and invoice reconciliation.

The BilledCost column MUST be present in the billing data and MUST NOT be null. This column MUST be of type Decimal, MUST conform to [Numeric Format](#numericformat), and be denominated in the BillingCurrency. The sum of the BilledCost for [*rows*](#glossary:row) in a given [*billing period*](#glossary:billing-period) MUST match the sum of the invoices received for that *billing period* for a [*billing account*](#glossary:billing-account).
The BilledCost column MUST be present in a FOCUS dataset and MUST NOT be null. This column MUST be of type Decimal, MUST conform to [Numeric Format](#numericformat), and be denominated in the BillingCurrency. The sum of the BilledCost for [*rows*](#glossary:row) in a given [*billing period*](#glossary:billing-period) MUST match the sum of the invoices received for that *billing period* for a [*billing account*](#glossary:billing-account).

## Column ID

Expand Down
2 changes: 1 addition & 1 deletion specification/columns/billingaccountid.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

A Billing Account ID is a provider-assigned identifier for a [*billing account*](#glossary:billing-account). *Billing accounts* are commonly used for scenarios like grouping based on organizational constructs, invoice reconciliation and cost allocation strategies.

The BillingAccountId column MUST be present in the billing data. This column MUST be of type String and MUST NOT contain null values. BillingAccountId MUST be a globally unique identifier within a provider.
The BillingAccountId column MUST be present in a FOCUS dataset. This column MUST be of type String and MUST NOT contain null values. BillingAccountId MUST be a globally unique identifier within a provider.

See [Appendix: Grouping constructs for resources or services](#groupingconstructsforresourcesorservices) for details and examples of the different grouping constructs supported by FOCUS.

Expand Down
2 changes: 1 addition & 1 deletion specification/columns/billingaccountname.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

A Billing Account Name is a display name assigned to a [*billing account*](#glossary:billing-account). *Billing accounts* are commonly used for scenarios like grouping based on organizational constructs, invoice reconciliation and cost allocation strategies.

The BillingAccountName column MUST be present in the billing data and MUST NOT be null when the provider supports assigning a display name for the *billing account*. This column MUST be of type String. BillingAccountName MUST be unique within a customer when a customer has more than one *billing account*.
The BillingAccountName column MUST be present in a FOCUS dataset and MUST NOT be null when the provider supports assigning a display name for the *billing account*. This column MUST be of type String. BillingAccountName MUST be unique within a customer when a customer has more than one *billing account*.

See [Appendix: Grouping constructs for resources or services](#groupingconstructsforresourcesorservices) for details and examples of the different grouping constructs supported by FOCUS.

Expand Down
2 changes: 1 addition & 1 deletion specification/columns/billingcurrency.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

[*Billing currency*](#glossary:billing-currency) is an identifier that represents the currency that a charge for [*resources*](#glossary:resource) or [*services*](#glossary:service) was billed in. Billing Currency is commonly used in scenarios where costs need to be grouped or aggregated.

The BillingCurrency column MUST be present in the billing data. BillingCurrency MUST match the currency used in the invoice generated by the invoice issuer. This column MUST be of type String and MUST NOT contain null values. BillingCurrency MUST conform to [Currency Code Format](#currencycodeformat) requirements.
The BillingCurrency column MUST be present in a FOCUS dataset. BillingCurrency MUST match the currency used in the invoice generated by the invoice issuer. This column MUST be of type String and MUST NOT contain null values. BillingCurrency MUST conform to [Currency Code Format](#currencycodeformat) requirements.

## Column ID

Expand Down
2 changes: 1 addition & 1 deletion specification/columns/billingperiodend.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Billing Period End represents the [*exclusive*](#glossary:exclusivebound) end date and time of a [*billing period*](#glossary:billing-period). For example, a time period where [BillingPeriodStart](#glossary:billingperiodstart) is '2024-01-01T00:00:00Z' and BillingPeriodEnd is '2024-02-01T00:00:00Z' includes charges for January, since BillingPeriodStart is [*inclusive*](#glossary:inclusivebound), but does not include charges for February since BillingPeriodEnd is *exclusive*.

The BillingPeriodEnd column MUST be present in the billing data. This column MUST be of type [Date/Time Format](#date/timeformat), MUST be an *exclusive* value, and MUST NOT contain null values. The sum of the [BilledCost](#billedcost) column for [*rows*](#glossary:row) in a given *billing period* MUST match the sum of the invoices received for that *billing period* for a [*billing account*](#glossary:billing-account).
The BillingPeriodEnd column MUST be present in a FOCUS dataset. This column MUST be of type [Date/Time Format](#date/timeformat), MUST be an *exclusive* value, and MUST NOT contain null values. The sum of the [BilledCost](#billedcost) column for [*rows*](#glossary:row) in a given *billing period* MUST match the sum of the invoices received for that *billing period* for a [*billing account*](#glossary:billing-account).

## Column ID

Expand Down
2 changes: 1 addition & 1 deletion specification/columns/billingperiodstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Billing Period Start represents the [*inclusive*](#glossary:inclusivebound) start date and time of a [*billing period*](#glossary:billing-period). For example, a time period where BillingPeriodStart is '2024-01-01T00:00:00Z' and [BillingPeriodEnd](#billingperiodend) is '2024-02-01T00:00:00Z' includes charges for January, since BillingPeriodStart is inclusive, but does not include charges for February since BillingPeriodEnd is [*exclusive*](#glossary:exclusivebound).

The BillingPeriodStart column MUST be present in the billing data, MUST be of type [Date/Time Format](#date/timeformat), MUST be an *inclusive* value, and MUST NOT contain null values. The sum of the [BilledCost](#billedcost) metric for [*rows*](#glossary:row) in a given *billing period* MUST match the sum of the invoices received for that *billing period* for a [*billing account*](#glossary:billing-account).
The BillingPeriodStart column MUST be present in a FOCUS dataset, MUST be of type [Date/Time Format](#date/timeformat), MUST be an *inclusive* value, and MUST NOT contain null values. The sum of the [BilledCost](#billedcost) metric for [*rows*](#glossary:row) in a given *billing period* MUST match the sum of the invoices received for that *billing period* for a [*billing account*](#glossary:billing-account).

## Column ID

Expand Down
2 changes: 1 addition & 1 deletion specification/columns/chargecategory.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Charge Category represents the highest-level classification of a charge based on the nature of how it is billed. Charge Category is commonly used to identify and distinguish between types of charges that may require different handling.

The ChargeCategory column MUST be present in the billing data and MUST NOT be null. This column is of type String and MUST be one of the allowed values.
The ChargeCategory column MUST be present in a FOCUS dataset and MUST NOT be null. This column is of type String and MUST be one of the allowed values.

## Column ID

Expand Down
2 changes: 1 addition & 1 deletion specification/columns/chargeclass.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Charge Class indicates whether the row represents a correction to one or more [*charges*](#glossary:charge) invoiced in a previous billing period. Charge Class is commonly used to differentiate corrections from regularly incurred charges.

The ChargeClass column MUST be present in the billing data. This column MUST be of type String and MUST be "Correction" when the row represents a correction to one or more charges invoiced in a previous billing period. ChargeClass MUST be null when it is not a correction or when it is a correction within the current billing period.
The ChargeClass column MUST be present in a FOCUS dataset. This column MUST be of type String and MUST be "Correction" when the row represents a correction to one or more charges invoiced in a previous billing period. ChargeClass MUST be null when it is not a correction or when it is a correction within the current billing period.

## Column ID

Expand Down
2 changes: 1 addition & 1 deletion specification/columns/chargedescription.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

A Charge Description provides a high-level context of a [*row*](#glossary:row) without requiring additional discovery. This column is a self-contained summary of the charge's purpose and price. It typically covers a select group of corresponding details across a billing dataset or provides information not otherwise available.

The ChargeDescription column MUST be present in the billing data, MUST be of type String, and SHOULD NOT be null. Providers SHOULD specify the length of this column in their publicly available documentation.
The ChargeDescription column MUST be present in a FOCUS dataset, MUST be of type String, and SHOULD NOT be null. Providers SHOULD specify the length of this column in their publicly available documentation.

## Column ID

Expand Down
2 changes: 1 addition & 1 deletion specification/columns/chargefrequency.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Charge Frequency indicates how often a charge will occur. Along with the [charge period](#glossary:chargeperiod) related columns, the Charge Frequency is commonly used to understand recurrence periods (e.g., monthly, yearly), forecast upcoming charges, and differentiate between one-time and recurring fees for purchases.

The ChargeFrequency column is RECOMMENDED be present in the billing data and MUST NOT be null. This column is of type String and MUST be one of the allowed values. When [ChargeCategory](#chargecategory) is "Purchase", ChargeFrequency MUST NOT be "Usage-Based".
The ChargeFrequency column is RECOMMENDED be present in a FOCUS dataset and MUST NOT be null. This column is of type String and MUST be one of the allowed values. When [ChargeCategory](#chargecategory) is "Purchase", ChargeFrequency MUST NOT be "Usage-Based".

## Column ID

Expand Down
2 changes: 1 addition & 1 deletion specification/columns/chargeperiodend.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Charge Period End represents the [*exclusive*](#glossary:exclusivebound) end date and time of a [*charge period*](#glossary:chargeperiod). For example, a time period where [ChargePeriodStart](#chargeperiodstart) is '2024-01-01T00:00:00Z' and ChargePeriodEnd is '2024-01-02T00:00:00Z' includes charges for January 1, since ChargePeriodStart is [*inclusive*](#glossary:inclusivebound), but does not include charges for January 2 since ChargePeriodEnd is *exclusive*.

ChargePeriodEnd MUST be present in the billing data, MUST be of type Date/Time, MUST be an *exclusive* value, and MUST NOT contain null values. ChargePeriodEnd MUST match the ending date and time boundary of the effective period of the charge.
ChargePeriodEnd MUST be present in a FOCUS dataset, MUST be of type Date/Time, MUST be an *exclusive* value, and MUST NOT contain null values. ChargePeriodEnd MUST match the ending date and time boundary of the effective period of the charge.

## Column ID

Expand Down
2 changes: 1 addition & 1 deletion specification/columns/chargeperiodstart.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Charge Period Start represents the [*inclusive*](#glossary:inclusivebound) start date and time within a [*charge period*](#glossary:chargeperiod). For example, a time period where ChargePeriodStart is '2024-01-01T00:00:00Z' and [ChargePeriodEnd](#chargeperiodend) is '2024-01-02T00:00:00Z' includes charges for January 1, since ChargePeriodStart is *inclusive*, but does not include charges for January 2 since ChargePeriodEnd is [*exclusive*](#glossary:exclusivebound).

ChargePeriodStart MUST be present in the billing data, MUST be of type Date/Time, MUST be an *inclusive* value, and MUST NOT contain null values. ChargePeriodStart MUST match the beginning date and time boundary of the effective period of the charge.
ChargePeriodStart MUST be present in a FOCUS dataset, MUST be of type Date/Time, MUST be an *inclusive* value, and MUST NOT contain null values. ChargePeriodStart MUST match the beginning date and time boundary of the effective period of the charge.

## Column ID

Expand Down
2 changes: 1 addition & 1 deletion specification/columns/commitmentdiscountcategory.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

Commitment Discount Category indicates whether the [*commitment-based discount*](#glossary:commitment-based-discount) identified in the CommitmentDiscountId column is based on usage quantity or cost (aka "spend").

The CommitmentDiscountCategory column MUST be present in the billing data when the provider supports *commitment-based discounts*. This column MUST be of type String, MUST be null when [CommitmentDiscountId](#commitmentdiscountid) is null, and MUST NOT be null when CommitmentDiscountId is not null. The CommitmentDiscountCategory MUST be one of the allowed values.
The CommitmentDiscountCategory column MUST be present in a FOCUS dataset when the provider supports *commitment-based discounts*. This column MUST be of type String, MUST be null when [CommitmentDiscountId](#commitmentdiscountid) is null, and MUST NOT be null when CommitmentDiscountId is not null. The CommitmentDiscountCategory MUST be one of the allowed values.

## Column ID

Expand Down
2 changes: 1 addition & 1 deletion specification/columns/commitmentdiscountid.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

A Commitment Discount ID is the identifier assigned to a [*commitment-based discount*](#glossary:commitment-based-discount) by the provider. Commitment Discount ID is commonly used for scenarios like chargeback for *commitments* and savings per *commitment-based discount*.

The CommitmentDiscountId column MUST be present in the billing data when the provider supports *commitment-based discounts*. This column MUST be of type String and MUST NOT contain null values when a charge is related to a *commitment-based discount*. When a charge is not associated with a *commitment-based discount*, the column MUST be null. CommitmentDiscountId MUST be unique within the provider.
The CommitmentDiscountId column MUST be present in a FOCUS dataset when the provider supports *commitment-based discounts*. This column MUST be of type String and MUST NOT contain null values when a charge is related to a *commitment-based discount*. When a charge is not associated with a *commitment-based discount*, the column MUST be null. CommitmentDiscountId MUST be unique within the provider.

## Column ID

Expand Down
Loading
Loading