FOCUS 1.2: Ako zjednotiť fakturáciu z AWS, Azure a GCP do jedného datasetu v roku 2026
FOCUS 1.2 normalizuje fakturačné dáta z AWS, Azure a GCP do jednej schémy. V článku ukážem, ako povoliť exporty, akú DDL použiť v BigQuery či Snowflake, kde je rozdiel oproti CUR 2.0 a ktoré chyby ma pri nasadzovaní najviac potrápili.
FOCUS 1.2 (FinOps Open Cost and Usage Specification) je otvorený štandard od FinOps Foundation, ktorý normalizuje fakturačné dáta z AWS, Azure, GCP, OCI a ďalších poskytovateľov do jedinej schémy s približne 50 povinnými stĺpcami, takže analytické dotazy naprieč cloudmi napíšete raz a nemusíte prepisovať SQL zakaždým, keď pridáte nový účet alebo poskytovateľa. Úprimne, v praxi je to jediné realistické riešenie, ako v roku 2026 udržať multi-cloudový cost dashboard bez armády integračných skriptov. V tomto článku ukážem, ako FOCUS 1.2 nasadzujem u zákazníkov s desiatkami účtov a stovkami subscription IDs, vrátane konkrétnych schém, exportov a SQL dotazov, ktoré mi fungujú od pondelka rána.
FOCUS 1.2 (vydaný v júni 2025, s revíziou 1.2-preview vo februári 2026) definuje 51 stĺpcov, ktoré majú jednotný význam naprieč AWS, Azure a GCP.
AWS Data Exports, Azure Cost Management exports a GCP BigQuery Billing Export všetky natívne podporujú FOCUS 1.0 alebo 1.1 od Q1 2026; verzia 1.2 je vo phase-in.
Kľúčové stĺpce sú BilledCost, EffectiveCost, ListCost, ContractedCost. Bez nich neoddelíte skutočnú fakturáciu od amortizovaných záväzkov.
Odporúčam ukladať FOCUS dáta do partitioned tabuľky v BigQuery, Snowflake alebo S3+Athena s partícionovaním podľa ChargePeriodStart.
Migrácia z natívnych schém (AWS CUR 2.0, Azure Amortized Actual Cost) zaberie 2 až 4 týždne; ušetríte 60 až 80 % SQL kódu oproti údržbe troch samostatných modelov.
FOCUS nenahrádza tagovanie: komplementárne pracuje s Tags stĺpcom, ktorý si stále musíte hygienizovať sami.
Čo je FOCUS špecifikácia a prečo ju v roku 2026 potrebujete
FOCUS (FinOps Open Cost and Usage Specification) je open-source špecifikácia dátovej schémy pre cloudovú fakturáciu, ktorú spravuje FinOps Foundation pod Linux Foundation. Definuje presné mená stĺpcov, dátové typy, jednotky a povolené hodnoty pre všetko, čo bežne potrebujete pri analýze cloudových nákladov, od BilledCost a ChargePeriodStart až po PricingCategory a CommitmentDiscountType.
Pred FOCUS-om vyzeral môj typický pondelok takto. Klient má tri AWS platobné účty, jednu Azure Enterprise agreement s dvadsiatimi subscription IDs a jeden GCP billing account. Každý má vlastnú schému, vlastné mená stĺpcov (lineItem/UnblendedCost vs Cost vs cost), rôzne časové zóny a rôzne definície toho, čo je „skutočná" cena verzus amortizovaná cena. Napísať dashboard, ktorý zobrazí „koľko sme minuli za výpočtový výkon minulý mesiac naprieč všetkými cloudmi", si vyžadovalo tri samostatné dbt modely a jedno CTE plné CASE príkazov. (Áno, bolo to presne také zábavné, ako to znie.)
S FOCUS-om vyzerá ten istý dotaz takto: SELECT SUM(BilledCost) FROM focus_billing WHERE ServiceCategory = 'Compute' AND ChargePeriodStart >= '2026-06-01'. Jeden riadok, tri poskytovatelia. Práve preto ho v roku 2026 nasadzujú aj banky s prísnou dátovou governance. Je to jediný spôsob, ako mať auditovateľný, konzistentný pohľad na výdavky bez toho, aby ste udržiavali paralelné modely pre každý cloud.
Čo prináša FOCUS 1.2 a čím sa líši od 1.0 a 1.1
FOCUS 1.0 vyšiel v júni 2024, verzia 1.1 v marci 2025 a verzia FOCUS 1.2 v júni 2025. Preview 1.2-r2 sa objavil vo februári 2026 a rieši reálne bolesti, ktoré sa vynorili u prvých producentov (AWS, Azure, GCP, OCI). V produkčných nasadeniach dnes odporúčam cieliť na 1.1 ako minimálnu líniu a 1.2 tam, kde poskytovateľ už exportuje aktualizovanú schému.
Kľúčové zmeny v 1.2
Kapacitné rezervácie: pribudli stĺpce CapacityReservationId a CapacityReservationStatus, ktoré odrážajú realitu, že spot a on-demand už dávno nie sú jediné dva režimy.
SKU rozšírenia:SkuMeter a SkuPriceDetails umožňujú granularnejšie pochopiť ceny bez toho, aby ste museli lookup-ovať samostatnú pricelist API.
SkuPriceId ako povinný stĺpec: konečne stabilný identifikátor cenovej položky naprieč cloudmi, ktorý sa dá joinovať s cenníkom.
Rozšírenie ChargeCategory: pribudla hodnota Credit a spresnenie hodnôt Adjustment, čím sa lepšie modelujú kredity, zľavy a korekcie.
Ak ste nasadili 1.0, prechod na 1.2 je čisto aditívny: žiadny existujúci stĺpec neustúpil, len pribudli nové. To znamená, že vaše existujúce dotazy nespadnú. Jednoducho dostanú viac stĺpcov na dohľad. Preto odporúčam v ELT vždy vyberať stĺpce menovite (nie SELECT *) a upgrady schémy plánovať ako aditívne migrácie s testom v staging warehouse pred produkciou.
Kľúčové stĺpce FOCUS, ktoré musíte poznať
Špecifikácia definuje 51 stĺpcov, ale v mojej praxi 90 % dotazov využíva tucet z nich. Toto je moja „cheat sheet", ktorú lepím do zdieľanej Google tabuľky pre každý nový klientský projekt.
Stĺpec
Typ
Význam
Kedy ho použiť
BilledCost
DECIMAL
Koľko poskytovateľ skutočne fakturuje za dané obdobie
Pre finančné reporty, chargeback a fakturačné odsúhlasenie
EffectiveCost
DECIMAL
Amortizovaná cena vrátane rozloženia záväzkov
Pre spravodlivú alokáciu tímom a unit economics
ListCost
DECIMAL
Cenníková cena bez zliav a záväzkov
Na výpočet úspor a ROI zo Savings Plans
ContractedCost
DECIMAL
Cena po zohľadnení negociovanej zľavy, ale pred záväzkami
Pre veľké kontrakty s EDP/MACC/CUD
ServiceCategory
STRING
Kategória služby (Compute, Storage, Networking...)
Group-by v dashboarde bez natívnych service ID
ChargePeriodStart/End
TIMESTAMP
Obdobie záznamu v UTC
Partícionovanie tabuľky a time-series analýza
Tags
JSON/MAP
Zdrojové tagy z pôvodného poskytovateľa
Alokácia nákladov na tímy a projekty
CommitmentDiscountId
STRING
Identifikátor Savings Plan/RI/CUD, ak sa uplatnil
Analýza pokrytia a utilizácie záväzkov
Najčastejšie nedorozumenie? BilledCostnie je „skutočná" cena vo finops zmysle. Je to to, čo vám poskytovateľ fakturuje v danom mesiaci. Čiže ak si kúpite ročný Savings Plan v januári, celá suma sa objaví v januárovom BilledCost a nasledujúce mesiace budú lacné. Pre férovú alokáciu tímom používajte EffectiveCost, ktorý záväzok rozloží po celé obdobie. Detaily rozdielov medzi záväzkami rozoberám v článku Savings Plans vs Reserved Instances vs CUD.
Ako povoliť FOCUS export v AWS
AWS podporuje FOCUS 1.0 od februára 2024 a FOCUS 1.0-preview + 1.1 GA cez službu AWS Data Exports (nástupca legacy CUR). Postup, ktorý používam na payer účte:
Prihláste sa do Billing and Cost Management na management/payer účte.
Otvorte Data Exports → Create export.
Zvoľte Standard data export a ako typ vyberte FOCUS 1.0.
Pomenujte export (napr. focus-org-daily-parquet), zvoľte S3 bucket a Parquet ako formát.
Nastavte frekvenciu na Daily a povoľte Include resource IDs.
Po prvom exporte (typicky do 24 hodín) sa v S3 bucketu objaví adresárová štruktúra focus-org-daily-parquet/data/BILLING_PERIOD=2026-07/. Odporúčam vytvoriť Glue Data Catalog crawler, ktorý schému automaticky zaeviduje. Potom ju viete queryovať z Athena bez toho, aby ste ručne písali CREATE EXTERNAL TABLE.
-- Athena: mesačné náklady podľa servisnej kategórie
SELECT
date_trunc('month', chargeperiodstart) AS month,
servicecategory,
SUM(billedcost) AS billed_usd,
SUM(effectivecost) AS amortized_usd
FROM focus_org_daily_parquet.data
WHERE chargeperiodstart >= DATE '2026-01-01'
GROUP BY 1, 2
ORDER BY 1 DESC, 3 DESC;
Ako povoliť FOCUS export v Azure
Azure Cost Management podporuje FOCUS od septembra 2024 cez novú generáciu Data Exports (nie legacy „Exports"). Postup pre Enterprise Agreement alebo Microsoft Customer Agreement:
V Azure portáli otvorte Cost Management → Exports na scope-e Billing account alebo Management group.
Kliknite Create → New export a zvoľte Cost and usage details (FOCUS).
Zvoľte verziu FOCUS 1.0r2 alebo 1.1 podľa toho, čo je v regióne GA.
Priraďte cieľový storage account, container a cestu. Odporúčam Parquet formát a schedule Daily.
Uistite sa, že service principal, ktorý si dáta bude vyzdvihovať, má Storage Blob Data Reader na cieľovom kontajneri.
Azure FOCUS export má jednu drobnú zvláštnosť. SubAccountId je Azure Subscription ID, ale BillingAccountId je Enterprise Agreement ID. Ak máte MCA-E, štruktúra je iná: BillingAccountId obsahuje MCA billing account ID a SubAccountId zostáva subscription. V dashboarde vždy zobrazujem oboje, aby FinOps tím vedel, o ktorý scope ide. Rovnakú disciplínu odporúčam u AWS payer účtov: v pivote nikdy neschovávajte payer ID, aj keby vám kazil vizuálnu čistotu.
Ako povoliť FOCUS export v GCP
GCP išiel inou cestou. Namiesto vlastného exportu ponúka FOCUS view na BigQuery Billing Export. Znamená to, že najprv musíte mať povolený štandardný Billing Export do BigQuery, a potom si zapnete FOCUS view, ktorý predstavuje ten istý dataset len v FOCUS schéme.
V GCP konzole otvorte Billing → Billing export.
Povoľte Detailed usage cost export do BigQuery dataset-u (nie iba Standard).
Počkajte 24 až 48 hodín, kým sa historické dáta doplnia (v novo pripojených billing accountoch to môže trvať týždeň).
V BigQuery UI si nájdite dataset a v ňom view gcp_billing_export_focus_v1_*.
Ak view nevidíte, spustite BigQuery Studio a manuálne aktivujte FOCUS view cez Cost Management → FOCUS integration.
Rozdiel voči AWS a Azure: v GCP platíte iba za BigQuery storage a query, nie za samotný export. Pre 500 GB mesačných billing dát to je približne $10 storage a query cost sa účtuje per-scan (BQ on-demand alebo slots).
-- BigQuery: top 20 služieb podľa amortizovaných nákladov
SELECT
ServiceName,
ROUND(SUM(EffectiveCost), 2) AS amortized_usd,
ROUND(SUM(BilledCost), 2) AS billed_usd
FROM `my-project.billing.gcp_billing_export_focus_v1_XXXXXX_XXXXXX_XXXXXX`
WHERE ChargePeriodStart BETWEEN TIMESTAMP('2026-06-01') AND TIMESTAMP('2026-07-01')
GROUP BY ServiceName
ORDER BY amortized_usd DESC
LIMIT 20;
Zjednotená schéma a SQL vzory pre BigQuery, Snowflake a Athenu
Keď máte tri FOCUS exporty (AWS S3+Athena, Azure Blob, GCP BigQuery), nechcete v dashboardoch federated queryovať tri systémy. Odporúčam jeden centrálny warehouse, do ktorého všetko konsolidujem. Moje typické setup-y:
Voľba warehouse
BigQuery: ak už máte GCP billing export, pridajte AWS a Azure ako external tables cez BigQuery Omni alebo Data Transfer Service.
Snowflake: ak máte multi-cloud dátový sklad, načítajte Parquet z každého poskytovateľa cez external stages. Snowflake má natívnu FOCUS demo templátu v Marketplace.
Athena + Iceberg: najlacnejšia možnosť pre AWS-heavy firmy. Kombinujem AWS FOCUS export priamo v S3 s Iceberg tabuľkami pre Azure a GCP dáta (denne kopírované cez S3 replication a Storage Transfer Service).
Tento tvar pretečie do všetkých downstream nástrojov, od Looker Studio cez Metabase až po tie nechutne veľké Google Sheets pivot tabuľky, ktoré mi finops tímy stále posielajú na revíziu. A áno, priznávam sa, milujem ich.
FOCUS vs AWS CUR 2.0: čo si vybrať
Toto je otázka, ktorú dostávam týždenne. Krátka odpoveď: pre analytické dashboardy a multi-cloud reporting používajte FOCUS. Pre hlbokú AWS-only optimalizáciu (napr. RI utilization, Savings Plan rekomendácie na úrovni line-item) si nechajte CUR 2.0. Aspoň v roku 2026 ich stále nasadzujem paralelne.
Dimenzia
FOCUS 1.2
AWS CUR 2.0
Rozsah
Multi-cloud (AWS, Azure, GCP, OCI)
Iba AWS
Počet stĺpcov
51 (štandardizovaných)
200+ (AWS-špecifických)
Amortizácia záväzkov
Natívne v EffectiveCost
Áno, ale cez viacero stĺpcov
Line-item granularita
Nižšia, agregácia na SKU
Najvyššia, každá hodina, každá inštancia
Rezervácie a Savings Plans
Základné pokrytie
Kompletný discount detail
Cena exportu
~$0.10/GB Parquet
~$0.10/GB Parquet
Vhodné pre
CFO dashboard, chargeback, unit economics
Engineering deep-dive, RI planning
V praxi mám u väčšiny klientov obidva exporty aktivované do rovnakého S3 bucketu: FOCUS pre exekutívne reporty a CUR 2.0 pre optimalizačný tím. Ročné náklady na duplikátny export sú $600 až $1500, čo je zanedbateľné oproti hodnote unifikovaného multi-cloud pohľadu.
Časté chyby pri nasadzovaní FOCUS
Za posledný rok som spravila vlastných chýb dosť na to, aby som ich mohla pokojne pomenovať. Toto je top päť, ktoré vidím u tímov, čo práve začínajú.
1. Miešanie BilledCost a EffectiveCost v tom istom dotaze
Klasika. Niekto sumarizuje BilledCost pre mesačný total a potom v tej istej pivot tabuľke rozdelí EffectiveCost podľa tímu. Súčty sa nezhodujú, CFO stráca dôveru. Buď použite BilledCost všade, alebo EffectiveCost všade, a v dashboarde jasne označte, ktorý používate.
2. Ignorovanie ChargeCategory = 'Adjustment'
Kredity, refundácie a support fee sú Adjustment alebo (od 1.2) Credit. Ak filtrujete iba ChargeCategory = 'Usage', minie vám ~5 až 15 % nákladov. V mesiacoch s veľkými migračnými kreditmi to viem dostať na 40 %.
3. Predpoklad, že tagy sú upratané
FOCUS nič nespraví s tým, že vaše Environment tagy majú štyri hodnoty: prod, Prod, PROD a production. Normalizácia tagov je stále na vás. Zvyčajne to riešim cez dbt macro, ktoré aplikuje mapovaciu tabuľku v ELT vrstve.
4. Nesprávne partícionovanie
Videla som setupy s jedinou nenapartícionovanou Snowflake tabuľkou pre 200 GB mesačných dát. Každý dashboard query trvá 30 sekúnd a stojí $5. Vždy partition-ujte na ChargePeriodStart (denne pre BigQuery, mesačne pre Snowflake s clustering key-om).
5. Nekontrolovanie verzie schémy
FOCUS 1.0 a 1.2 majú rôzne povinné stĺpce. Ak sa poskytovateľ (typicky Azure) v nedeľu ráno automaticky prepne z 1.0 na 1.1, vaše ELT môže spadnúť. Do každej pipeline si dajte assertion, že očakávané stĺpce existujú, a alertujte pri odchýlke. (Presne toto ma raz zobudilo o piatej ráno v pondelok, takže verte mi.)
Často kladené otázky
Je FOCUS špecifikácia zadarmo?
Áno. FOCUS je otvorený štandard pod Linux Foundation, s licenciou Community Specification License 1.0. Špecifikáciu a všetky nástroje si viete stiahnuť z focus.finops.org. Platíte iba za export a úložisko u svojho cloud poskytovateľa (typicky $0.10/GB v Parquet).
Aký je rozdiel medzi FOCUS a AWS CUR 2.0?
CUR 2.0 je AWS-only formát s ~200 stĺpcami zameraný na hlbokú optimalizáciu AWS. FOCUS je multi-cloud štandard s 51 normalizovanými stĺpcami: rovnaké mená a významy sa opakujú v AWS, Azure, GCP a OCI. Pre multi-cloud dashboard používajte FOCUS; pre AWS RI/SP planning použite CUR 2.0.
Ktoré cloudy podporujú FOCUS v roku 2026?
Natívne FOCUS export ponúkajú AWS, Microsoft Azure, Google Cloud (cez BigQuery view), Oracle Cloud Infrastructure a Alibaba Cloud. Ďalších 20+ poskytovateľov (napr. Snowflake, Datadog, MongoDB Atlas) publikuje FOCUS-kompatibilné výpisy cez tretie strany alebo cez FinOps Foundation adaptéry.
Ako sa FOCUS 1.2 líši od 1.0 verzie?
FOCUS 1.2 pridáva kapacitné rezervácie (CapacityReservationId), rozšírené SKU stĺpce (SkuMeter, SkuPriceDetails) a povinný SkuPriceId. Zmeny sú aditívne, všetky existujúce dotazy z 1.0 fungujú aj na 1.2, len pribúdajú nové stĺpce.
Koľko dát vyprodukuje FOCUS export mesačne?
Rádovo: malý AWS účet (~$5k/mesiac) vyprodukuje 100 až 500 MB Parquet dát. Enterprise scope s $500k+ mesačných výdavkov a granulárnymi resource ID sa dostane na 20 až 100 GB Parquet. Rátam s 0.02 až 0.10 % obratu ako dátový objem, s obrovskou variabilitou podľa detailu tagov a počtu zdrojov.
Showback ukazuje cloud náklady tímom, chargeback ich reálne fakturuje. Porovnanie modelov, alokácia zdieľaných nákladov a implementácia v AWS, Azure a GCP.
Graviton4 prináša až o 40 % nižšie ceny a o 30 % vyšší výkon ako porovnateľné x86 inštancie. Tento praktický playbook ukazuje krok za krokom, ako migrovať EC2, ECS, EKS, Lambda aj RDS workloady na ARM64 a kombinovať úspory so Savings Plans v roku 2026.