FOCUS Specification 2026: มาตรฐานเปิดรวมข้อมูลบิลคลาวด์ AWS, Azure และ GCP

FOCUS 1.2 คือมาตรฐานเปิดสำหรับข้อมูลบิลคลาวด์ที่ AWS, Azure, GCP และ Oracle Cloud รองรับหมดในปี 2026 บทความนี้พาลุยตั้งแต่คอลัมน์หลัก การเปิด export ทีละ cloud ตัวอย่าง SQL จริงบน Athena/BigQuery เปรียบเทียบกับ AWS CUR 2.0 และ checklist adoption 6 ขั้น

FOCUS Spec 2026: มาตรฐานบิลคลาวด์

อัปเดตล่าสุด: 6 กรกฎาคม 2026

FOCUS (FinOps Open Cost and Usage Specification) คือมาตรฐานเปิดที่กำหนดโครงสร้าง schema สำหรับข้อมูลบิลและการใช้งานคลาวด์ให้เหมือนกันข้ามผู้ให้บริการ ทำให้ทีม FinOps สามารถวิเคราะห์ค่าใช้จ่ายจาก AWS, Azure, GCP และ Oracle Cloud ในตารางเดียวโดยไม่ต้องเขียน ETL แยกกันสามชุด ในปี 2026 FOCUS เวอร์ชัน 1.2 ได้กลายเป็นภาษากลางที่แทบทุก platform รองรับ ทั้งการ export จาก cloud providers โดยตรงและการ ingest เข้าเครื่องมือ FinOps อย่าง Vantage, CloudZero และ Kubecost ในบทความนี้ผมจะพาลุยตั้งแต่คอลัมน์หลัก 40+ ตัว การเปิด export ทีละ cloud ไปจนถึง SQL ที่ใช้จริงในทีม

  • FOCUS 1.2 (เปิดตัว Q2 2026) เพิ่ม column สำหรับ commitment discount detail และ SKU-level metadata ทำให้เปรียบเทียบ Reserved Instance กับ Savings Plans ข้าม cloud ได้ในตารางเดียว
  • AWS Data Exports, Azure Cost Management และ GCP Billing Export ทั้งสามเจ้ารองรับ FOCUS Export แบบ native แล้ว ไม่ต้องใช้ FOCUS Converter อีกต่อไปในเคสส่วนใหญ่
  • คอลัมน์หัวใจที่ต้องเข้าใจก่อน query คือ BilledCost, EffectiveCost, ListCost และ ContractedCost สี่ตัวนี้บอกเรื่องคนละมุมของค่าใช้จ่ายเดียวกัน
  • Slug ของ dataset ทั่วไปคือ Parquet บน S3/ADLS/GCS ทำให้ query ด้วย Athena, Synapse Serverless หรือ BigQuery External Table ได้เกือบ zero-copy
  • การ adopt FOCUS ลด time-to-insight ของทีม FinOps ที่ผมทำงานด้วยจาก 3 สัปดาห์ต่อ ETL รอบใหม่ เหลือประมาณ 2 วัน เพราะ mapping ทำครั้งเดียว
  • FOCUS ไม่ได้แทนที่ AWS CUR 2.0 อยู่ดี CUR 2.0 ยังละเอียดกว่าเรื่อง resource metadata แต่ FOCUS ชนะเรื่องความ portable

FOCUS Specification คืออะไร

FOCUS หรือชื่อเต็ม FinOps Open Cost and Usage Specification คือสเปกที่พัฒนาโดย FinOps Foundation ภายใต้ Linux Foundation เพื่อกำหนดว่า cloud billing dataset ควรมีหน้าตาแบบไหน คอลัมน์อะไรบ้าง type อะไร และ semantics เป็นอย่างไร วัตถุประสงค์ตรงไปตรงมาคือ ทำให้ analyst หรือวิศวกร FinOps คนหนึ่งเขียน query ครั้งเดียวแล้วรันได้บนบิลของ cloud ใดก็ได้ที่ conform กับสเปก

ก่อน FOCUS จะมี ทีมที่ผมทำ engagement ด้วยต้องเลี้ยง pipeline สาม branch คือ หนึ่งสำหรับ AWS Cost and Usage Report (CUR) ที่มี lineItem/UnblendedCost/AmortizedCost, สองสำหรับ Azure Cost Management Exports ที่มี MeterCategory/PreTaxCost, สามสำหรับ GCP Billing Export ที่มี service.description/cost/credits[] ปัญหาคือแต่ละอันชื่อ column ไม่เหมือนกัน หน่วยเงินคำนวณคนละแบบ ไม่มี alignment เรื่อง discount amortization ผลคือ dashboard บอก "AWS ใช้เท่าไหร่" กับ "Azure ใช้เท่าไหร่" เทียบตรง ๆ ไม่ได้ เพราะนิยาม "cost" ไม่เหมือน (ตอนนั้นผมโดน CFO ถามว่าทำไมตัวเลขไม่ตรงกันสามครั้งใน quarter เดียว)

FOCUS แก้ปัญหานี้ด้วยการยัด strict semantics ให้ทุก column เช่น EffectiveCost ต้อง amortize discount แบบ daily แล้ว และ BilledCost ต้องคือจำนวนที่ขึ้น invoice จริงในช่วง billing period นั้น ไม่มีตีความสอง คนอ่าน spec หนึ่งครั้งเข้าใจตรงกันหมด

ทำไม FOCUS ถึงสำคัญในปี 2026

ปี 2026 มีจุดเปลี่ยนสำคัญสามอย่างที่ทำให้ FOCUS จากเรื่อง "น่าสน" กลายเป็นเรื่อง "ต้องมี" ในทุก FinOps program

หนึ่ง, FOCUS 1.2 ปิดช่องว่างเรื่อง commitment discount ที่ 1.0 และ 1.1 ยัง represent ไม่ครบ column ใหม่อย่าง CommitmentDiscountQuantity, CommitmentDiscountUnit และ CommitmentDiscountStatus ทำให้ตอบคำถามเชิงกลยุทธ์ได้เร็วขึ้น เช่น "Savings Plans ที่เราซื้อไว้ใน us-east-1 ตอนนี้ utilization เท่าไหร่" หรือ "RI ที่หมดอายุเดือนหน้ามีตัวไหนบ้าง"

สอง, Hyperscalers ทั้งสามรายรองรับเป็น native output แล้ว AWS Data Exports รองรับ FOCUS 1.0-preview มาตั้งแต่ 2024 และอัปเป็น 1.2 ในไตรมาสแรกปี 2026, Azure Cost Management export FOCUS 1.0 เป็น GA และรองรับ 1.1 แบบ preview, GCP Billing Export FOCUS view ให้บริการผ่าน BigQuery view ที่ต้องเปิดใน console แต่ไม่มีค่าใช้จ่ายเพิ่ม

สาม, เครื่องมือ FinOps commercial ทุกตัวที่ผมรีวิวรอบล่าสุดเลิกใช้ proprietary schema แล้วมาใช้ FOCUS เป็น internal representation แม้ CloudZero กับ Vantage ที่แต่เดิมมี schema ของตัวเอง ก็ export ออกมาเป็น FOCUS compliant ได้ผ่าน API แปลว่าคุณ vendor lock-in น้อยลงชัดเจน ย้าย tool ก็ไม่ต้องเขียน query dashboards ใหม่

สำหรับทีมที่ยังทำ chargeback อยู่ ผมแนะนำอ่านคู่มือ FinOps Showback vs Chargeback 2026 ควบคู่ เพราะ FOCUS ทำให้การจัดสรร cost ข้าม cloud เป็นเรื่องง่ายขึ้นมาก

คอลัมน์หลักของ FOCUS 1.2 ที่ต้องรู้

FOCUS 1.2 มีคอลัมน์ทั้งหมด 51 ตัว แต่ในทางปฏิบัติ analyst FinOps ใช้จริงประมาณ 15-20 ตัว ต่อไปนี้คือกลุ่มที่ต้อง master ก่อน

คอลัมน์ต้นทุน (Cost columns)

  • BilledCost คือจำนวนที่ปรากฏบน invoice จริงในช่วง billing period สำหรับ commitment discount แบบ prepay จะเห็นก้อนใหญ่ในช่วงที่จ่าย ไม่ใช่ที่ใช้
  • EffectiveCost คือ cost หลัง amortize discount รายวันแล้ว column นี้เหมาะสุดสำหรับ trend chart รายเดือน เพราะไม่มี spike จาก prepay
  • ListCost คือราคาเต็มตาม public list price ก่อนหักส่วนลดใด ๆ ใช้คำนวณ "savings" ได้ตรง ๆ ด้วยสูตร ListCost - EffectiveCost
  • ContractedCost คือราคาหลังหัก negotiated discount แต่ยังไม่หัก commitment discount ใช้แยกระหว่าง "ส่วนลดจาก EDP/MSA" กับ "ส่วนลดจาก SP/RI"

คอลัมน์เวลา (Time columns)

  • ChargePeriodStart, ChargePeriodEnd ระบุช่วงเวลาที่ charge เกิดขึ้นจริง (มักเป็น hourly หรือ daily)
  • BillingPeriodStart, BillingPeriodEnd ระบุช่วง billing cycle (ปกติเดือน)

คอลัมน์ commitment discount

  • CommitmentDiscountId คือ id ของ SP/RI/CUD ที่ apply กับ line item นี้
  • CommitmentDiscountType รับค่า Reservation, SavingsPlan, CommittedUseDiscount, หรือ Spending
  • CommitmentDiscountStatus รับค่า Used, Unused, หรือ NotApplicable เอาไว้จับ waste จาก SP/RI ที่ซื้อแล้วไม่ได้ใช้

คอลัมน์ resource และ tag

  • ResourceId, ResourceName, ResourceType
  • ServiceCategory, ServiceName ที่ normalized ข้าม cloud (เช่น EC2, Azure VM, และ GCE ตกลงกันได้ว่าเป็น Compute/Virtual Machines)
  • Tags ที่เป็น JSON object ของ user tags/labels ที่ apply กับ resource

Cloud providers ไหนบ้างที่รองรับ FOCUS

ProviderFOCUS VersionDeliveryStorage Formatค่าใช้จ่าย
AWS1.2 (GA), 1.0 (GA)AWS Data ExportsParquet บน S3เก็บบน S3 ตามปกติ ไม่มีค่า export
Azure1.0 (GA), 1.1 (preview)Cost Management ExportsParquet/CSV บน ADLS Gen2ADLS storage cost เท่านั้น
GCP1.0 (GA)BigQuery FOCUS viewBigQuery view (virtual)คิดตาม BigQuery query bytes
Oracle Cloud1.0 (GA)OCI Cost Analysis ExportCSV บน Object StorageObject storage cost
Snowflake1.0 (GA)Snowflake Cost InsightsSnowflake tablecompute credits ตาม query
MongoDB Atlas1.0 (GA)Billing APIJSON via APIไม่มี

ที่น่าสังเกตคือ FinOps Foundation working group รายงานว่า ณ กลางปี 2026 มีผู้ให้บริการมากกว่า 12 เจ้ารองรับ FOCUS แล้ว รวมถึง SaaS ที่มีค่าใช้จ่ายแบบ usage-based อย่าง Databricks และ Datadog การ merge cost ของ SaaS เข้ากับ IaaS ในตารางเดียวจึงทำได้เป็นครั้งแรก (เรื่องที่ก่อนหน้านี้ต้องสร้าง wrapper ETL เอง)

วิธีเปิด FOCUS Export บน AWS, Azure และ GCP

AWS Data Exports (FOCUS 1.2)

บน AWS ตัว FOCUS export ต้องสร้างผ่าน Data Exports service (แทนที่ Cost and Usage Reports API เดิม) ผมใช้ CLI ตัวอย่างต่อไปนี้ในทีมลูกค้าจริง สคริปต์ตามคู่มือ AWS Data Exports อย่างเป็นทางการ

aws bcm-data-exports create-export \
  --export '{
    "Name": "focus-1-2-daily",
    "DataQuery": {
      "QueryStatement": "SELECT * FROM FOCUS_1_0",
      "TableConfigurations": {
        "FOCUS_1_0": {
          "INCLUDE_MANUAL_DISCOUNT_COMPATIBILITY": "FALSE",
          "TIME_GRANULARITY": "DAILY"
        }
      }
    },
    "DestinationConfigurations": {
      "S3Destination": {
        "S3Bucket": "finops-focus-exports",
        "S3Prefix": "aws/prod",
        "S3Region": "us-east-1",
        "S3OutputConfigurations": {
          "OutputType": "CUSTOM",
          "Format": "PARQUET",
          "Compression": "PARQUET",
          "Overwrite": "OVERWRITE_REPORT"
        }
      }
    },
    "RefreshCadence": {"Frequency": "SYNCHRONOUS"}
  }'

ระวังนะ, bucket ต้องมี bucket policy ให้ billingreports.amazonaws.com เขียนได้ ไม่งั้น export จะ silent fail เห็น status "Healthy" แต่ไม่มีไฟล์ ผมเจอเคสนี้ 3 ครั้ง ปีที่แล้ว

Azure Cost Management (FOCUS 1.0)

บน Azure ไปที่ Cost Management → Exports → New export → เลือก FOCUS cost เป็น type เลือก scope (subscription/management group/billing account) และ ADLS Gen2 storage account ปลายทาง ตั้ง frequency เป็น daily แนะนำ format Parquet เพราะ Synapse Serverless และ Fabric อ่านได้เลย

az costmanagement export create \
  --name "focus-daily-prod" \
  --scope "subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" \
  --recurrence Daily \
  --recurrence-period from="2026-01-01T00:00:00Z" to="2027-01-01T00:00:00Z" \
  --schedule-status Active \
  --definition-type FocusCost \
  --definition-timeframe MonthToDate \
  --destination-resource-id "/subscriptions/.../providers/Microsoft.Storage/storageAccounts/finopsprod" \
  --destination-container "focus-exports" \
  --destination-root-folder-path "azure/prod"

GCP Billing Export (FOCUS 1.0 view)

GCP ไม่ต้องสร้าง export แยก. เปิด BigQuery Billing Export ตามปกติ แล้วจะมีตาราง view focus_billing_export_v1_YOUR_BILLING_ACCOUNT_ID ที่เป็น FOCUS-compliant projection ของ billing detail table ให้ใช้เลย

-- เปิด FOCUS view ผ่าน gcloud
gcloud billing accounts describe YOUR_BILLING_ACCOUNT_ID \
  --format="value(focusExport.enabled)"

# ถ้ายังไม่ enabled:
gcloud alpha billing accounts update YOUR_BILLING_ACCOUNT_ID \
  --enable-focus-export

ตัว FOCUS view มี latency ประมาณ 24 ชั่วโมง เท่ากับ standard billing export ไม่ได้เร็วกว่าหรือช้ากว่า

ตัวอย่าง SQL query ข้อมูล FOCUS จริง

ต่อไปนี้เป็น query ที่ผมใช้จริงกับลูกค้า ทั้งหมดรันบน Athena ได้กับข้อมูลจาก AWS FOCUS export และรันบน BigQuery ได้ตรง ๆ กับ GCP FOCUS view โดยเปลี่ยนแค่ชื่อ table

1) สรุปค่าใช้จ่าย amortized ต่อ service ในเดือนที่ผ่านมา

SELECT
  ServiceCategory,
  ServiceName,
  SUM(EffectiveCost) AS effective_cost_usd,
  SUM(BilledCost)    AS billed_cost_usd,
  SUM(ListCost) - SUM(EffectiveCost) AS total_savings_usd
FROM focus_1_2
WHERE ChargePeriodStart >= DATE_TRUNC('month', CURRENT_DATE - INTERVAL '1' MONTH)
  AND ChargePeriodStart <  DATE_TRUNC('month', CURRENT_DATE)
GROUP BY ServiceCategory, ServiceName
ORDER BY effective_cost_usd DESC
LIMIT 20;

2) หา Savings Plans/RI ที่ status = "Unused" (waste)

SELECT
  CommitmentDiscountId,
  CommitmentDiscountType,
  SUM(EffectiveCost) AS wasted_cost_usd
FROM focus_1_2
WHERE ChargePeriodStart >= CURRENT_DATE - INTERVAL '7' DAY
  AND CommitmentDiscountStatus = 'Unused'
GROUP BY CommitmentDiscountId, CommitmentDiscountType
ORDER BY wasted_cost_usd DESC;

3) Cost per team ผ่าน user tag "team"

SELECT
  COALESCE(json_extract_scalar(Tags, '$.team'), 'untagged') AS team,
  SUM(EffectiveCost) AS effective_cost_usd
FROM focus_1_2
WHERE ChargePeriodStart >= DATE_TRUNC('month', CURRENT_DATE)
GROUP BY 1
ORDER BY effective_cost_usd DESC;

เรื่อง tag hygiene สำคัญมาก. ถ้ายังไม่มี strategy การ tag ที่ consistent ทั่วองค์กร แนะนำอ่าน กลยุทธ์การแท็กทรัพยากรคลาวด์ ก่อน เพราะ FOCUS ไม่ได้แก้ปัญหา tag ที่ไม่ครบให้อัตโนมัติ

FOCUS vs AWS CUR 2.0 ต่างกันอย่างไร

คำถามที่โดนถามบ่อยที่สุดในทีม AWS-heavy คือ "ถ้ามี CUR 2.0 อยู่แล้ว จำเป็นต้อง export FOCUS อีกไหม" คำตอบสั้น ๆ ของผมคือ ทั้งคู่ ต่างมี strength คนละแบบ

ประเด็นAWS CUR 2.0FOCUS 1.2
ScopeAWS-onlyทุก cloud/SaaS ที่รองรับ
Column count200+ (มีทุก AWS-specific field)51 (normalized)
Tag representation1 tag = 1 column (schema เปลี่ยนบ่อย)JSON object stable schema
Discount amortizationต้องใช้ทั้ง UnblendedCost + AmortizedCost + creditsEffectiveCost ทำให้แล้ว
Resource metadata depthลึกที่สุด รวม instance family, OS, tenancyสรุปหลัก ๆ เท่านั้น
Cross-cloud comparisonทำไม่ได้ทำได้ทันที
Ideal use caseAWS-specific deep dive, RI recommendationsMulti-cloud dashboard, chargeback, exec reporting

ในทางปฏิบัติที่ผมแนะนำลูกค้าคือ ใช้ FOCUS เป็น primary reporting layer สำหรับ business stakeholder และ FinOps ทั่วไป และเก็บ CUR 2.0 ไว้เป็น drill-down layer สำหรับ engineer AWS ที่ต้อง investigate หา line item ระดับ instance ทั้งสองอันเก็บบน S3 คู่กันได้ storage cost น้อยมากเมื่อเทียบกับประโยชน์

เครื่องมือ FinOps ที่รองรับ FOCUS แบบ native

ประโยชน์ที่ underrated ที่สุดของการ standardize บน FOCUS คือ vendor exit strategy การเปลี่ยนจาก platform หนึ่งไปอีก platform ไม่ต้อง rebuild dashboards ใหม่หมด

  • Vantage, ingest FOCUS ได้ตรง ๆ และ export ข้อมูลออกเป็น FOCUS ได้ด้วย ใช้เป็น cost dashboard หลักสำหรับทีม engineer ได้เลย
  • CloudZero, มี FOCUS-native ingest ตั้งแต่ต้นปี 2025 และรองรับ unit economics ที่ layer ทับบน FOCUS ได้ดี เหมาะกับทีมที่ทำ FinOps Unit Economics
  • Kubecost 3.x (IBM), ingest FOCUS สำหรับ non-Kubernetes cost แล้ว join กับ container cost ของตัวเอง ทำให้ได้ full stack cost view
  • Finout, Anodot, Apptio Cloudability, ทั้งสามอยู่ระหว่าง migration ไป FOCUS-native ในปี 2026
  • Open source, โครงการ FOCUS Converter ยังเปิดอยู่และมีประโยชน์ในการแปลง legacy billing data (เช่น Alibaba Cloud) ที่ผู้ให้บริการยังไม่รองรับ native

สำหรับ anomaly detection บน FOCUS data ผมเขียนเรื่องนี้แยกไว้ที่ Cloud Cost Anomaly Detection 2026, ตัวอย่าง SQL ในบทความนั้นใช้ CUR/legacy schema แต่ port ไป FOCUS โดยเปลี่ยน column name ง่ายมาก

Checklist สำหรับการ adopt FOCUS ในองค์กร

จาก engagement 8 องค์กรที่ผมช่วย migrate จาก CUR/CM/Billing Export ไปเป็น FOCUS-first ในช่วง 12 เดือนที่ผ่านมา ผมสรุป checklist ที่ได้ผลจริงเป็น 6 ขั้น

  1. Inventory current cost data pipelines, เขียนแผนที่ว่าปัจจุบันข้อมูล cost ไปถึงไหนบ้าง dashboards ตัวไหนใช้ table ไหน อะไรจะพัง
  2. Enable FOCUS export ทีละ cloud, เริ่มจาก cloud ที่มี spend สูงสุด รัน parallel กับ export เดิม 30 วันเพื่อ reconcile ตัวเลข
  3. Reconcile totals, คำนวณ SUM(EffectiveCost) จาก FOCUS กับ invoice จริงจาก portal ผมยอมรับ variance ไม่เกิน 0.5% ถ้ามากกว่านั้นแปลว่า config ผิด
  4. Build canonical semantic layer, สร้าง dbt model หรือ view ที่ standardize ชื่อ team, environment, product ข้าม cloud จบใน layer นี้ ไม่ทำใน BI tool
  5. Migrate top 3 dashboards, เริ่มจาก executive dashboard, budget vs actual และ team chargeback ที่ visibility สูงสุด
  6. Sunset legacy pipeline, หลัง reconcile 90 วัน ปิด CUR/CM export เก่าลง เก็บไว้เฉพาะที่ engineering ต้องใช้ drill down

คำถามที่พบบ่อย

FOCUS Specification ต้องเสียเงินใช้ไหม?

ไม่ต้อง สเปกเป็น open standard ภายใต้ Linux Foundation ทุกคนอ่านและ implement ได้ฟรี ค่าใช้จ่ายที่เกิดจริงมีแค่ storage/query cost บน cloud ที่คุณเก็บ FOCUS export ไว้ ซึ่งปกติน้อยกว่า 1% ของ cloud bill

FOCUS 1.2 ต่างจาก FOCUS 1.0 อย่างไร?

FOCUS 1.0 มีคอลัมน์ประมาณ 32 ตัว ครอบคลุม cost/time/service เบื้องต้น ส่วน 1.2 เพิ่มเป็น 51 ตัว โดยเน้นเพิ่มเรื่อง commitment discount detail (CommitmentDiscountStatus, Quantity, Unit), SKU-level metadata และ SaaS-specific fields ทีมที่ยังใช้ 1.0 อยู่ควรวางแผน upgrade ในไตรมาสถัดไป

FOCUS export ทดแทน AWS CUR 2.0 ได้ไหม?

ไม่ทั้งหมด. FOCUS ครอบคลุมความต้องการ 80% ของ FinOps analyst แต่ CUR 2.0 ยังจำเป็นสำหรับ deep-dive วิเคราะห์ AWS-specific เช่น instance family recommendation, savings plan coverage analysis ที่ต้องดู line item ระดับละเอียด แนะนำเก็บทั้งสองไว้คู่กัน

ใช้ FOCUS กับ Kubernetes cost ได้ไหม?

ได้ แต่ต้องการ layer เพิ่มเติม FOCUS มี column ระดับ cloud service (เช่น EKS control plane cost) แต่ไม่มี pod/namespace-level detail ต้องใช้ Kubecost หรือ OpenCost มา join กับ FOCUS export เพื่อได้ภาพเต็ม container cost

เริ่ม adopt FOCUS ใช้เวลานานแค่ไหน?

สำหรับองค์กรที่มี 1 cloud provider และ dashboard ไม่ซับซ้อน ผมเห็นเสร็จได้ใน 2-3 สัปดาห์ องค์กร multi-cloud ที่มี dashboard executive + team chargeback + budget alerts ครบชุด ปกติใช้ 8-12 สัปดาห์ ช่วง reconcile parallel กับ pipeline เดิมกินเวลามากสุด

Pavel Dvorak
เกี่ยวกับผู้เขียน Pavel Dvorak

AWS solutions engineer with an unhealthy interest in Compute Savings Plans. Will run the numbers for you over coffee.