FOCUS ist das offene Spaltenschema für Abrechnungsdaten, das AWS, Azure und Google Cloud heute jeweils als eigenen Export liefern, damit FinOps-Teams drei Anbieter mit einer Abfrage lesen können; ausgeschrieben heißt es FinOps Open Cost and Usage Specification. Für die Rechnung zählt es, weil die Kostenspalten von FOCUS festlegen, welche Zahl die Rechnung ist, welche der Listenpreis war und welche die amortisierte Sicht zeigt, und weil jeder Anbieter diese Spalten anders befüllt.
So funktioniert es
FOCUS ist eine offene Spezifikationsinitiative der Linux Foundation mit Unterstützung der FinOps Foundation und eine Series der Joint Development Foundation Projects, LLC; der Text steht unter CC BY 4.0. Die aktuelle Veröffentlichung ist Version 1.4; das Steering Committee hat sie am 2026-06-04 ratifiziert. Die Spezifikation beschreibt vier Datensätze: Cost and Usage mit 65 Spalten, dazu Billing Period, Contract Commitment und Invoice Detail. Die Column Library auf der FOCUS-Website ordnet die Spalten in sechzehn Gruppen: Account, Allocation, Billing, Billing Period, Capacity Reservation, Charge, Charge Origination, Commitment Discount, Contract, Invoice, Location, Pricing, Resource, Service, SKU und Timeframe. Die drei Exporte unten folgen den Versionen 1.0 bis 1.2, und jeder Anbieter dokumentiert seine Konformitätslücken selbst.
Vier Spalten tragen das Geld. BilledCost ist, was der Rechnungssteller für den Posten im Abrechnungszeitraum in Rechnung stellt; ein Vorauskauf steht hier in voller Höhe, nicht verteilt. EffectiveCost ist die amortisierte Sicht: nach allen Rabatten und mit dem Anteil der Vorauszahlungen, der die Position abgedeckt hat. ListCost ist Listenpreis mal Preismenge, ohne jeden Rabatt. ContractedCost ist der vereinbarte Stückpreis mal Preismenge, mit verhandelten Rabatten, aber ohne Commitment-Rabatte. Die Differenzen zwischen diesen vier Werten sind die Rabattarten.
Die Dimensionen kommen aus den anderen Gruppen. ChargeCategory ordnet eine Zeile als Usage, Purchase, Tax, Credit oder Adjustment ein; ChargeClass markiert eine Korrektur eines früher berechneten Abrechnungszeitraums. ServiceName und ServiceCategory beschreiben den Dienst, ResourceId und ResourceType die Ressource, RegionId den Standort, SubAccountId das Konto, die Subscription oder das Projekt, Tags die Schlüssel-Wert-Paare als JSON-Objekt. BillingPeriodStart ist der Beginn des Abrechnungszeitraums, ChargePeriodStart der Beginn des Zeitraums, auf den die Zeile sich bezieht. Anbieterspezifische Spalten tragen das Präfix x_.
AWS
AWS liefert über Data Exports die Tabellen FOCUS 1.2 with AWS columns und FOCUS 1.0 with AWS columns. Die 1.2-Tabelle hat drei Zusatzspalten (x_Discounts, x_Operation, x_ServiceCode) und lässt die Zeitgranularität stündlich, täglich oder monatlich wählen; die 1.0-Tabelle hat fünf Zusatzspalten und keine Konfiguration. Die dokumentierten Lücken, darunter: ListUnitPrice, ContractedUnitPrice, PricingUnit, SkuId und SkuPriceId können für bestimmte Angebote leer sein, InvoiceIssuerName und PublisherName für bestimmte Positionen, und ConsumedQuantity enthält die berechnete Menge einschließlich Mindestmengen, nicht die tatsächlich genutzte. Wie sich die FOCUS-Tabelle zum CUR 2.0 verhält, steht in AWS Cost and Usage Report und Data Exports.
Azure
Azure Cost Management bietet in den Exporten den Datensatz Cost and usage details (FOCUS) in den Versionen 1.0, 1.0r2 und 1.2-preview, für EA- und MCA-Verträge, nicht für MOSP-Subscriptions und nicht auf Management-Group-Ebene. Die Datei enthält dieselben Daten wie die Actual- und die Amortized-Datei zusammen; x_AmortizationClass unterscheidet, ob eine Zeile vor oder nach Amortisation steht. Die Microsoft-Spalten reichen weit: x_BilledCostInUsd, x_BillingExchangeRate, x_ResourceGroupName, x_InvoiceSectionId, x_SkuMeterCategory. In 1.2-preview sind CapacityReservationId, CapacityReservationStatus, CommitmentDiscountQuantity, CommitmentDiscountStatus, CommitmentDiscountUnit und SkuPriceDetails als derzeit leer dokumentiert.
Google Cloud
Google Cloud schreibt den FOCUS-Export als Preview in eine Tabelle gcp_billing_export_focus_BILLING_ACCOUNT_ID in einem unveränderlichen Dataset; ihre Spalten sind auf die Felder des detaillierten Nutzungskostenexports abgebildet. SubAccountId ist die Projekt-ID, BilledCost und EffectiveCost sind cost plus credits.amount, ListCost ist cost_at_list, ContractedCost ist cost. Bei Googles neueren ausgabenbasierten Committed Use Discounts wird abgedeckte Nutzung bereits zum rabattierten Preis berechnet; für diese Nutzung enthält ContractedCost daher den Commitment-Rabatt, den die Spezifikation aus der Spalte heraushält. ChargeCategory kennt Usage, Tax und Adjustment, nicht Purchase und Credit. Die Spalte Tags wird nicht geliefert; Labels und Tags liegen in x_Labels, x_SystemLabels, x_ProjectLabels und x_Tags. Die Commitment-Discount-Spalten fehlen, Committed Use Discounts stehen in x_Credits; InvoiceId, ResourceType, ServiceCategory und ChargeFrequency sind als nicht geliefert dokumentiert. Die Einrichtung des detaillierten Exports beschreibt Google-Cloud-Abrechnungsexport für Kostenberichte einrichten.
Was es für Ihre Kosten bedeutet
Die Wahl der Kostenspalte ist die Wahl der Frage. BilledCost je Abrechnungszeitraum und Rechnungsnummer ist die Rechnung; nur diese Summe lässt sich mit Finance abstimmen. EffectiveCost ist die Zahl, mit der ein Team für seinen Verbrauch geradesteht, weil Reservierungen und Savings Plans auf die Nutzung verteilt sind, die sie abgedeckt haben; sie ergibt die effektiven Kosten eines Kostenberichts. ListCost minus EffectiveCost ist der Gesamtrabatt, ListCost minus ContractedCost der verhandelte Anteil davon. Eine Zuordnung nach Tags und SubAccountId ist nur so vollständig, wie der Anbieter diese Spalten füllt: bei Google Cloud muss sie aus den x_-Label-Spalten kommen, bei Azure und AWS aus Tags, jeweils mit den Schlüsseln, die der Anbieter übernimmt.
Wo es schiefgeht
- Jede Spalte wird bei jedem Anbieter als befüllt angenommen. Symptom: Summen nach
CommitmentDiscountIdoderInvoiceIdsind bei einem Anbieter null. Ursache: Die Konformitätslücken sind dokumentiert, aber nur in der Doku des jeweiligen Anbieters. - FOCUS- und native Exporte werden in einer Summe gemischt. Symptom: Ein Monat zählt doppelt oder die Kostensicht wechselt mitten in der Zeitreihe. Ursache: Der Azure-FOCUS-Export enthält Actual und Amortized zusammen, die AWS-FOCUS-Tabellen sind eigene Exporte neben dem CUR 2.0; beide Quellen beschreiben dieselben Kosten.
ListCostwird als gezahlter Betrag gelesen. Symptom: Die Auswertung liegt über der Rechnung. Ursache:ListCostist der Listenpreis ohne Rabatt; gezahlt wirdBilledCost.- Tag-Schlüssel sind je Anbieter anders normalisiert. Symptom: Dieselbe Kostenstelle erscheint dreimal. Ursache: AWS übernimmt aktivierte Cost Allocation Tags, Azure Ressourcen-Tags, Google Cloud liefert Labels in
x_-Spalten; Schreibweise und Präfixe unterscheiden sich. ChargeClasswird ignoriert. Symptom: Ein abgeschlossener Monat verändert sich im Nachhinein ohne erkennbaren Grund. Ursache: Korrekturzeilen beziehen sich auf einen früheren Abrechnungszeitraum und gehören in dessen Abgleich, nicht in den laufenden Monat.
Quellen
Gelesen am 2026-10-15. FOCUS specification, publication version 1.4, Über FOCUS, Introducing FOCUS 1.4, FOCUS column library, FOCUS 1.2 with AWS columns, FOCUS 1.2 with AWS columns conformance gaps, FOCUS 1.0 mit AWS-Spalten, FOCUS cost and usage details file schema, Create and manage Cost Management exports, Struktur des FOCUS-Exports, Struktur des Standard-Datenexports.