FOCUS Mappings
Learn how Ternary maps native cloud billing data to the FOCUS format to enable consistent, multi-cloud cost reporting across AWS, Azure, Google Cloud, and Oracle.
FOCUS (FinOps Open Cost and Usage Specification) is an open standard designed by the FinOps Foundation to normalize cloud cost and usage data across providers, making multi-cloud cost analysis more consistent and comparable.
Ternary supports the FOCUS format by ingesting native FOCUS exports provided directly by cloud providers or by ingesting original billing files such as AWS Cost and Usage Reports. When original billing files are used, Ternary automatically maps them to the FOCUS schema. This approach provides access to all standard FOCUS fields while preserving provider specific columns for deeper cost analysis where required.
Within Ternary reports, fields are clearly distinguished based on their origin. Standardized FOCUS fields are presented as multi-cloud fields and identified using a cloud icon, while fields sourced directly from provider billing exports are labeled with their vendor of origin, such as “AWS bill_invoicing_entity” or “GCP consumption_model_id,” and marked with the corresponding provider logo. This visual distinction makes it easy to differentiate standardized fields from cloud native attributes, even when field names overlap across providers.
For more information on what FOCUS enables in Ternary, visit BYOD.
How FOCUS field mapping works in Ternary?
Ternary maintains compatibility with existing “classic” field names while mapping them to standardized FOCUS field names under the hood. This allows existing reports to continue working while enabling FOCUS-aligned analysis moving forward.
The tables below list how classic Ternary fields map to their corresponding FOCUS fields for both dimensions and measures.
Dimensions
| Classic Field Name | FOCUS Field Name |
|---|---|
| BillingAccountID | Billing Account Id |
| BillingAccountName | Billing Account Name |
| BillingEntity | Invoice Issuer |
| ProjectID | Sub Account Id |
| ProjectName | Sub Account Name |
| cloudId | cloud_id |
| cloudName | cloud_name |
| Category | Service Category |
| Region | Region Id |
| ServiceDescription | Service Name |
| SkuDescription | Charge Description |
| SkuID | Sku Id |
| UsageUnit | Usage Unit |
| Zone | Availability Zone |
| azure_product_name | Product Name |
| azure_product_order_name | Product Order Name |
| azure_meter_subcategory | Meter SubCategory |
| azure_benefit_id | Benefit Id |
| azure_benefit_name | Benefit Name |
| azure_frequency | Frequency |
| azure_reservation_id | Reservation Id |
| azure_reservation_name | Reservation Name |
| azure_resource_group | Resource Group Name |
| azure_partner_name | Partner Name |
| azure_partner_earned_credit_rate | Partner Earned Credit Rate |
| azure_partner_tenant_id | Partner Tenant Id |
| azure_customer_name | customerName |
| azure_resource_group_name | Resource Group Name |
| azure_product_id | Product Id |
| aws_savings_plan_arn | Savings Plan ARN |
| aws_line_item_operation | Line Item Operation |
| aws_usage_type_group | Product Group |
| aws_reservation_arn | Reservation ARN |
| aws_eks_cluster_name | eks:cluster-name |
| aws_eks_namespace | eks:namespace |
| aws_eks_node | eks:node |
| aws_eks_deployment | eks:deployment |
| aws_eks_workload_name | eks:workload-name |
| aws_eks_workload_type | eks:workload-type |
| billingEntity | Billing Entity (AWS Billing Export Field) |
| commitmentPaymentModel | Pricing Purchase Option (AWS Billing Export Field) |
| machine_family_category | Product Instance Family |
| machine_series_family | Product Instance Type Family |
| machine_spec | Product Instance Type |
| vendor | Publisher Name and Provider Name |
| dataSource | Data Source |
| databaseEngine | Product Database Engine (AWS Billing Export Field) |
| invoiceMonth | Invoice Month |
| lineItemType | Charge Category |
| location | Not present but Region and Zone exist |
| operatingSystem | Product Operating System (AWS Billing Export Field) |
| parentId | Ancestry IDs |
| parentName | Ancestry Names |
| pricingModel | Pricing Category |
| pricingUnit | Consumed Unit |
| tenancy | Pricing Model |
| oci_tenant_id | OCI Tenant Id |
| oci_availability_domain | OCI Product Availability Domain |
| projectNumber | Sub Account Number |
| ancestryNames | Ancestors |
| ServiceID | Service Id |
| cloud_provider | Provider Name |
| lineItemType | Line Item Type (AWS Billing Export Field) |
Measures
| Classic Field Name | FOCUS Field Name |
|---|---|
| cost | Will be deprecated - You can use Absolute Credits + Billed Cost to identify "Gross Cost" |
| netCost | Billed Cost |
| amortizedCost | Will be deprecated |
| netAmortizedCost | Effective Cost |
| usageAmount | Consumed Quantity |
| usageAmountInPricingUnits | Usage Amount In Pricing Units (GCP Billing Export Field) |
| awsReservationEffectiveCost | Reservation Effective Cost (AWS Billing Export Field) |
| awsSavingsPlanAmortizedUpfrontCommitmentForBillingPeriod | savings_plan_amortized_upfront_commitment_for_billing_period (AWS Billing Export Field) |
| awsSavingsPlanEffectiveCost | Savings Plan Effective Cost (AWS Billing Export Field) |
| awsNetUnblendedCost | Net Unblended Cost |
| awsUsageBlendedCost | Blended Cost |
Notes and considerations
- Where a direct FOCUS equivalent does not exist, the closest standardized field is used.
- Provider-specific metadata remains accessible and clearly labeled in reports.
Updated 5 days ago
