Skip to main content
Skip table of contents

Billing Data Upload Schema

This guide explains how Cloudaware expects billing data to be structured when it is ingested, how records are normalized into the FinOps module data model, and how they flow into downstream analytics.

End‑to‑end flow

At a high level, Cloudaware:

  1. Ingests provider exports and uploads

    • Reads raw billing exports from cloud providers (for example, AWS CUR/Data Exports, Azure EA/MCA, GCP Billing Export) and other billing systems.

    • Supports both scheduled pulls from cloud storage (S3, Blob, GCS, etc.) and API‑based ingestion, depending on the integration.

  2. Normalizes records into a unified schema

    • Maps provider‑specific columns to a common cost and usage schema.

    • Standardizes identifiers (account, subscription, project), services, usage types, and regions.

    • Derives multiple cost metrics (for example, list/on‑demand, effective, blended) where supported.

  3. Enriches with CMDB and allocation metadata

    • Joins records with CMDB objects (applications, owners, environments, customers).

    • Applies allocation and business mapping rules so costs can be attributed to business units, products, and teams.

  4. Publishes datasets to analytics

    • Exposes line‑item and aggregated cost tables to FinOps dashboards, exports, APIs, and the Advanced Analytics module.

Logical Record Structure

While the exact column names differ by provider, Cloudaware expects billing records to contain the following logical groups of fields:

  • Identity and scope

    • Billing account/payer, linked subscription or project.

    • Cloud account identifiers (for example, AWS account ID, Azure subscription ID, GCP project ID).

    • Tenant or organization identifiers used in your Cloudaware tenant.

  • Service and usage

    • Cloud service family and product (for example, EC2, Azure Virtual Machines, BigQuery).

    • Usage type or meter (instance type, storage class, API call, etc.).

    • Region, zone, and other locality attributes.

  • Time

    • Usage start and end timestamps.

    • Billing or invoice period (day, month).

  • Cost metrics

    • Original list or on‑demand cost.

    • Effective or amortized cost (after discounts, commitments, credits).

    • Quantity and unit of measure.

    • Currency and exchange‑rate context where applicable.

  • Discounts and commitments

    • Reservation or commitment identifiers (RIs, SPs, CUDs, etc.).

    • Allocation of discounts or savings across usage lines.

  • Tags and labels

    • Provider tags (AWS, Azure), labels (GCP), or equivalent metadata.

    • Any additional classification keys used for allocation or reporting.

Cloudaware uses this information to construct consistent line‑item and aggregated datasets regardless of the original provider format.

For more details on standard billing tables configurations in provider systems, see also:

Normalization and Mapping

During ingestion, Cloudaware applies a series of transformations:

  • Field mapping

    • Each provider’s native fields are mapped to the unified cost schema.

    • Provider‑specific nuances (for example, how discounts are represented) are normalized so that analytics can compare costs across clouds.

  • Dimensional standardization

    • Regions, services, and usage types are mapped to canonical names and categories.

    • Account, subscription, and project identifiers are linked to CMDB objects and organizational structures.

  • Cost derivations

    • Effective, blended, or amortized costs are calculated where supported, using provider exports and commitment data.

    • Additional metrics (for example, unit cost per day, per account, per tag) are pre‑computed for reporting and optimization.

These steps ensure that FinOps and Advanced Analytics can use the same coherent dimensional model when querying costs.

Here is the table showing cross-cloud billing export field type mapping (AWS, Azure, Google Cloud):

Field type

AWS example

Azure example

Google Cloud example

Identity

line_item_usage_account_id

SubscriptionId

billing_account_id

Bill

bill_invoice_id

BillingPeriodStartDate

invoice.month

Line Item

line_item_unblended_cost

CostInBillingCurrency

cost

Product

product_servicecode

MeterCategory

service.description

Pricing

pricing_public_on_demand_rate

EffectivePrice

price.effective_price

Reservation / Savings Plans

reservation_reservation_a_r_n

BenefitId

subscription.instance_id

Resource Tags

resource_tags_user_environment

CostCenter

labels.key

Split / Allocation

split_line_item_parent_resource_id

CostAllocationRuleName

cost_at_list

Relationship to Advanced Analytics

Normalized billing data is one of the primary input streams into the Advanced Analytics module:

  • Cost line‑items and aggregates become metrics and facts that can be combined with operational, CMDB, and telemetry data.

  • Business mappings and tags become attributes used for segmentation (for example, by BU, product, environment, customer).

  • Time‑series cost metrics feed dashboards, KPI calculations, and advanced analyses where applicable.

Because the same underlying schema is used, you can join cost data with other datasets in Advanced Analytics without custom one‑off transformations.

Best Practices for Uploads and Exports

When configuring billing exports and uploads for use with Cloudaware:

  • Prefer standard, provider‑recommended export formats (for example, AWS CUR/Data Exports, Azure MCA/EA exports, GCP Billing Export).

  • Ensure exports include:

    • All in‑scope accounts, subscriptions, and projects.

    • Sufficient granularity (typically daily or hourly) for your reporting needs.

    • Full sets of cost, discount, and tax fields where applicable.

  • Enable and maintain consistent tagging or labeling on resources that will drive allocation and showback.

  • Avoid manual edits to provider billing files before Cloudaware ingestion. Apply any custom adjustments as separate datasets or via integrations where possible.

JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.