Getting your cloud usage data

Azure usage export

How to create a Cost Management export of your cloud usage data.

This guide walks you through creating a recurring daily Cost Management export of your cost and usage details, delivered to an Azure Blob Storage container you own. Create it at the billing-account scope so it covers your whole estate.

Azure offers several cost and usage datasets: Cost and usage details (actual), Cost and usage details (amortized), and Cost and usage details (FOCUS). Greenpixie supports them all.

Before you start

You need:

  • Owner or Contributor on the chosen billing scope. For EA that is the enrolment, department, account or subscription; for MCA it is the billing account, billing profile, invoice section or subscription.
  • A storage account and container to receive the export. Create them, or use an existing account and container. If you plan to use Greenpixie's cloud usage report enrichment service, this is the same storage you will connect later, so a name that includes your company or team is recommended, for example abcbillingdata. See Connect Azure Blob Storage.

How delivery works, and the conditions it needs:

  • Cost Management delivers via a system-assigned managed identity, which Azure grants Storage Blob Data Contributor scoped to the target container only, and it requires Allow trusted Azure services access enabled on the storage account.
  • If policy prohibits the trusted-services exception, for example private-endpoint-only storage, Cost Management exports cannot deliver. You then need a dedicated storage account with an approved exception, so agree this with security before scheduling the change.
  • Microsoft's prerequisites also require the storage account's Permitted scope for copy operations setting to be From any storage account. Check this if the account is locked down.
  • If the storage account has firewall rules, export creation additionally requires Owner on the storage account, or a custom role with Microsoft.Authorization/roleAssignments/write and Microsoft.Authorization/permissions/read. This elevated permission is only needed at creation, not for routine runs.
  • The storage account must be in the same tenant as the billing scope. Cross-tenant delivery is not supported for firewalled storage.

If usage spans more than one billing account or enrolment, repeat these steps per scope.

Create the export

  1. In the Azure portal, open Cost Management and select the billing-account scope, or the broadest scope you have been granted.
  2. Select Exports, then Create.
  3. Choose Create your own export and add an export with the settings below.
  4. On the Destination tab, select the storage account, container and directory path.
  5. Review and create.
  6. Backfill historical months. Open the export and use Export selected dates, running each month back to the earliest month of history you want, in YYYY-MM format. Run one month at a time, up to 13 months.

Export settings

SettingValue
Type of dataCost and usage details, actual, amortized or FOCUS
Dataset versionLatest
FrequencyDaily export of month-to-date costs
Format and compressionParquet, zstd preferred. The Parquet option uses Snappy, which is fine, and CSV with gzip also works.
File partitioningOn, always enabled
Overwrite dataOn
Destination<storage-account> / <destination-container> / <directory path>

Required directory structure

If you will be using Greenpixie's cloud usage report enrichment service, the delivery path must follow the shape below.

<container_name>/<input|output>/<platform>/<account_id>/<year_month>/{partition files}

For this export, use input and platform azure, with the billing account or subscription ID as <account_id>. A resulting path looks like the example below.

<destination-container>/input/azure/<billing_account_id>/2026-07/...

If you enrich data on behalf of multiple customers, add an <org_id> directory above the platform level, and replace <year_month> with a <timestamp> directory identifying a single upload, in ISO 8601 basic format (UTC): YYYYMMDDTHHMMSSZ.

<container_name>/<input|output>/<org_id>/<platform>/<account_id>/<timestamp>/{partition files}

A resulting path looks like the example below.

<destination-container>/input/org_12345/azure/<billing_account_id>/20260722T120000Z/...

Each upload is enriched on demand when you signal it is complete; see Partner trigger.

Data and format notes

Export all columns and keep the full default set. The complete set gives you the most context for later analysis.

The actual, amortized, and FOCUS datasets are all supported.

If you will be using Greenpixie's cloud usage report enrichment service, Parquet with zstd compression is preferred (Azure's Parquet uses Snappy, which also works, as does CSV with gzip), and no single file should exceed 500 MB. Azure file partitioning is always on and splits large deliveries into smaller files automatically, though the partition size is not a documented 500 MB cap.

Good to know

  • Each run delivers partitioned files plus a manifest.json describing the parts.
  • Once a run starts, data is available within around 4 hours, and a run can take up to 24 hours to complete.
  • History beyond the portal's 13 months is available through the Exports REST API, which covers up to 7 years, if you need a longer baseline.

Check it worked

You should have:

  • The export showing as enabled with successful daily runs in run history.
  • Partitioned files and a manifest landing in the agreed container path.
  • Historical months exported back to your chosen baseline.
  • Parquet files, with zstd preferred, and no single file larger than 500 MB.

To remove the export later, disable or delete it on the Exports page. Nothing else depends on it.

Next steps

Once your export is running, you can enrich it with energy, carbon and water metrics in two ways.

On this page