diff --git a/specification/attributes/column_naming_and_ordering.md b/specification/attributes/column_naming_and_ordering.md index 1b279efb1..d21360e03 100644 --- a/specification/attributes/column_naming_and_ordering.md +++ b/specification/attributes/column_naming_and_ordering.md @@ -21,7 +21,7 @@ Naming and ordering convention for columns appearing in a FOCUS dataset. ### Column Names * All columns defined by FOCUS MUST follow the following rules: - * Column IDs MUST use [Pascal case](https://techterms.com/definition/pascalcase). + * Column IDs MUST use [Pascal case](#glossary:pascalcase). * Column IDs MUST NOT use abbreviations. * Column IDs MUST be alphanumeric with no special characters. * Columns that have an ID and a Name MUST have the `Id` or `Name` suffix in the Column ID. Display Name for a Column MAY avoid the Name suffix if there are no other columns with the same name prefix. diff --git a/specification/columns/columns.mdpp b/specification/columns/columns.mdpp index f1d027b95..ef4f1ab0c 100644 --- a/specification/columns/columns.mdpp +++ b/specification/columns/columns.mdpp @@ -41,6 +41,7 @@ The FOCUS specification defines a group of columns that provide qualitative valu !INCLUDE "servicecategory.md",1 !INCLUDE "servicename.md",1 !INCLUDE "skuid.md",1 +!INCLUDE "skupricedetails.md",1 !INCLUDE "skupriceid.md",1 !INCLUDE "subaccountid.md",1 !INCLUDE "subaccountname.md",1 diff --git a/specification/columns/skupricedetails.md b/specification/columns/skupricedetails.md new file mode 100644 index 000000000..e64ea5405 --- /dev/null +++ b/specification/columns/skupricedetails.md @@ -0,0 +1,57 @@ +# SKU Price Details + +The **SKU Price Details** column represents a list of relevant properties shared by all charges with the same [**SKU Price ID**](#skupriceid). These properties provide qualitative and quantitative details about the service represented by a **SKU Price ID**. This can enable practitioners to calculate metrics such as total units of a service when it is not directly billed in those units (e.g. cores) and thus enables FinOps capabilities such as unit economics. These properties can also help a practitioner understand the specifics of a **SKU Price ID** and differentiate it other **SKU Price IDs**. + + +The *SkuPriceDetails* column adheres to the following requirements: + +- The *SkuPriceDetails* column MUST be in [*KeyValueFormat*](#key-valueformat). +- The key for a property SHOULD be formatted in [PascalCase](#glossary:pascalcase). +- The properties (both keys and values) contained in the *SkuPriceDetails* column MUST be shared across all charges having the same *SkuPriceId*, subject to the below provisions. + - Additional properties (key-value pairs) MAY be added to *SkuPriceDetails* going forward for a given *SkuPriceId*. + - Properties SHOULD NOT be removed from *SkuPriceDetails* for a given *SkuPriceId*, once they have been included. + - Individual properties (key-value pairs) SHOULD NOT be modified for a given *SkuPriceId* and SHOULD remain consistent over time. +- The key for a property SHOULD remain consistent across comparable SKUs having that property and the values for this key SHOULD remain in a consistent format. +- The *SkuPriceDetails* column MUST NOT contain properties which are not applicable to the corresponding *SkuPriceId*. +- The *SkuPriceDetails* column MAY contain properties which are already captured in other dedicated columns. +- If a property has a numeric value, it MUST represent the value for a single [*PricingUnit*](#pricingunit). +- The *SkuPriceDetails* column MUST be present in the billing data when the provider includes a *SkuPriceId*. + - The *SkuPriceDetails* column MAY be null when *SkuPriceId* is not null. + - The *SkuPriceDetails* column MUST be null when *SkuPriceId* is null. + +## Examples + +```json +{ + "OperationClass": "A", + "PricingTier": 2, + "CoreHours": 4, + "PreimumProcessing": true, +} +``` + +## Column ID + +SkuPriceDetails + +## Display Name + +SKU Price Details + +## Description + +A set of properties of a **SKU Price ID** which are meaningful and common to all instances of that **SKU Price ID**. + +## Content Constraints + +| Constraint | Value | +|:----------------|:-----------------| +| Column type | Dimension | +| Feature level | Conditional | +| Allows nulls | True | +| Data type | JSON | +| Value format | [Key-Value Format](#key-valueformat) | + +## Introduced (version) + +1.1 diff --git a/specification/glossary.md b/specification/glossary.md index 605ef15be..5ccf2cb4c 100644 --- a/specification/glossary.md +++ b/specification/glossary.md @@ -108,6 +108,10 @@ A company or organization that provides outsourced management and support of a r A term that describes a service that is available and provided immediately or as needed, without requiring a pre-scheduled appointment or prior arrangement. In cloud computing, virtual machines can be created and terminated as needed, i.e. on demand. +Pascal Case + +Pascal Case (PascalCase, also known as UpperCamelCase) is a format for identifiers which contain one or more words meaning the words are concatenated together with no delimiter and the first letter of each word is capitalized. + Practitioner An individual who performs FinOps within an organization to maximize the business value of using cloud and cloud-like services.