diff --git a/specification/metrics/listunitprice.md b/specification/metrics/listunitprice.md
new file mode 100644
index 000000000..fc4fb72a4
--- /dev/null
+++ b/specification/metrics/listunitprice.md
@@ -0,0 +1,31 @@
+# List Unit Price
+
+The List Unit Price represents the suggested provider published unit price for a single pricing measurement unit, which incorporates volume/tier-based rates while excluding any negotiated or commitment-based discounts. This price is denominated in the [Billing Currency](#billingcurrency). It is used to calculate List Cost and savings based on rate optimization activities.
+
+The ListUnitPrice column MUST be present in the billing data. This column MUST be a numeric value of type Decimal within the range of non-negative decimal values. It MUST NOT contain null values in cases where the [ChargeType](#chargetype) is 'usage' or 'purchase'. When ListUnitPrice is not null, multiplying ListUnitPrice by [QuantityInPricingUnit](#quantityinpricingunit) MUST equal [ListCost](#listcost).
+
+## Column ID
+
+ListUnitPrice
+
+## Display name
+
+List Unit Price
+
+## Description
+
+Represents the suggested provider published price for a single pricing measurement unit, which incorporates volume/tier-based reductions while excluding any negotiated or commitment-based discounts.
+
+## Content Constraints
+
+| Constraint | Value |
+|:----------------|:-------------------------------------|
+| Column required | True |
+| Data type | Decimal |
+| Allows nulls | True |
+| Value format | Numeric value |
+| Number range | Any valid non-negative decimal value |
+
+## Introduced (version)
+
+1.0
diff --git a/specification/metrics/metrics.mdpp b/specification/metrics/metrics.mdpp
index ae918b96d..28dba529b 100644
--- a/specification/metrics/metrics.mdpp
+++ b/specification/metrics/metrics.mdpp
@@ -7,3 +7,4 @@ operations. When combined with dimensions (which are qualitative value columns),
!INCLUDE "effectivecost.md",1
!INCLUDE "billedcost.md",1
+!INCLUDE "listunitprice.md",1
diff --git a/supporting_content/appendix/quantity_driven_pricing_strategies.md b/supporting_content/appendix/quantity_driven_pricing_strategies.md
new file mode 100644
index 000000000..f6ebba96a
--- /dev/null
+++ b/supporting_content/appendix/quantity_driven_pricing_strategies.md
@@ -0,0 +1,86 @@
+# Quantity-Driven Pricing Strategies
+
+## Introduction
+
+Providers employ two primary approaches for pricing their offerings: flat-rate pricing and quantity-dependent pricing.
+
+### Flat-Rate Pricing
+
+With flat-rate pricing, each pricing unit is assigned a fixed price, regardless of the quantity being consumed. This pricing strategy is characterized by its simplicity, as customers are charged a consistent rate, making it easy to forecast costs.
+
+### Quantity-Dependent Pricing (Usage-Dependent Pricing)
+
+Quantity-dependent pricing, also referred to as usage-dependent pricing, takes into account the quantity and adjusts pricing accordingly. This approach involves configuring multiple price tiers, each defined by a specific quantity range and associated unit prices, such as ListUnitPrice, NegotiatedUnitPrice, BilledUnitPrice, etc.
+
+Typically, higher usage tiers feature lower unit prices, offering users the advantage of reduced unit costs as their usage expands. Additionally, quantity-dependent pricing may include a **free-tier**, a special price tier designed for an introductory usage level.
+
+Two common quantity-dependent pricing strategies are volume-based pricing and tier-based pricing. While both strategies reset the count of charged units at the beginning of each billing period, they differ in how charges are categorized into different price tiers:
+
+* **volume-based pricing:** This strategy adjusts unit prices based on the total usage within a specific billing period, affecting all charges within it. Customers benefit from reduced unit costs as their overall usage increases.
+* **tier-based pricing:** In tier-based pricing, unit prices change as the number of charged units increases. You are charged for the consumed quantity within each tier based on the associated unit price for each tier.
+
+For better comprehension, please refer to the sample price-tiers configuration and UC scenarios, provided in Fictional Use Case scenarios.
+
+## Example usage scenarios
+
+### Fictional Use Case scenarios
+
+#### Sample price-tiers configuration
+
+| | Lower Tier | Higher Tier |
+|:---------------------------|:-----------|:------------|
+| List Unit Price | 1 | 0.50 |
+| Pricing currency | USD | USD |
+| Starting Range (inclusive) | 0 | 10GB |
+| Ending Range (exclusive) | 10 | 100 |
+| Pricing Unit | 1GB | 1GB |
+| Enterprise discount | 10% | 10% |
+
+#### UC scenarios for different (sub)types of pricing mechanisms
+
+| Scenario | Description |
+|:---------|:------------------------------------------------------------------------------------------------------------|
+| S-1 | Tier-based pricing: 12GB of usage falls into two different tiers, resulting in two separate charge records. |
+| S-2 | Volume-based pricing: 12GB of usage falls into the highest tier, resulting in a single charge record. |
+
+#### Sample Billing data
+
+| Scenario | QuantityInPricingUnit | PricingUnit | ListUnitPrice | NegotiatedUnitPrice | BilledUnitPrice | PricingCurrency | BillingCurrency | ListCost | BilledCost | EffectiveCost |
+|:----|---:|:----|-----:|-----:|-----:|:----|:----|---:|----:|----:|
+| S-1 | 10 | 1GB | 1 | 0.90 | 0.90 | USD | USD | 10 | 9 | 9 |
+| S-1 | 2 | 1GB | 0.50 | 0.45 | 0.45 | USD | USD | 1 | 0.9 | 0.9 |
+| S-2 | 12 | 1GB | 0.50 | 0.45 | 0.45 | USD | USD | 6 | 5.4 | 5.4 |
+
+### Current values observed in billing data for various scenarios
+
+| Provider | Scenario | ListUnitPrice Pattern | BilledUnitPrice Pattern |
+|:----------|:-----------------------------------------------------------------------------------|:-------------------------------------|:------------------------|
+| AWS | Flat-rate based pricing
SKU: E9YHNFENF4XQBZR6 | pricing/publicOnDemandRate: 0.000005 | *TODO: Add sample data* |
+| AWS | Quantity-dependent pricing
??? *TODO: look for a higher tier sample* | pricing/publicOnDemandRate: ??? *TODO: look for a higher tier sample* | *TODO: Add sample data* |
+| GCP | Flat-rate based pricing | Not available | *TODO: Add sample data* |
+| GCP | Quantity-dependent pricing | Not available | *TODO: Add sample data* |
+| Microsoft | Flat-rate based pricing - PAYG
meterId: b9e5e77c-a0b3-4a2c-9b8b-57fa54f31c52 | PayGPrice: 0.00036 | *TODO: Add sample data* |
+| Microsoft | Flat-rate based pricing - CSP
meterId: b9e5e77c-a0b3-4a2c-9b8b-57fa54f31c52 | PayGPrice: 0.0003707 | *TODO: Add sample data* |
+| Microsoft | Quantity-dependent pricing - PAYG
meterId: 9995d93a-7d35-4d3f-9c69-7a7fea447ef4 | PayGPrice: 0.087 | *TODO: Add sample data* |
+| Microsoft | Quantity-dependent pricing - CSP
meterId: 9995d93a-7d35-4d3f-9c69-7a7fea447ef4 | PayGPrice: 0.087 | *TODO: Add sample data* |
+| OCI | Flat-rate based pricing | Not available | *TODO: Add sample data* |
+| OCI | Quantity-dependent pricing | Not available | *TODO: Add sample data* |
+
+### Alternative data sources for various scenarios
+
+| Provider | Scenario | Data source | Authentication required | Request/Query Sample |
+|:----------|:-----------------------------------------------|:-----------------------------|:------------------------|:---------------------|
+| AWS | Flat-rate based and quantity-dependent pricing | AWS Price List API | N | [GET request](https://pricing.us-east-1.amazonaws.com/offers/v1.0/aws/AmazonS3/current/index.csv) |
+| GCP | Flat-rate based pricing | BigQuery Pricing Data Export | Y | Query:
SELECT sku.id AS sku_id, sku.description AS sku_description, service.id AS service_id, service.description as service_description, pricing_unit, pricing_unit_description, account_currency_code, tier.*
FROM `my-billing-admin-project.my_billing_dataset.cloud_pricing_export` AS sku_pricing, UNNEST (sku_pricing.list_price.tiered_rates) as tier
WHERE TIMESTAMP_TRUNC(_PARTITIONTIME, DAY) = TIMESTAMP("2023-08-24") AND sku.id = "0012-B7F2-DD14"
LIMIT 1000;
Response:[{"sku_id":"0012-B7F2-DD14", "sku_description":"Spot Preemptible Compute optimized Ram running in Montreal", "service_id":"6F81-5844-456A", "service_description":"Compute Engine", "pricing_unit":"GIBIBYTE_HOUR", "pricing_unit_description":"gibibyte hour", "account_currency_code":"USD", "pricing_unit_quantity":"1.0", "start_usage_amount":"0.0", "usd_amount":"0.001537", "account_currency_amount":"0.001537"}]
|
+| GCP | Quantity-dependent pricing | BigQuery Pricing Data Export | Y | Query:SELECT sku.id AS sku_id, sku.description AS sku_description, service.id AS service_id, service.description as service_description, pricing_unit, pricing_unit_description, account_currency_code, tier.*
FROM `my-billing-admin-project.my_billing_dataset.cloud_pricing_export` AS sku_pricing, UNNEST (sku_pricing.list_price.tiered_rates) as tier
WHERE TIMESTAMP_TRUNC(_PARTITIONTIME, DAY) = TIMESTAMP("2023-08-24") AND sku.id = "3886-1DF3-046E"LIMIT 1000;
Response:[{"sku_id":"3886-1DF3-046E", "sku_description":"Certificate", "service_id":"3C02-AF97-2288", "service_description":"AppViewX Inc AppViewX-CLM-v2", "pricing_unit":"DAY", "pricing_unit_description":"day", "account_currency_code":"USD", "pricing_unit_quantity":"1.0", "start_usage_amount":"0.0", "usd_amount":"0.0", "account_currency_amount":"0.0"},{"sku_id":"3886-1DF3-046E", "sku_description":"Certificate", "service_id":"3C02-AF97-2288", "service_description":"AppViewX Inc AppViewX-CLM-v2", "pricing_unit":"DAY", "pricing_unit_description":"day", "account_currency_code":"USD", "pricing_unit_quantity":"1.0", "start_usage_amount":"30001.0", "usd_amount":"0.09", "account_currency_amount":"0.09"}...]
|
+| GCP | Flat-rate based pricing | GCP Cloud Billing API | Y | [GET request](https://cloudbilling.googleapis.com/v1beta/skus/0012-B7F2-DD14/price?currencyCode=USD)
{"name":"skus/0012-B7F2-DD14/price", "currencyCode":"USD", "valueType":"rate", "rate":{"tiers":[{"startAmount":{"value":"0"},"listPrice":{"currencyCode":"USD", "nanos":1397000}}],"unitInfo":{"unit":"GiBy.h", "unitDescription":"gibibyte hour", "unitQuantity":{"value":"1"}},"aggregationInfo":{"level":"ACCOUNT", "interval":"MONTHLY"}}}
|
+| GCP | Quantity-dependent pricing | GCP Cloud Billing API | Y | [GET request](https://cloudbilling.googleapis.com/v1beta/skus/0012-B7F2-DD14/price?currencyCode=USD)
{"name":"skus/3886-1DF3-046E/price", "currencyCode":"USD", "valueType":"rate", "rate":{"tiers":[{"startAmount":{"value":"0"},"listPrice":{"currencyCode":"USD"}},{"startAmount":{"value":"300001"},"listPrice":{"currencyCode":"USD", "nanos":47000000}}...],"unitInfo":{"unit":"d", "unitDescription":"day", "unitQuantity":{"value":"1"}},"aggregationInfo":{"level":"LEVEL_ACCOUNT", "interval":"INTERVAL_MONTHLY"}}}
|
+| Microsoft | Flat-rate based pricing | Azure Retail Prices REST API | N | [GET request](https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview¤cyCode=%27EUR%27&meterRegion=%27primary%27&$filter=meterId%20eq%20%27b9e5e77c-a0b3-4a2c-9b8b-57fa54f31c52%27%20and%20location%20eq%20%27EU%20West%27) |
+| Microsoft | Quantity-dependent pricing | Azure Retail Prices REST API | N | [GET request](https://prices.azure.com/api/retail/prices?api-version=2023-01-01-preview¤cyCode=%27USD%27&meterRegion=%27primary%27&$filter=meterId%20eq%20%279995d93a-7d35-4d3f-9c69-7a7fea447ef4%27%20%20and%20location%20eq%20%27EU%20West%27&$orderby=tierMinimumUnits%20asc) |
+| OCI | Flat-rate based pricing | OCI List Pricing REST API | N | [GET request](https://apexapps.oracle.com/pls/apex/cetools/api/v1/products/?currencyCode=EUR&partNumber=B88513) |
+| OCI | Quantity-dependent pricing | OCI List Pricing REST API | N | [GET request](https://apexapps.oracle.com/pls/apex/cetools/api/v1/products/?currencyCode=EUR&partNumber=B90617) |
+
+## Discussion / Scratch space
+
+* Quantity-driven pricing strategies might not be the most appropriate term
+* See [Pricing Support – UCs and Data samples Spreadsheet](https://docs.google.com/spreadsheets/d/1AZ-vtkKeKwYc8rqhxP1zMTnAVAS-svmWQQmr8cpv-IM/edit#gid=117987709) for additional UC scenarios.
diff --git a/supporting_content/attributes/currency_code_format.md b/supporting_content/attributes/currency_code_format.md
index fd3604851..f04a45daa 100644
--- a/supporting_content/attributes/currency_code_format.md
+++ b/supporting_content/attributes/currency_code_format.md
@@ -9,6 +9,7 @@ Current column mappings found in available data sets:
| AWS | CUR | CurrencyCode |
| GCP | Big Query Billing Export | Currency |
| Azure | Cost details | BilledCurrency |
+| OCI | Cost reports | cost/currencyCode |
## Example usage scenarios
@@ -19,6 +20,7 @@ Current values observed in billing data for various scenarios:
| AWS | CUR | USD |
| GCP | Big Query Billing Export | EUR |
| Azure | Cost details | JPY |
+| OCI | Cost reports | USD |
## Requirements
@@ -34,6 +36,8 @@ GCP: [Currency](https://cloud.google.com/billing/docs/resources/currency)
Azure: [Pricing FAQ](https://azure.microsoft.com/en-us/pricing/faq/)
+OCI: [OCI Price List](https://www.oracle.com/cloud/price-list/)
+
## Discussion / Scratch space
There is a dimension of currency rate conversions for billing data with multiple currencies. See [Currency](https://cloud.google.com/billing/docs/resources/currency). We may need to consider adding currency conversion rates to future versions of the specification
diff --git a/supporting_content/attributes/datetime_format.md b/supporting_content/attributes/datetime_format.md
index f11efd090..c62b5aceb 100644
--- a/supporting_content/attributes/datetime_format.md
+++ b/supporting_content/attributes/datetime_format.md
@@ -9,6 +9,7 @@ Current column mappings found in available data sets:
| AWS | CUR | lineItem/UsageStartDate, lineItem/UsageEndDate, etc. |
| GCP | Big Query Billing Export | usage_start_time, usage_end_time, etc. |
| Microsoft | Cost details | date, etc. |
+| OCI | Cost reports | lineItem/intervalUsageStart, lineItem/intervalUsageEnd |
### Documentation
@@ -26,6 +27,7 @@ Current values observed in billing data for various scenarios:
| GCP | Big Query Billing Export | 2023-05-13 21:00:00 UTC |
| Microsoft | Cost details via Consumption API (usageDetails) | 2023-05-13T00:00:00Z |
| Microsoft | Cost details via Cost export file | 05/13/2023 |
+| OCI | Cost reports | 2022-08-19T01:00Z |
## Discussion / Scratch space
diff --git a/supporting_content/attributes/null_handling.md b/supporting_content/attributes/null_handling.md
index 5c1c14fb6..78cb17939 100644
--- a/supporting_content/attributes/null_handling.md
+++ b/supporting_content/attributes/null_handling.md
@@ -9,6 +9,7 @@ Current values observed in billing data for various scenarios:
| AWS | CUR | Product_operation shows the type of operation used by a consumer.
However, in scenarios where the line item represents tax, this column is set to null. |
| GCP | Big Query Billing Export | Credits.name is null when a credit is not applied. |
| Microsoft | Cost Details | ResourceGroup is null when a charge is not from a resource deployed to a resource group.|
+| OCI | Cost reports | product/availabilityDomain is null when resource is an Object Store bucket |
## Discussion / Scratch space
diff --git a/supporting_content/dimensions/availabilityzone.md b/supporting_content/dimensions/availabilityzone.md
index aa705cf3c..7581d7742 100644
--- a/supporting_content/dimensions/availabilityzone.md
+++ b/supporting_content/dimensions/availabilityzone.md
@@ -9,6 +9,7 @@ Current column mappings found in available data sets:
| AWS | CUR | lineItem/AvailabilityZone |
| Google Cloud | BigQuery Billing Export | location.zone |
| Microsoft | Cost details | Not available |
+| OCI | Cost reports | product/availabilityDomain |
## Example usage scenarios
@@ -19,6 +20,7 @@ Current values observed in billing data for various scenarios:
| AWS | CUR | us-east-1a, me-south-1, ap-southeast-4 |
| Google Cloud | BigQuery Billing Export | us-central1-a, europe-west6-b, asia-east2-b |
| Microsoft | Cost details | N/A |
+| OCI | Cost reports | product/availabilityDomain | EnnW:CA-TORONTO-1-AD-1, EnnW:EU-STOCKHOLM-1-AD-1, EnnW:US-ASHBURN-AD-1 |
## Discussion / Scratch space:
@@ -34,6 +36,8 @@ Discussion of zone definition
- AWS Billing: [Product details - AWS Cost and Usage Reports](https://docs.aws.amazon.com/cur/latest/userguide/product-columns.html#R)
- GCP Billing: [Structure of Detailed data export | Cloud Billing](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables/detailed-usage#detailed-usage-cost-data-schema)
- Azure Billing: [Understand cost details fields](https://learn.microsoft.com/en-us/azure/cost-management-billing/automate/understand-usage-details-fields)
+ - OCI Billing: [OCI Cost report schema - Cost and Usage Reports Overview](https://docs.oracle.com/en-us/iaas/Content/Billing/Concepts/usagereportsoverview.htm)
- Azure Zone: [What are Azure regions and availability zones? | Microsoft Learn](https://learn.microsoft.com/en-us/azure/reliability/availability-zones-overview)
- GCP Zone: [Geography and regions](https://cloud.google.com/docs/geography-and-regions)
- AWS Zone: [AWS Regions and Availability Zones](https://docs.aws.amazon.com/whitepapers/latest/get-started-documentdb/aws-regions-and-availability-zones.html)
+ - OCI Zone: [OCI Regions and Availability Domains](https://docs.oracle.com/en-us/iaas/Content/General/Concepts/regions.htm)
diff --git a/supporting_content/dimensions/billingaccountid.md b/supporting_content/dimensions/billingaccountid.md
index 6e323472e..e38aa3e20 100644
--- a/supporting_content/dimensions/billingaccountid.md
+++ b/supporting_content/dimensions/billingaccountid.md
@@ -11,6 +11,7 @@ Current column mappings found in available data sets:
| Microsoft | Cost details | EA: BillingAccountId |
| Microsoft | Cost details | MCA: BillingProfileId |
| Microsoft | Cost details | MOSA: SubscriptionId |
+| OCI | Cost reports | cost/subscriptionId |
## Documentation
@@ -29,6 +30,7 @@ Current values observed in billing data for various scenarios:
| AWS | CUR | |
| GCP | Big Query Billing Export | |
| Microsoft | Cost details | |
+| OCI | Cost reports | |
## Discussion / Scratch space:
diff --git a/supporting_content/dimensions/billingcurrency.md b/supporting_content/dimensions/billingcurrency.md
index 430304b88..30604da39 100644
--- a/supporting_content/dimensions/billingcurrency.md
+++ b/supporting_content/dimensions/billingcurrency.md
@@ -9,6 +9,7 @@ Current column mappings found in available data sets:
| AWS | CUR | CurrencyCode |
| Google Cloud | Big Query Billing Export | Currency |
| Microsoft | Cost details | EA: BillingCurrency |
+| OCI | Cost reports | cost/currencyCode |
## Requirements
@@ -27,6 +28,7 @@ Current values observed in billing data for various scenarios:
| AWS | CUR | USD |
| Google Cloud | Big Query Billing Export | INR |
| Microsoft | Cost details | USD |
+| OCI | Cost reports | USD |
## References
@@ -36,3 +38,5 @@ AWS: https://docs.aws.amazon.com/cur/latest/userguide/Lineitem-columns.html#l-C
Google Cloud: https://cloud.google.com/billing/docs/resources/currency
Azure: https://azure.microsoft.com/en-us/pricing/faq/
+
+OCI: https://www.oracle.com/cloud/price-list/
diff --git a/supporting_content/dimensions/billingperiodend.md b/supporting_content/dimensions/billingperiodend.md
index 149972201..94e76b6c5 100644
--- a/supporting_content/dimensions/billingperiodend.md
+++ b/supporting_content/dimensions/billingperiodend.md
@@ -9,6 +9,7 @@ Current column mappings found in available data sets:
| AWS | CUR | bill/BillingPeriodEndDate |
| GCP | BigQuery Billing Export | invoice.month |
| Microsoft | Cost details | BillingPeriodEndDate |
+| OCI | Usage Proxy/BillingScheduleSummary API | timeEnd |
## Example usage scenarios
@@ -18,6 +19,7 @@ Current column mappings found in available data sets:
| GCP | BigQuery Billing Export | Not available | 202304 |
| Microsoft | Cost details | via Consumption API (usageDetails) | 2022-10-11T00:00:00Z |
| Microsoft | Cost details | via Cost export file | 02/13/2023 |
+| OCI | Usage Proxy/BillingScheduleSummary API | [Usage Proxy/BillingScheduleSummary API](https://docs.oracle.com/en-us/iaas/api/#/en/usage-proxy/20190111/BillingScheduleSummary/) | NA |
## Discussion Topics
diff --git a/supporting_content/dimensions/billingperiodstart.md b/supporting_content/dimensions/billingperiodstart.md
index dbb565751..7bc77295a 100644
--- a/supporting_content/dimensions/billingperiodstart.md
+++ b/supporting_content/dimensions/billingperiodstart.md
@@ -9,6 +9,7 @@ Current column mappings found in available data sets:
| AWS | CUR | bill/BillingPeriodStartDate |
| GCP | BigQuery Billing Export | invoice.month |
| Microsoft | Cost details | BillingPeriodStartDate |
+| OCI | Usage proxy BillingScheduleSummary API | timeStart |
## Example usage scenarios
@@ -18,6 +19,7 @@ Current column mappings found in available data sets:
| GCP | BigQuery Billing Export | Not available | 202304 |
| Microsoft | Cost details | via Consumption API (usageDetails) | 2022-10-11T00:00:00Z |
| Microsoft | Cost details | via Cost export file | 02/13/2023 |
+| OCI | Usage proxy BillingScheduleSummary API | via [API](https://docs.oracle.com/en-us/iaas/api/#/en/usage-proxy/20190111/BillingScheduleSummary/) | NA |
## Discussion Topics
diff --git a/supporting_content/dimensions/chargeperiod.md b/supporting_content/dimensions/chargeperiod.md
index 94850e936..02fb1cd7e 100644
--- a/supporting_content/dimensions/chargeperiod.md
+++ b/supporting_content/dimensions/chargeperiod.md
@@ -9,6 +9,7 @@ Current column mappings found in available data sets:
| AWS | CUR | line_item_usage_start_date
line_item_usage_end_date|
| GCP | BigQuery Billing Export | From the BigQuery billing export, every line item has two dates:
- usage_start_time - TIMESTAMP
2018-07-02 03:00:00 UTC
- usage_end_time - TIMESTAMP
2018-07-02 04:00:00 UTC
The start time is inclusive and the end time is exclusive. The moment defined by usage_end_time is then used to define a usage_start_time for subsequent cost line items.
In addition to these two fields, there is usage data that could have an impact on usage duration and measuring a usage period:
- usage.amount
- usage.unit
- usage.amount_in_pricing_units
- usage.pricing_unit |
| Microsoft | Cost details | Azure cost export contains a “date” field with the assumption that the cost details.
This date field is a Timestamp with 00:00:00 UTC time.
2018-07-03 00:00:00UTC|
+| OCI | Cost reports | lineItem/intervalUsageStart
lineItem/intervalUsageEnd |
## Example usage scenarios
diff --git a/supporting_content/dimensions/region.md b/supporting_content/dimensions/region.md
index a3d1d30e8..ac534247b 100644
--- a/supporting_content/dimensions/region.md
+++ b/supporting_content/dimensions/region.md
@@ -9,6 +9,7 @@ Current column mappings found in available data sets:
| AWS | CUR | Product_region |
| Google Cloud | BigQuery Billing Export | Location.location |
| Microsoft | EA, MCA | ResourceLocation |
+| OCI | Cost reports | product/region |
## Example usage scenarios
@@ -19,6 +20,7 @@ Current values observed in billing data for various scenarios:
| AWS | CUR | us-east-1, eu-west-1, us-gov-east-1 |
| Google Cloud | BigQuery Billing Export | northamerica-northeast1, asia-southeast1, us-central2, europe-west3, us |
| Microsoft | Cost details | Eastasia, AP East, WestUS, centralindia |
+| OCI | Cost reports | ap-mumbai-1, ca-toronto-1, eu-frankfurt-1, us-ashburn-1 |
## Discussion / Scratch space:
@@ -69,4 +71,5 @@ Current values observed in billing data for various scenarios:
- References:
- AWS: [https://docs.aws.amazon.com/cur/latest/userguide/product-columns.html#R](https://docs.aws.amazon.com/cur/latest/userguide/product-columns.html#R)
- GCP: [https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables/detailed-usage#detailed-usage-cost-data-schema](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables/detailed-usage#detailed-usage-cost-data-schema), [https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables/standard-usage](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables/standard-usage)
- - Azure: [https://learn.microsoft.com/en-us/azure/cost-management-billing/automate/understand-usage-details-fields](https://learn.microsoft.com/en-us/azure/cost-management-billing/automate/understand-usage-details-fields)
\ No newline at end of file
+ - Azure: [https://learn.microsoft.com/en-us/azure/cost-management-billing/automate/understand-usage-details-fields](https://learn.microsoft.com/en-us/azure/cost-management-billing/automate/understand-usage-details-fields)
+ - OCI: [https://docs.oracle.com/en-us/iaas/Content/General/Concepts/regions.htm](https://docs.oracle.com/en-us/iaas/Content/General/Concepts/regions.htm)
diff --git a/supporting_content/dimensions/resourceid.md b/supporting_content/dimensions/resourceid.md
index b0c684e9d..21132518c 100644
--- a/supporting_content/dimensions/resourceid.md
+++ b/supporting_content/dimensions/resourceid.md
@@ -9,6 +9,7 @@ Current column mappings found in available data sets:
| AWS | CUR | line_item_resource_id |
| GCP | Big Query Billing Export | resource.global_name |
| Microsoft | Cost details | ResourceId |
+| OCI | Cost reports | product/resourceId |
## Example usage scenarios
@@ -27,6 +28,7 @@ Current values observed in billing data for various scenarios:
| Microsoft | Reservation purchases | /providers/Microsoft.Capacity/reservationOrders/\ |
| Microsoft | Savings plan purchases | /providers/Microsoft.BillingBenefits/savingsPlanOrders/\ |
| Microsoft | Marketplace and other purchases | (null) |
+| OCI | Resource based | ocid1.\.\.\[REGION]\[.FUTURE USE].\
### Documentation
@@ -43,6 +45,9 @@ Microsoft:
GCP:
> [Resource Names documentation](https://cloud.google.com/asset-inventory/docs/resource-name-format)
+OCI:
+> [OCI guide on Resource identifiers](https://docs.oracle.com/en-us/iaas/Content/General/Concepts/identifiers.htm)
+
## Discussion / Scratch space
- Should there be a resource name and a separate fully qualified name? Use one column for resource ID and make a recommendation for the value to be globally unique within the provider (e.g. a fully qualified name)
diff --git a/supporting_content/dimensions/resourcename.md b/supporting_content/dimensions/resourcename.md
index e115eee4f..0307b13ad 100644
--- a/supporting_content/dimensions/resourcename.md
+++ b/supporting_content/dimensions/resourcename.md
@@ -9,6 +9,7 @@ Current column mappings found in available data sets:
| AWS | CUR | Not present as a separate column in data.
Name available in some cases as a part of line_item_resource_id (in the ARN OR as the id for things like s3 buckets) |
| GCP | Big Query Billing Export | Not present as a separate column in data.
Column resource.global_name seems to have a resource name at the very end of the fully qualified resource name (resource.global_name). |
| Microsoft | Cost details | ResourceName |
+| OCI | Cost reports | Not present. Closest thing is product/resourceId |
## Example usage scenarios
diff --git a/supporting_content/dimensions/servicecategory.md b/supporting_content/dimensions/servicecategory.md
index 64c4a85c6..ba61bfa7b 100644
--- a/supporting_content/dimensions/servicecategory.md
+++ b/supporting_content/dimensions/servicecategory.md
@@ -9,6 +9,7 @@ Current column mappings found in available data sets:
| AWS | CUR | None |
| GCP | Big Query Billing Export | None |
| Microsoft | Cost details | ServiceFamily is close, but based on usage |
+| OCI | Cost reports | Closest thing is column product/service in cost reports |
## Discussion / Scratch space
diff --git a/supporting_content/dimensions/servicename.md b/supporting_content/dimensions/servicename.md
index 3130cef41..21fe6c206 100644
--- a/supporting_content/dimensions/servicename.md
+++ b/supporting_content/dimensions/servicename.md
@@ -10,6 +10,7 @@ Current column mappings found in available data sets:
| GCP | Big Query Billing Export | service.description |
| Microsoft | Cost details | ConsumedService (represents the Azure Resource Manager resource provider, which is not a 1:1 relationship to the actual service)
Related:
ServiceName (EA only)
MeterCategory (EA and MCA)
(Both are functionally the same. ServiceName has “cleaner” values for EA only.)
Description: Name of the classification category for the meter. Same as the service in the Microsoft Customer Agreement Price Sheet. Exact string values differ. |
| Microsoft | Price sheet | serviceName |
+| OCI | Cost reports | product/service |
## Example usage scenarios
@@ -20,10 +21,12 @@ Current values observed in billing data for various scenarios:
| AWS | CUR | AmazonS3, AmazonRDS |
| GCP | Big Query Billing Export | Networking, Cloud SQL, BigQuery |
| Microsoft | Cost details | Virtual Machines, Azure App Service, Azure Monitor |
+| OCI | Cost reports | OBJECTSTORE, COMPUTE, BLOCK_STORAGE |
- Microsoft: [understand-usage-details-fields](https://learn.microsoft.com/en-us/azure/cost-management-billing/automate/understand-usage-details-fields)
- AWS: The code of the product measured
- GCP: The service.description column contains the name of the service.
+- OCI: [Cost Report Schema](https://docs.oracle.com/en-us/iaas/Content/Billing/Concepts/usagereportsoverview.htm#Cost_and_Usage_Reports_Overview__cost_report_schema)
## Discussion / Scratch space
diff --git a/supporting_content/dimensions/subaccountid.md b/supporting_content/dimensions/subaccountid.md
index e931494a7..dd3a6f74f 100644
--- a/supporting_content/dimensions/subaccountid.md
+++ b/supporting_content/dimensions/subaccountid.md
@@ -10,6 +10,7 @@ Current column mappings found in available data sets:
| GCP | Big Query Billing Export | project.id |
| Microsoft | Cost details | SubscriptionGuid |
| Microsoft | Price Sheet | |
+| OCI | Cost reports | lineItem/tenantId |
## Example usage scenarios
@@ -21,10 +22,12 @@ Current values observed in billing data for various scenarios:
| GCP | Big Query Billing Export | Projects are used for resource grouping, access management and cost segregation purposes within a billing account. |
| Microsoft | Cost details | Subscriptions are used for resource grouping, access management and cost segregation purposes within a billing profile. |
| Microsoft | Price sheet | |
+| OCI | Cost reports | Tenancies are used for segregating resources and access management. Multiple tenancies can be mapped to a "Subscription" (Billing Construct) in an Organization |
- GCP: [Resource Hierarchy](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy#resource-hierarchy-detail)
- Azure: [Resource Hierarchy](https://learn.microsoft.com/en-us/azure/governance/management-groups/overview), [Organizing Resources](https://learn.microsoft.com/en-us/azure/cost-management-billing/manage/view-all-accounts)
- AWS: [Org Concepts](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html)
+- OCI: [OCI resource hierarchy](https://docs.oracle.com/en/cloud/foundation/cloud_architecture/governance/tenancy.html#how-many-tenancies-do-i-need)
FOCUS plans to include Level 1, Level 3 in the specification. Level 5 (resource name, resource id) are already in the specification.
@@ -37,6 +40,7 @@ FOCUS plans to include Level 1, Level 3 in the specification. Level 5 (resource
| MS MCA | Billing Account | Billing Profile (Invoice Scope) | Invoice Section | Subscription | Resource Group | Resource |
| MS PAYG | Billing Account | Subscription (Invoice Scope) | Resource Group | Resource | | |
| MS Internal | Subscription (Invoice Scope) | Resource Group | Resource | | | |
+|OCI | Organization | Subscription (Invoice Scope) | Tenancy | Compartment | Resource |
## Discussion / Scratch space:
diff --git a/supporting_content/dimensions/subaccountname.md b/supporting_content/dimensions/subaccountname.md
index 010631201..26cf05c7b 100644
--- a/supporting_content/dimensions/subaccountname.md
+++ b/supporting_content/dimensions/subaccountname.md
@@ -10,7 +10,9 @@ Current column mappings found in available data sets:
| AWS | CUR | Not currently available in the CUR, can be gained by the
Organizations [list-accounts](https://docs.aws.amazon.com/cli/latest/reference/organizations/list-accounts.html) API call, returning the name column,
this can be joined to the CUR by the UsageAccountId |
| GCP | Big Query Billing Export | project.name |
| Microsoft | Cost details | SubscriptionName |
+| OCI | API call, can be joined with lineitem/tenantId in Cost reports | [OrganizationTenancy Reference](https://docs.oracle.com/en-us/iaas/api/#/en/organizations/20230401/OrganizationTenancy/) |
- GCP: [Resource Hierarchy](https://cloud.google.com/resource-manager/docs/cloud-platform-resource-hierarchy#resource-hierarchy-detail)
- Azure: [Resource Hierarchy](https://learn.microsoft.com/en-us/azure/governance/management-groups/overview), [Organizing resources](https://learn.microsoft.com/en-us/azure/cost-management-billing/manage/view-all-accounts)
- AWS: [Org Concepts](https://docs.aws.amazon.com/organizations/latest/userguide/orgs_getting-started_concepts.html)
+- OCI: [Organization Management Overview](https://docs.oracle.com/en-us/iaas/Content/General/Concepts/organization_management_overview.htm)
diff --git a/supporting_content/metrics/billedcost.md b/supporting_content/metrics/billedcost.md
index 16975a1d9..cd17d902d 100644
--- a/supporting_content/metrics/billedcost.md
+++ b/supporting_content/metrics/billedcost.md
@@ -11,6 +11,7 @@ Current column mappings found in available data sets:
| AWS | CUR | lineItem/NetUnblendedCost (If you have an EDP, otherwise line_item_unblended_cost) |
| GCP | Big Query Billing Export | Cost (The cost of the usage before any credits, to a precision of up to six decimal places) |
| Microsoft | Cost details | Cost, CostInBillingCurrency, CostInPricingCurrency, EffectivePrice |
+| OCI | Cost reports | cost/myCost |
#### Example usage scenarios
diff --git a/supporting_content/metrics/listunitprice.md b/supporting_content/metrics/listunitprice.md
new file mode 100644
index 000000000..ed6ff5c59
--- /dev/null
+++ b/supporting_content/metrics/listunitprice.md
@@ -0,0 +1,77 @@
+# Column: ListUnitPrice
+
+## Example provider mappings
+
+Current column mappings found in available data sets:
+
+| Provider | Data set | Column |
+|:----------|:-----------------------------|:-------------------------|
+| AWS | CUR;
AWS Price List API | pricing/publicOnDemandRate: The public On-Demand Instance rate in this billing period for the specific line item of usage. If you have SKUs with multiple On-Demand public rates, the equivalent rate for the highest tier is displayed. For example, services offering free-tiers or tiered pricing.
*Note: Since currently only pricing/publicOnDemandRate definition includes note regarding highest tier, I'm not sure if volume-based pricing applies to all unit prices (rates) in CUR files. If it's not consistent, we might have to rely on the AWS Price List API.* |
+| GCP | BigQuery Pricing Data Export;
Cloud Billing API | Not available in BigQuery Billing Export but can be resolved from both the list_price Struct in BigQuery Pricing Data Export and the Cloud Billing API |
+| Microsoft | Cost details;
Azure Retail Prices REST API | pay-as-you-goPrice/PayGPrice: Retail price for the resource
*Note: Identified some discrepancy between the value in Cost details and the Retail Price obtained from the Azure Retail Prices REST API, particularly in the context of CSPs. Might be related to Partner Billing UC?* |
+| OCI | List Pricing REST API | Not available in Cost and Usage Report but can be resolved from the List Pricing REST API |
+
+## References and Resources
+
+### AWS
+
+- [Pricing details - AWS Cost and Usage Reports](https://docs.aws.amazon.com/cur/latest/userguide/pricing-columns.html)
+- [Using the AWS Price List API - AWS Billing](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/price-changes.html)
+
+### GCP
+
+- [Structure of pricing data export | Cloud Billing](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables/pricing-data)
+- [Get Google Cloud pricing information | Cloud Billing (GCP Cloud Billing API)](https://cloud.google.com/billing/docs/how-to/get-pricing-information-api)
+- [Structure of Detailed data export | Cloud Billing](https://cloud.google.com/billing/docs/how-to/export-data-bigquery-tables/detailed-usage)
+
+### Microsoft
+
+- [Understand usage details fields - Microsoft Cost Management](https://learn.microsoft.com/en-us/azure/cost-management-billing/automate/understand-usage-details-fields)
+- [Azure Retail Prices REST API overview | Microsoft Learn](https://learn.microsoft.com/en-us/rest/api/cost-management/retail-prices/azure-retail-prices)
+
+### OCI
+
+- [Cost and Usage Reports Overview](https://docs.oracle.com/en-us/iaas/Content/Billing/Concepts/usagereportsoverview.htm)
+- [Estimate Your Monthly Cost (List Pricing REST API)](https://docs.oracle.com/en-us/iaas/Content/GSG/Tasks/signingup_topic-Estimating_Costs.htm#accessing_list_pricing)
+
+## Example usage scenarios
+
+- See [Appendix: Quantity-Driven Pricing strategies](../apendix/quantity_driven_pricing_strategies.md) section for more information on
+ - Quantity-Driven Pricing strategies (such as flat-rate, volume-based rates and tier-based rating)
+ - related UC scenarios
+ - Current values observed in billing data for various scenarios
+ - Alternative data sources for various scenarios
+- See [Pricing Support – UCs and Data samples Spreadsheet](https://docs.google.com/spreadsheets/d/1AZ-vtkKeKwYc8rqhxP1zMTnAVAS-svmWQQmr8cpv-IM/edit#gid=117987709) for additional UC scenarios and sample data.
+
+## Discussion / Scratch space
+
+### Current data sources
+
+- While Microsoft and AWS offer candidate columns for mapping to ListUnitPrice within billing data, relying on pricing data for all providers is advisable due to mentioned discrepancies and volume/tier-based pricing concerns. Filtering pricing data based on resolved billing data to identify that specific list unit price is possible but often presents a challenge, particularly with volume/tier-based prices.
+- MSFT lists the Retail Price as well as the Unit Price.
+
+### Prices and Currencies
+
+- We deliberated on whether to specify both BillingCurrency and PricingCurrency and decided to enforce a single currency, specifically BillingCurrency. This approach provides consistency and simplifies invoice reconciliation. Since some providers don't include List Unit Prices in BillingCurrency in their public price sheets, the inclusion of a CurrencyExchangeRate dimension in the billing data becomes imperative (name subject to change). This is necessary to ensure we can accurately compare and match ListUnitPrices provided in billing data with those published in public price sheets.
+
+### Naming challenges
+
+Two naming challenges were resolved through polls, giving signed members the chance to voice their preferences.
+
+- POLL 1: Please select the term you prefer to use when referring to the published rate and corresponding cost without any discounts:
+ - Retail - 3 votes
+ - List - 13 votes
+ - Market - 1 vote
+ - PAYG - 1 vote
+ - Public - 5 votes
+- POLL 2: Please select the term you prefer to use when referring to the price for a single unit of measure:
+ - Rate - 2 votes
+ - Unit Price - 13 votes
+ - Price - 2 votes
+
+The following dimensions and metrics names were influenced by these decisions:
+
+- List Cost
+- Billed Unit Price
+- Negotiated Unit Price
+- List Unit Price