อัปเดตล่าสุด: 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 ถึงสำคัญในปี 2026
คอลัมน์หลักของ FOCUS 1.2 ที่ต้องรู้
Cloud providers ไหนบ้างที่รองรับ FOCUS
วิธีเปิด FOCUS Export บน AWS, Azure และ GCP
ตัวอย่าง SQL query ข้อมูล FOCUS จริง
FOCUS vs AWS CUR 2.0 ต่างกันอย่างไร
เครื่องมือ FinOps ที่รองรับ FOCUS แบบ native
Checklist สำหรับการ adopt FOCUS ในองค์กร
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
หมายเหตุ: FOCUS 1.2 กำหนดชัดว่า Tags ต้องเป็น JSON object ไม่ใช่ string ที่ต้อง parse เอง ต่างจาก AWS CUR 2.0 ที่แตก tag เป็นคอลัมน์ dynamic (ตัวหนึ่ง tag ต่อหนึ่ง column) วิธี query ต่างกันมาก
Cloud providers ไหนบ้างที่รองรับ FOCUS
Provider FOCUS Version Delivery Storage Format ค่าใช้จ่าย
AWS 1.2 (GA), 1.0 (GA) AWS Data Exports Parquet บน S3 เก็บบน S3 ตามปกติ ไม่มีค่า export
Azure 1.0 (GA), 1.1 (preview) Cost Management Exports Parquet/CSV บน ADLS Gen2 ADLS storage cost เท่านั้น
GCP 1.0 (GA) BigQuery FOCUS view BigQuery view (virtual) คิดตาม BigQuery query bytes
Oracle Cloud 1.0 (GA) OCI Cost Analysis Export CSV บน Object Storage Object storage cost
Snowflake 1.0 (GA) Snowflake Cost Insights Snowflake table compute credits ตาม query
MongoDB Atlas 1.0 (GA) Billing API JSON 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 ที่ไม่ครบให้อัตโนมัติ
Tip: ใช้ EffectiveCost เป็น default สำหรับ dashboard trend และใช้ BilledCost สำหรับ Finance reconciliation กับ invoice จริง สองมุมนี้ต้องแยกกันชัด ๆ ไม่งั้น CFO จะสับสน
FOCUS vs AWS CUR 2.0 ต่างกันอย่างไร
คำถามที่โดนถามบ่อยที่สุดในทีม AWS-heavy คือ "ถ้ามี CUR 2.0 อยู่แล้ว จำเป็นต้อง export FOCUS อีกไหม" คำตอบสั้น ๆ ของผมคือ ทั้งคู่ ต่างมี strength คนละแบบ
ประเด็น AWS CUR 2.0 FOCUS 1.2
Scope AWS-only ทุก cloud/SaaS ที่รองรับ
Column count 200+ (มีทุก AWS-specific field) 51 (normalized)
Tag representation 1 tag = 1 column (schema เปลี่ยนบ่อย) JSON object stable schema
Discount amortization ต้องใช้ทั้ง UnblendedCost + AmortizedCost + credits EffectiveCost ทำให้แล้ว
Resource metadata depth ลึกที่สุด รวม instance family, OS, tenancy สรุปหลัก ๆ เท่านั้น
Cross-cloud comparison ทำไม่ได้ ทำได้ทันที
Ideal use case AWS-specific deep dive, RI recommendations Multi-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 น้อยมากเมื่อเทียบกับประโยชน์
ประโยชน์ที่ 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 ขั้น
Inventory current cost data pipelines , เขียนแผนที่ว่าปัจจุบันข้อมูล cost ไปถึงไหนบ้าง dashboards ตัวไหนใช้ table ไหน อะไรจะพัง
Enable FOCUS export ทีละ cloud , เริ่มจาก cloud ที่มี spend สูงสุด รัน parallel กับ export เดิม 30 วันเพื่อ reconcile ตัวเลข
Reconcile totals , คำนวณ SUM(EffectiveCost) จาก FOCUS กับ invoice จริงจาก portal ผมยอมรับ variance ไม่เกิน 0.5% ถ้ามากกว่านั้นแปลว่า config ผิด
Build canonical semantic layer , สร้าง dbt model หรือ view ที่ standardize ชื่อ team, environment, product ข้าม cloud จบใน layer นี้ ไม่ทำใน BI tool
Migrate top 3 dashboards , เริ่มจาก executive dashboard, budget vs actual และ team chargeback ที่ visibility สูงสุด
Sunset legacy pipeline , หลัง reconcile 90 วัน ปิด CUR/CM export เก่าลง เก็บไว้เฉพาะที่ engineering ต้องใช้ drill down
Warning: อย่าลบ CUR export เดิมทันที ต่อให้ dashboard ย้ายเสร็จหมดแล้ว. Finance team อาจต้อง reconcile กับ line item เก่าย้อนหลังเวลา audit เก็บ CUR ไว้อีก 6-12 เดือนเป็นอย่างน้อยเพื่อ safety net
คำถามที่พบบ่อย
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 เดิมกินเวลามากสุด