What a Schema Standard Actually Defines
A schema standard is a contract about structure. FOCUS does not tell cloud providers how to price their services — it tells them how to describe those charges in an export file. Think of it like a universal plug adapter: the underlying electricity (billing data) is the same, but the shape of the connector (column names, data types, value formats) is standardized so any device (tool) can plug in.
Normalizing the Key Columns
The FOCUS specification defines mandatory columns that every provider must populate. Here are the most important categories:
1. Identity — Who is being charged?
| Provider | Native Column | FOCUS Column |
|---|---|---|
| AWS | LinkedAccountId |
SubAccountId |
| Azure | SubscriptionId |
SubAccountId |
| GCP | project.id |
SubAccountId |
2. Location — Where did the resource run?
| Provider | Native Column | FOCUS Column |
|---|---|---|
| AWS | product/region (e.g., us-east-1) |
RegionId |
| Azure | ResourceLocation (e.g., East US) |
RegionId |
| GCP | location.region (e.g., us-east1) |
RegionId |
FOCUS also defines RegionName as a human-readable display name, separate from the machine-readable RegionId.
3. Service — What was used?
| Provider | Native Column | FOCUS Column |
|---|---|---|
| AWS | lineItem/ProductCode (e.g., AmazonEC2) |
ServiceName |
| Azure | ConsumedService (e.g., Microsoft.Compute) |
ServiceName |
| GCP | service.description (e.g., Compute Engine) |
ServiceName |
FOCUS also introduces ServiceCategory — a higher-level grouping with standardized values like Compute, Storage, Database, Networking, AI and Machine Learning. This lets you ask "how much did we spend on databases?" without knowing that AWS calls it AmazonRDS and Azure calls it Microsoft.Sql.
4. Time — When did the charge occur?
Every provider formats timestamps differently. FOCUS standardizes this with ChargePeriodStart and ChargePeriodEnd, both in ISO 8601 UTC format (2024-01-15T00:00:00Z).
5. Resource — What specific thing was charged?
FOCUS defines ResourceId (the provider's unique identifier for the resource, like an EC2 instance ARN or Azure resource ID) and ResourceName (the human-readable name or tag).
The Provider and Publisher Columns
FOCUS also adds two columns that seem redundant but are critical for multi-cloud and SaaS scenarios:
ProviderName: The company that sold you the service (e.g.,Amazon Web Services,Microsoft Azure,Google Cloud).PublisherName: The company that built the service. For first-party cloud services these are the same. But for AWS Marketplace purchases, theProviderNameisAmazon Web Serviceswhile thePublisherNamemight beDatadog, Inc.This distinction lets you track third-party SaaS spend that flows through cloud marketplaces.