ข้ามไปยังเนื้อหา

การกำหนด Metrics

GrowthBook ใช้โมเดลสองชั้น:

  1. Fact Table — เป็น wrapper บางๆ รอบ raw event table ใน warehouse ของคุณ ทำหน้าที่กำหนดว่า SQL query ใดที่ดึง raw events ออกมา และ column ใดที่แทน user ID, timestamp, และค่าตัวเลข
  2. Metric — คำนิยามทางสถิติที่สร้างบน Fact Table เป็นตัวกำหนดว่าจะ aggregate raw events เป็นตัวเลขต่อ user ต่อ experiment อย่างไร

การแยกสองชั้นนี้หมายความว่าคุณกำหนด data shape ครั้งเดียว (Fact Table) แล้วสร้าง metric ได้หลายตัวจาก Fact Table เดียวกันโดยไม่ต้องเขียน SQL ซ้ำ

ประเภทคำนิยามตัวอย่าง
Proportionเปอร์เซ็นต์ผู้ใช้ที่ทำ event อย่างน้อยหนึ่งครั้งConversion rate, click-through rate
Meanค่าเฉลี่ยตัวเลขต่อ userAverage order value, average session duration
RatioNumerator metric หารด้วย denominator metricRevenue per session, pages per visit
  1. ใน sidebar ด้านซ้าย ไปที่ Analysis แล้ว Fact Tables
  2. คลิก Add Fact Table
  3. ตั้งชื่อ (เช่น Orders)
  4. เลือก Data Source ของคุณ
  5. เขียน SQL query ที่ดึง raw events ออกมา query ต้องคืนอย่างน้อย:
    • Column สำหรับ user identifier
    • Column สำหรับ timestamp
    • (สำหรับ mean/ratio metrics) Column ค่าตัวเลข

ตัวอย่าง Fact Table SQL สำหรับ orders table:

SELECT
user_id,
timestamp,
revenue_usd
FROM
`myproject.analytics.orders`
WHERE
timestamp >= '{{ startDate }}'
AND timestamp <= '{{ endDate }}'
  1. Map User ID column และ Timestamp column ใน Fact Table settings
  2. คลิก Save
  1. ใน sidebar ด้านซ้าย ไปที่ Analysis แล้ว Metrics
  2. คลิก Add Metric
  3. เลือกประเภท metric: Proportion, Mean, หรือ Ratio
  4. เลือก Fact Table ที่เพิ่งสร้าง
  5. สำหรับ Mean metric ให้เลือก column ค่าตัวเลข (เช่น revenue_usd)
  6. ตั้ง Metric Window — ช่วงเวลาหลัง assignment ที่จะนับ events (เช่น 14 วัน) เพื่อป้องกัน long-tail events รบกวนการวิเคราะห์
  7. ตั้งค่าเสริม:
    • Minimum sample size — GrowthBook จะไม่แสดงผลจนถึง threshold นี้
    • Maximum percentage change — แจ้งเตือนถ้า uplift ดูใหญ่ผิดปกติ
  8. คลิก Save Metric

สำหรับกรณีที่ Fact Table ไม่เหมาะ GrowthBook ยังรองรับการกำหนด metric ด้วย raw SQL โดยตรง นี่คือ proportion metric ที่นับ users ที่สั่งซื้ออย่างน้อยหนึ่งครั้ง:

-- Proportion metric: "Purchased"
-- Returns one row per user who placed an order.
-- GrowthBook computes the conversion rate: ordered_users / assigned_users.
SELECT
  user_id,
  timestamp
FROM
  `myproject.analytics.orders`
WHERE
  timestamp >= '{{ startDate }}'
  AND timestamp <= '{{ endDate }}'
ตัวเลือกBenefitCost
Goal metric ที่เจาะจงมากวัดผลชัดเจนตรงประเด็นอาจพลาด side effect ที่ metric อื่นจับได้
Metric ที่กว้างครอบคลุมครอบคลุมผลกระทบกว้างกว่าตีความยากว่าอะไรขับเคลื่อนผล
  • นิยาม metric ที่ไม่ตรงกับ business goal จริง (วัด vanity metric แทน conversion จริง)
  • ไม่ตั้ง guardrail metric ทำให้พลาดผลข้างเคียงที่แย่ (เช่น page load ช้าลง)
  • เปลี่ยนนิยาม metric กลาง experiment ทำให้เปรียบเทียบผลก่อน-หลังไม่ได้

💡 ตัวอย่างจากของจริง

ทีม data ที่ Booking.com ตั้ง guardrail metric (เช่น error rate, latency) คู่กับทุก goal metric เสมอ เพื่อจับผลข้างเคียงที่ไม่คาดคิด

Fact Table ใน GrowthBook มีจุดประสงค์อะไร?
ประเภท metric ใดที่คำนวณเปอร์เซ็นต์ผู้ใช้ที่ trigger event อย่างน้อยหนึ่งครั้ง?
Metric Window setting ควบคุมอะไร?
ทำไมการแยก Fact Tables จาก Metrics จึงมีประโยชน์?