Skip to content

Report builder

When the Overview isn’t specific enough, the report builder lets you slice cost data exactly the way you need. It’s available on every plan, including Free.

In the app, open Reports under Insights in the sidebar. The scope picker at the top of the page selects exactly which of your connected integrations the report reads — one, several, or all of a provider’s.

A report reads the integrations you’ve selected in the scope bar, with one rule: they must all belong to the same provider (an AWS report can’t mix in Azure rows). When your scope spans several providers, Reports asks you to narrow to one first — the other Insights views (Savings, Anomalies, Commitments, Tags) keep working across the whole organization.

  • Several integrations selected — totals aggregate across them, and each integration’s own cost-view settings (amortization, credits, and so on) are respected in the merge.
  • A single integration selected — the only selection that offers the Resource dimension: resource-level rows multiply quickly across integrations, so that grain is served one integration at a time.

A report is a query over your cost data. You pick three things:

  1. What to group by — select one or more dimensions; each becomes a level of your rows: account, service, product family, usage family, usage type, region, tag, cost center, or resource.
  2. What to filter to — narrow the data before it’s grouped, so you only see the slice you care about.
  3. The time range and granularity — the window the report covers and how finely it’s broken down over time.

The result is a table you can read directly, export, or save to run again later.

Group your spend by any combination of:

  • Account — which linked AWS account
  • Service — which AWS service (EC2, RDS, S3, and so on)
  • Region — which AWS region (us-east-1, eu-west-1, and so on), taken directly from your billing data — no tag required
  • Product Family, Usage Family, and Usage Type — progressively finer breakdowns within a service
  • Charge Sub-type — how a line was billed: usage, credits, refunds, discounts, taxes, and so on. Handy for separating pure usage from the adjustments applied on top of it
  • By Tag — any cost-allocation tag key you’ve enabled
  • Has Tags? — split spend into resources that carry a cost-allocation tag and those that don’t
  • Cost Center — a defined cost center in your allocation taxonomy
  • Resource — the individual resource behind the spend, for drilling into the underlying cost rows

Dimensions nest in the order you choose them — the first is your top-level rows, the next breaks each of those open, and so on. Drag the chips to reorder the levels. Resource always sits last: it’s the finest grain, so it breaks down whichever groups sit above it.

You can filter to specific accounts, services, or cost centers to focus a report. Not sure which values are valid? The available services and accounts are discoverable, so you can build a filter against real data rather than guessing.

Dimension names stay the same at every scope — Usage Type is Usage Type everywhere — so saved reports, table headers, and conversations read consistently across providers. Hover a dimension chip to see what the scoped provider calls it, and dimensions a provider never populates are hidden at its scope:

  • AWS — the full set above, under its native names.
  • AzureUsage Type maps to Azure’s meter (hover shows it), and Resource Group is a first-class extra dimension, grouping spend by the resource group each charge belongs to. Accounts are your Azure subscriptions.
  • Google CloudAccount maps to the GCP project and Usage Type to the SKU. The GCP billing export carries no per-resource identifiers, so the Resource dimension is hidden at GCP scope.
  • Anthropic / OpenAIService maps to the model, Usage Type to the token type, and Account to the Anthropic workspace / OpenAI project. Service Tier (standard, batch, priority) is a first-class extra dimension, and Anthropic adds Context Window.
  • Snowflake — Account is the Snowflake account, Service is the service type (Compute, Storage, Cloud Services, …), Warehouse is a first-class dimension, Usage Type is the raw meter, and By Tag exposes the rating type / billing type / balance source dimensions. Because Snowflake usage is measured in a single unit (credits), the Usage metric unlocks as soon as any dimension is selected. Grouping by Warehouse shows each warehouse’s estimated cost (compute + cloud-services dollars split by daily credit share, marked attribution: estimated — account totals stay invoice-exact) alongside its credits, so $ / Unit reads as the effective per-credit rate; the Account-level row holds storage, AI Services, and other non-warehouse charges. Hidden at Snowflake scope: Resource, Usage Family, Region (one region per account), and Has Tags?.

Provider-only extras (Resource Group, Warehouse, Service Tier, Context Window) keep their native names — they have no generic equivalent. Cost Center works at any scope — allocation spans every provider.

Every report shows cost. When a Usage Family or Usage Type dimension is active, you can add two usage-based metrics:

  • Usage — the usage quantity: how much of a resource was consumed
  • $ / Unit — the unit cost: the cost per unit of usage

Usage metrics need rows that share a unit, so they step aside while the Resource dimension is on — a single resource’s rows can mix hours, gigabytes, and requests.

Selected metrics appear as extra columns in the table and are carried through to a CSV export.

Every provider ships with built-in report templates — one-click starting points such as EC2 Deep Dive and AWS by Account (AWS), Cost by Resource Group and Meter Deep Dive (Azure), Cost by Project and SKU Deep Dive (Google Cloud), Spend by Model (Anthropic and OpenAI, with unit token rates), Service Tier Mix (Anthropic), and Warehouse Credit Trend (Snowflake). Applying a template fills the builder; save it afterwards to make it your own.

A report rolls your cost rows up along the dimension you grouped by, giving you a compact breakdown — spend per service, per account, or per tag value — that’s ready to chart or share. To see the underlying rows behind a group, drill down to the Resource dimension.

Very large results are kept readable rather than dumped wholesale: resource-level reports fold the long tail of low-cost resources into a single Others row (a banner shows the cutoff), and the table itself displays up to 5,000 rows, with a notice when more were held back. Grand totals always cover the full result, trimmed rows included — narrow the filters or date range to bring a specific slice into view.

Set the report’s start and end dates, then choose how spend is bucketed over time. A coarser granularity is good for trend-spotting across months; a finer one helps you pin down exactly when a change happened.

Each granularity covers a bounded window, so fine-grained reports (and their CSV exports) stay fast and readable:

Granularity Maximum range With the Resource dimension
Monthly 6 months 3 months
Weekly 8 weeks 8 weeks
Daily 31 days 31 days

The limit keeps the end of your range and pulls the start forward — pick a finer granularity and the window narrows automatically (the builder shows a note when it adjusts). Resource-level reports get the tighter monthly window because per-resource rows multiply quickly over time.

  • Export a report to CSV.
  • Save a configuration to reuse it.