A cost dimension is an attribute of a billing line by which cloud cost is filtered and grouped: provider, account, subscription or project, service, region, usage type, resource, tag or label, cost category or segment. A filter narrows the total; grouping splits the same total into parts. For the bill the difference is decisive: the parts of a grouped report add up to the ungrouped amount, while a filtered report deliberately shows less. The billing data decides which dimensions exist; allocation decides which of them belong to a team or product.

How it works

Every line carries attributes the provider writes itself, such as account, service, region, usage type and resource, and attributes the company sets: tags, cost categories, segments. A filter selects values and leaves the rest out, so the gap to the invoice is intended. Grouping keeps everything and spreads it over the values of one dimension. For the parts to add up, every line needs exactly one value; where none is set, the provider collects the cost in a remainder row. The table shows what the same dimension is called in the consoles and in FOCUS.

DimensionFOCUS columnAWS Cost ExplorerAzure cost analysisGoogle Cloud Billing reports
ProviderServiceProviderNameProvider
Account, subscription, projectSubAccountIdLinked accountSubscriptionProject
ServiceServiceNameServiceService nameService
RegionRegionIdRegionLocationLocation: Region or multi-region
Usage typeSkuId, SkuMeterUsage typeMeterSKU
ResourceResourceIdResources, after opt-in, for EC2Resourcenot available
Tag or labelTagsTag, activated onlyTagLabel keys
Cost categoryCost category
Kind of chargeChargeCategoryCharge typeCharge typeSavings and Invoice level charges filters

AWS

Cost Explorer filters by Linked account, Service, Region, Availability Zone, Usage type, Usage type group, Instance type, Purchase option, Charge type, Billing entity, Resources and Tag, among others. Several values within one filter are combined with OR, several filters with AND. In the console you choose one Group by option; without one, Cost Explorer shows total cost, and grouped charts have no forecast. The chart holds at most ten series; with more values the tenth combines all the rest, and they appear one by one only in the table below. The GetCostAndUsage API groups by up to two attributes, such as dimensions, tag keys or cost categories. Cost Explorer drops taxes as soon as a filter other than Linked account is set. Tags appear only once activated as cost allocation tags; cost without the key shows as "No tag key".

Azure

Cost analysis groups by exactly one attribute. For two levels Microsoft suggests setting the coarser one as a filter and grouping by the finer one, for instance selecting a resource group and splitting its cost by resource; the Query API allows up to two groupings. The chart shows the ten largest values, or with more than ten the nine largest plus an Others group; the table with granularity None shows all. When grouping by a tag key, Azure splits the remainder into three values: Tags not supported, Tags not available and Untagged. Azure sorts Untagged last whatever its size, and once ten or more tag values exist it disappears into Others. Tags apply to usage from the moment they are set, not retroactively. Several filters narrow each other: the second offers only values the first leaves.

Google Cloud

Cloud Billing reports group by one dimension, or by date or month plus one dimension, such as Date > Project. The options include Project, Project hierarchy, Service, SKU, Location and Label keys, one label key at a time. Cost without a project appears as [Charges not specific to a project], cost without the chosen key as [Charges for other usage]; labels on the project itself are not used when grouping. Filters cover subaccounts, folders and organisations, projects, products, services, SKUs, locations, labels, savings and invoice-level charges. Below the SKU, by resource ID for instance, the reports do not go; the detailed BigQuery export does. Conversely, some filters and groupings exist only in the report and not in the export schema.

FOCUS

FOCUS 1.4 gives the common dimensions vendor-neutral names, with Tags as a JSON object. Since 1.3 the provider is named in ServiceProviderName, which replaces the removed ProviderName column. How the providers fill the columns is covered in FOCUS columns and the providers' mapping.

What it means for your cost

Grouping changes nothing on the invoice; it only orders. The remainder row is the figure that matters: whatever sits under Untagged, "No tag key" or [Charges for other usage] is cost a report by team or product cannot explain. How large that share is and what it consists of is covered in tag coverage and untagged cost. Dimensions of your own that combine several conditions are built as segments (segments and hierarchies in cost allocation).

A filter changes the total, so it belongs visibly in the report. Anyone who sets an AWS report filtered by service beside the invoice is also missing the taxes.

Two dimensions at once multiply the rows: if dimension A has a values and dimension B has b values, up to a × b rows result, and every further dimension multiplies again. The consoles limit this with one grouping, and AWS and Azure also with a chart of ten values. Cross-analyses go through filter plus grouping, the API with two groupings, or a query on the export.

Across providers every dimension needs a mapping, because one question has three names: Linked account, Subscription, Project. FOCUS supplies that mapping for the columns, not for the values; a tag key has to be spelt the same way at every provider for a grouping across all of them to come together.

Where it goes wrong

  • Others swallows the driver. Symptom: a growing service is invisible in the chart. Cause: Cost Explorer and Azure show nine values individually and combine the rest; the table shows them all.
  • Untagged overlooked. Symptom: in the Azure chart the teams look fully covered. Cause: Untagged always sits last and folds into Others once there are ten or more tag values.
  • A tag counts only from activation. Symptom: earlier months sit almost entirely under "No tag key". Cause: AWS shows a key from its activation, earlier months only after a backfill of at most twelve months; Azure and Google count from when the tag or label is set.
  • A filter hides taxes. Symptom: AWS reports filtered by service add up to less than the invoice. Cause: with filters other than Linked account, Cost Explorer drops taxes.
  • A grouping the export lacks. Symptom: an analysis from the Google report cannot be rebuilt in BigQuery. Cause: some filters and groupings exist only in the report.
  • Project labels expected. Symptom: when grouping by a label, a whole project is missing. Cause: Google does not use labels on projects for that grouping.

Sources

Read on 2026-10-16. AWS filtering data in Cost Explorer, modifying your chart and grouping, the Cost Explorer chart, GetCostAndUsage, cost allocation tags, backfilling cost allocation tags and, on the Cloud Financial Management blog, a tagging strategy with a "No tag key" Cost Explorer report; Microsoft customize views in cost analysis, group and filter options and Query API, Usage; Google Cloud Cloud Billing reports and exporting Cloud Billing data to BigQuery; FOCUS specification 1.4, the Service Provider Name column and the Tags column.