Analyze — Ad-Hoc Cost Analysis#

Analyze lets you ask any cost question across your entire multi-cloud dataset. Choose a time range, cost type, granularity, grouping dimensions, and up to 15 filter conditions, then view results as a chart or table. Results are URL-shareable and can be saved as named queries that appear as pinned charts on the Home page.

Navigate: left navigation → FinOps → Analyze.


Controls#

Time Range#

Same presets as Assess (Last 7 Days through This Year, plus Custom). Maximum end date: yesterday (T−1).

Cost Type#

Actual or Amortised. The Forecast feature is only available with Actual cost type.

Queries use the tenant’s reporting currency unless USD is explicitly requested. The API returns an ISO currency code such as EUR or USD, not its numeric code.

Granularity#

Granularity

Best for

Daily

Anomaly detection, investigating a specific date

Weekly

Week-on-week trends without daily noise

Monthly

Long-term trends, year-over-year comparison


Grouping#

Select dimensions from the Group By dropdown, within the query’s eight-column limit. Some selections expand into multiple backend columns, so unavailable additions are disabled. Resource remains an exclusive grouping.

Dimension

Description

Provider

Azure / AWS / GCP

Connection

Each cloud account

Group

Org hierarchy nodes (from Allocate)

Category

Discovery category: Compute, Network, Container, Database, Storage, Analytics, Integration, AI, Security & Identity, or Other

Resource

Individual resource names

Type

Provider-specific resource type

Tag

A specific tag key (enter the tag key after selecting)

Cost Type

Usage / Reservation / Tax / Discount / Other

Meter

Native billing family/service, such as Azure OpenAI GPT5, Amazon S3 or Cloud SQL

Charge detail

Native charge detail (MeterSubcategory), such as input tokens, AWS usage type or a GCP SKU description

Warning

Grouping by Resource or Type on large accounts can produce hundreds of series. Apply filter conditions first to narrow the scope.


Meter breakdown#

Choose a service from Meter breakdown, next to the Group by dropdown. Search by service name, cloud provider or native resource type. The detail-level control beside the Meter breakdown label switches between By meter, showing the service’s billing families, and Charge details, adding the individual charges within each family. The table and exports include these dimensions.

Each billing item keeps its resource name and native resource identity. Meter groupings automatically include resource context, including when restored from a saved query or shared URL. Resources with the same name are not merged. The summary shows the resource above its charge description, with a Discovery link when the resource is known. Legend cards show the charge, family and resource; search matches both readable labels and the original billing text.

Meter and charge-detail views use backend Top K, returning the eight highest-cost resource/billing-item combinations across the selected period by default. All other combinations are consolidated into Remaining Aggregated Costs, preserving totals, credits and forecasts without loading every billing item into the browser. The same selected combinations are used across time buckets. This also applies when meters are combined with a hierarchical grouping or restored from a saved/shared query. Apply service, connection or other filters to inspect items outside the Top K. Chart Top N, threshold and selection controls only affect visibility within the returned results; they do not retrieve additional billing items. Exports use the current bounded view and include IsRemainingAggregatedCosts to distinguish the aggregate from a charge with unavailable meter details. Resource-context columns also count towards the eight-column grouping limit.

Selecting a service sets the resource-type filter and adds Meter to the existing grouping. Charge details groups by both Meter and MeterSubcategory. If Resource was selected, it is replaced by the meter dimensions; other grouping dimensions, filters, time range and accounting settings stay applied. Unavailable detail levels are disabled when they would exceed the eight-column grouping limit.

Exit meter view removes only the meter grouping. The selected resource-type filter stays applied so you can compare the same service by another dimension. Clear Resource Types separately to include other services again.

Azure#

Supported types include Foundry/Azure AI and Fabric, Virtual Machines and Scale Sets, Managed Disks, Storage Accounts, SQL Databases and Managed Instances, Cosmos DB, PostgreSQL and MySQL Flexible Servers, App Service Plans and Apps/Functions, AKS, Container Apps, Log Analytics, Application Gateways, Azure Firewall, Load Balancers, Public IP Addresses, Key Vault, Service Bus, Event Hubs and Azure Cache for Redis. Charges attributed to supporting infrastructure remain on that infrastructure’s resource type, rather than being reassigned to its parent service.

Azure meter values remain the provider’s original text in storage and exports. For display only, recognized Azure OpenAI charge abbreviations are expanded: Inp/Opt become Input/Output, Cd Inp/Cd Wr become Cached input/Cache write, and context, Standard and Global labels are written out. Model names, quantities, units and unknown abbreviations remain unchanged; the tooltip retains the exact original billing text. Other providers’ SKU and usage descriptions are not reinterpreted. The field names are intentionally reversed from Azure’s API: Meter contains Azure’s MeterSubCategory (family), and Meter Subcategory contains Azure’s Meter (detailed charge).

AWS#

Supported services are Amazon EC2 instances, Amazon S3 buckets and Amazon RDS databases. Meter is the native billing service name; Meter Subcategory is the raw Cost Explorer USAGE_TYPE, including any region prefix. Usage, reservation-covered usage and Savings Plan-covered usage retain their actual and amortised amounts. Reservation fees, credits, tax and other charge classes remain in their existing aggregated accounting rows.

AWS detail is available only within Cost Explorer’s 14-day resource-level window, and daily resource-level data must be enabled for the selected services in AWS Cost Management preferences. Enabling it can take up to 48 hours. Older refreshes update the account-level remainder without replacing previously stored meter details. Meter ingestion makes one additional paginated Cost Explorer query per supported service; AWS API charges and throttling rules apply.

GCP#

Supported services are Compute Engine VMs and disks, Cloud Storage buckets and Cloud SQL instances. Meter is the raw billing service.description; Meter Subcategory is the raw sku.description, from the existing detailed BigQuery billing export. Usage credits remain included in each SKU’s net cost. Commitment fees, tax, adjustments and billing-account-level costs keep their existing aggregate attribution. No new export or billing dataset is required.

Compatibility and attribution#

Historical costs retain empty meter fields until their dates are refreshed. Other services and reservation fees keep their aggregated costs. Ordinary totals and non-meter groupings continue to sum the detailed records. Costs without a matching discovered resource are not assigned an invented resource or resource type. A resource-type filter only includes attributed costs; group by Meter without that filter to inspect any unattributed service charges. Forecasts remain resource-level: an empty meter on a forecast means that it has not been attributed to a specific charge, not a prediction for every meter. They appear separately as Resource-level forecast, rather than an Unspecified meter. Actual costs missing detail are labelled Meter unavailable or Charge detail unavailable and remain included in totals; they are never reassigned to another charge. An information icon in the summary table and legend card explains that older aggregated costs or charges without detailed provider billing information can lack a meter breakdown. Hover over or focus the icon to read the explanation.


Filters (up to 15 conditions)#

Each filter condition has a dimension, an operator (Equals / Not Equals / All), and up to 20 values. Conditions are combined with AND logic.

Filters stay visible while they fit on the toolbar. On narrower screens, More filters contains only the filters that do not fit; it disappears when all filters fit. Each active filter shows its value count and a separate clear button. Clearing filters does not reset the time range, grouping or accounting settings. Meter and billing-item details are explored through Meter breakdown, not manual text filters. Older saved or shared queries keep any existing meter conditions: their applied values remain visible and removable, without requiring you to enter provider-specific billing strings.

Resource Types uses a searchable, paginated catalog shared with Discovery. It uses the same search field and selected chips as Resource Names. Type part of a native type string to open matching suggestions; scrolling to the bottom loads more matches. Selections remain selected across pages and searches. The catalog combines built-in supported types, metered types and learned provider/type mappings. Partial searches such as farm find microsoft.web/serverfarms, and fabric finds microsoft.fabric/capacities, even if their categories have never been inferred. A type may have no costs in your tenant or selected period. Loading failures are shown with a retry action rather than being presented as an empty catalog. Not Equals excludes all selected types. For an ungrouped query with one excluded value, the chart and summary say All except …, not the excluded type’s name.

The cost summary shows a loading state while a query runs. If the query fails, Analyze shows an error with Retry, rather than displaying failed data as zero spend.

Examples:

Filter

Result

Provider = Azure AND Category = Compute

Azure compute costs only

Group = Platform Engineering

All costs attributed to that group and its children

Tag: environment = production

Resources tagged environment=production

Connection = AWS Prod AND Provider = AWS

Single-account AWS view


Chart types#

Type

Best for

Line

Trends over time; easy period comparison

Area

Stacked volume contribution per dimension value

Bar

Period-by-period comparison across multiple series

Horizontal Bar

Ranking (e.g. “top 10 resources by cost”)

Daily line and area charts include every historical day in the selected range. Missing days, including gaps within an individual series, are displayed as zero. The same applies to forecast series, from their forecast start through the last returned forecast date. Existing amounts, credits and totals stay unchanged, and the chart does not extend the returned forecast horizon.

Use Log scale for positive costs with large differences in magnitude. The toggle changes only the numeric cost axis; amounts, totals and tooltips keep their original values. It is available for line and bar charts. Area charts remain linear to preserve the stacked zero baseline.

When any displayed cost is zero, negative (for example a credit), or non-finite, the chart uses a linear axis and disables the toggle. Log scale does not hide these values or replace them with a small positive number.


Ask about a cost point#

Contextual cost questions open the existing CMP Agent conversation with the selected series, time bucket or full-range total, filters, grouping, accounting type and displayed amount. The Agent is asked to explain what is driving the cost in plain language and suggest a useful cost-control check, without making changes. It retrieves the relevant costs rather than receiving a full chart snapshot. Answers request a highlighted conclusion, a few concise points and a service-specific next step with its trade-off, rather than a list of chart values.

A compact chart is requested when retrieved figures support a meaningful comparison of contributors or a trend. It uses the same currency, accounting type and period, and preserves credits rather than treating them as positive pie slices.

Forecast values are predictions, not observed charges. The Agent distinguishes the actual baseline from the prediction and identifies any difference in supported currency, period or remaining-series membership instead of claiming an exact reproduction.


Forecast#

Enable the Forecast toggle to add a forward-looking cost projection. The forecast is powered by a machine learning model that adapts continuously to your actual spend patterns and seasonality. Projected values appear as a dashed line and shaded area beyond the current date.

Limitations:

  • Requires at least ~14 days of historical data to be meaningful

  • Disabled for Amortised cost type


Period comparison#

Enable Compare to previous period to overlay the equivalent prior period on the same chart. Shows a dashed comparison series and a % change indicator on hover.


URL sharing#

Every setting you configure (filters, grouping, time range, chart type) is encoded into the page URL in real time. Copy and share the URL — your teammate will see exactly the same view.

Tip

Bookmark complex queries you refer to regularly.


Saving a query#

Click Save query → name it → Save. Saved queries:

  • Appear in your saved query list (accessible from the Analyze header)

  • Can be pinned to the Home page — click the pin icon next to any saved query to promote it to a live chart on your Home dashboard

  • Up to 3 pinned queries appear as interactive charts on the Home page, refreshed automatically on each visit

  • Can be edited, renamed, unpinned, and deleted at any time

Tip

Pin your team’s most critical cost views — for example, “Production spend this month by service” — so they surface immediately when anyone opens Reply CMP.


Query performance#

Grouping and aggregation in Analyze are performed entirely at the backend using a top-k algorithm: only the top-k most expensive dimension values are returned and rendered, with all remaining values consolidated into an “Other” bucket. This means:

  • Faster chart rendering on accounts with hundreds of connections or thousands of resources

  • Cleaner, more readable charts (no more 200-series overloaded views)

  • The default top-k is at frontend 8.

Note

If a specific resource or connection you expect is not visible in the chart it may have fallen below the top-k threshold. Apply a filter condition to narrow the scope or increase the top-k value in the advanced options.