กลับไปหน้า Power BI
ทริคPower BI

การออกแบบโมเดลแบบ Star Schema

Star schema แยกตารางข้อเท็จจริง (fact) ออกจากตารางมิติ (dimension) เพื่อให้การวิเคราะห์สะอาดและเข้าใจง่ายขึ้น.

เริ่มอ่านตรงนี้ก่อน

อธิบายแบบง่าย

การออกแบบโมเดลแบบ Star Schema คือเรื่องที่ช่วยให้เราใช้ทำรายงานและ dashboard จากข้อมูลได้ถูกทางขึ้น

ระดับ

เหมาะกับคนที่เริ่มลงมือทำแล้ว

ใช้เมื่อไหร่

คุณต้องการรายงานที่ทำงานเร็วและเข้าใจง่าย

อ่านแล้วทำอะไรต่อ

ตาราง FactSales เก็บค่า Amount (ยอดเงิน) และ Quantity (จำนวน) ส่วนตาราง DimProduct เก็บ Category (หมวดหมู่) Brand (ยี่ห้อ) และ Product Name (ชื่อสินค้า)

เห็นภาพ: ทริคนี้เป็นยังไง

ก่อน: ตารางแบนราบตารางเดียว เก็บทั้งยอดขาย ชื่อสินค้า หมวด ชื่อลูกค้า ที่อยู่ ปนกันหมด

ทุกคอลัมน์อยู่ในตารางเดียว ชื่อสินค้าและหมวดซ้ำกันทุกแถวที่ขายสินค้านั้น พอจะกรองตามหมวดหรือเทียบช่วงเวลา ตัวเลขมักเพี้ยนและรายงานช้าเมื่อข้อมูลโต

หลัง: แยกเป็น FactSales (ค่าที่วัดได้) กับ DimProduct/DimCustomer/DimDate (รายละเอียด) เชื่อมด้วยความสัมพันธ์

ตารางข้อเท็จจริงเก็บแค่ Amount กับ Quantity ส่วนรายละเอียดอยู่ในตารางมิติแยก ค่าไม่ซ้ำ กรองง่าย measure ให้ผลเหมือนกันทุกภาพ และรายงานทำงานเร็วขึ้น

ตารางเดียวยัดทุกอย่าง vs แยกข้อเท็จจริงกับมิติ — แบบหลังรายงานเร็วกว่าและตัวเลขนิ่งกว่า

ใช้ตอนไหน?

  • คุณต้องการรายงานที่ทำงานเร็วและเข้าใจง่าย
  • คุณมีข้อมูลยอดขาย/คำสั่งซื้อ/เหตุการณ์ พร้อมกับมิติอย่างลูกค้า สินค้า และวันที่
  • คุณต้องการ measure (ค่าที่คำนวณใน Power BI) ที่ให้ผลสม่ำเสมอเหมือนกันในทุกภาพ

ถ้าเทียบกับ Excel

กล่องนี้ช่วยแปลคำ Power BI ให้โยงกับงาน Excel ที่คุ้นอยู่แล้ว.

ใน Excel

เหมือนแยกตารางรายการขายออกจากตารางสินค้า ลูกค้า และวันที่ แทนที่จะยัดทุกอย่างไว้ชีตเดียว

ใน Power BI

Fact table เก็บตัวเลขเหตุการณ์ ส่วน dimension table เก็บคำอธิบายเพื่อ filter และ group

จำแค่นี้ก่อน

ตารางใหญ่แบนๆ อาจดูง่ายตอนแรก แต่จะทำให้ DAX และ report สับสนเมื่อโตขึ้น

ต่อไปทำอะไร

ต่อไปค่อยเริ่มดู DAX CALCULATE หรือการวาง KPI บน report

ความหมาย

star schema (โครงตารางแบบดาว) คือการแยกเหตุการณ์ที่วัดค่าได้ไปไว้ในตารางข้อเท็จจริง (fact table) และแยกฟิลด์ที่ใช้บรรยายรายละเอียดไปไว้ในตารางมิติ (dimension table) แล้วเชื่อมเข้าหากันด้วยความสัมพันธ์ระหว่างตาราง

หน้าตาของโมเดล

ตารางข้อเท็จจริงชี้ออกไปหาตารางมิติ และตารางมิติทำหน้าที่กรองตารางข้อเท็จจริง

DimDate -> FactSales <- DimProduct
DimCustomer -> FactSales <- DimStore

ตัวอย่างการใช้

โมเดลยอดขาย

ตาราง FactSales เก็บค่า Amount (ยอดเงิน) และ Quantity (จำนวน) ส่วนตาราง DimProduct เก็บ Category (หมวดหมู่) Brand (ยี่ห้อ) และ Product Name (ชื่อสินค้า)

ลองเล่นดู