Fact vs Dimension Table และการออกแบบ Data Model แบบ Star

data-model-star-snowflake

เคยไหมที่เวลาเราจะเริ่มทำ Data Analytics หรือต้องสร้าง Dashboard ขึ้นมาสักอันนึง เราพอรู้ว่าเราต้องใช้ข้อมูลอะไรบ้าง แต่ไม่รู้ว่าจะจัดตารางยังไง ควรจะมีกี่ Table แต่ละ Table ควรเชื่อมโยงกันยังไง ใช้เกณฑ์อะไรในการออกแบบตารางให้ไม่ใหญ่เกินไป ไม่มีข้อมูลเยอะเกินไป บทความนี้จะว่าด้วยเรื่องของ Data Model ที่เหมาะกับการทำ Data Analytics นั่นคือ Star Schema หรือ Snowflake Schema

star-schema-snowflake
Star vs Snowflake Schema

ก่อนจะไปเจาะลึกเรื่องของ Fact และ Dimension เราต้องทำความเข้าใจ Data Model แบบ Star Schema และ Snowflake Schema กันก่อน ทั้งสองรูปแบบคือการจัดการโครงสร้างข้อมูลเพื่อเตรียมความพร้อมก่อนการทำ Data Aanlytics เพื่อการวิเคราะห์ข้อมูลแบบ Transactional ที่เน้นการบันทึกเหตุการณ์ที่เกิดขึ้นเป็นรายการในชีวิตประจำวัน หรือกิจกรรมปกติของธุรกิจ เช่น การสั่งซื้อ การโอนเงิน

โดยหลักการของทั้ง Star และ Snoflake นั้นเรียบง่ายคือ Fact Data จะอยู่ตรงกลาง โดยมีการเชื่อมโยงกับ Dimension Data ที่อยู่ล้อมรอบ

แล้ว Fact Data กับ Dimension Data คืออะไร?

Fact Data

Fact Data – หรือข้อมูลเท็จจริง เป็นข้อมูลที่เกิดขึ้นจากการบันทึก Transaction ที่เกิดขึ้น อาจะเป็น Transaction ย่อย เช่น ข้อมูลการขายสินค้า (แบบรายการต่อรายการ) หรือข้อมูลที่สรุปมาแล้ว เช่น ยอดขายประจำเดือน/ปี ข้อมูลจำนวนสินค้าคงคลัง ข้อมูลที่วัดได้จากมิเตอร์ IoT ต่าง ๆ เป็นต้น

ลักษณะของข้อมูลที่เป็น Fact Data

  • สามารถวัดได้ (Measures): เป็นตัวเลขที่เราสนใจในการวิเคราะห์ เช่น ยอดขาย จำนวนสินค้า ต้นทุน กำไร ระยะเวลาในการให้บริการ อุณหภูมิ ความชื้น
  • มีค่าเป็นตัวเลข (Numberic Value): มักมีตัวเลขเป็นองค์ประกอบในตาราง
  • ปริมาณเพิ่มขึ้นตามระยะเวลาที่ผ่านไป: จำนวนข้อมูล (Rows) จะเพิ่มขึ้นเรื่อย ๆ ตามการบันทึกข้อมูล
  • มีความละเอียด (Granularity): มักเป็นตารางที่เก็บข้อมูลในระดับละเอียดสุดของรายการ เช่น ข้อมูลการขายสินค้าแบบรายการละ 1 การชำระเงิน หรือเป็นข้อมูลที่ถูกสรุปต่อยอดมาจากข้อมูลระดับละเอียดสูง เช่น ข้อมูลการขายสินค้าต่อวัน

ตัวอย่าง Fact Table

Sale_Transaction

Order_IDDate_KeyProduct_KeyBranch_KeyQuantityTotal_Amount (฿)
1000120250101MP002B001175
1000220250101MP001B0012130
1000320250101AP004B002170
1000420250102MP005B003185
1000520250101EP003B001175

Dimension Data

Dimension Data – หรือข้อมูลเชิงอธิบาย เป็นข้อมูลที่ใช้ประกอบเพื่ออธิบายหรือขยายความสิ่งใดสิ่งหนึ่ง เช่น ฐานข้อมูลรายชื่อผลิตภัณฑ์ ฐานข้อมูลลูกค้า ฐานข้อมูลพนักงาน ข้อมูลสาขา ข้อมูลวันที่หรือปฏิทิน เพื่อใช้ในการขยายความข้อมูลที่อยู่ใน Fact Table เพื่ออธิบายว่า “ใคร”, “อะไร”, “ที่ไหน”, “เมื่อไหร่” หรือ “อย่างไร” ที่ Transaction นั้นเกิดขึ้น

ลักษณะของข้อมูลที่เป็น Dimension Data

  • เป็นข้อมูลอธิบาย (Context): ให้รายละเอียดเกี่ยวกับข้อมูล Fact เพื่อใช้ต่อยอดในการแบ่งกลุ่ม กรอง หรือเจาะลึกได้ เช่น การวิเคราะห์ยอดขายตามกลุ่มผลิตภัณฑ์ (เชื่อม Fact เข้ากับฐานข้อมูลผลิตภัณฑ์) ตามกลุ่มลูกค้า (เชื่อมเข้ากับฐานข้อมูลลูกค้า) ตามไตรมาส (เชื่อมเข้ากับข้อมูลวันที่)
  • ความนิ่งของข้อมูลสูงกว่า Fact Table: อาจจะเพิ่มขึ้นหรือลดลงตามการเปลี่ยนแปลงตามบริบท เช่น การเพิ่มผลิตภัณฑ์ใหม่ การขยายฐานลูกค้า การเข้า-ออกของพนักงาน เป็นต้น
  • มีการจัดแบ่งกลุ่มหรือให้รายละเอียดเพิ่ม: ตัวอย่างเช่น ฐานข้อมูลผลิตภัณฑ์อาจมีข้อมูลรายละเอียดของสินค้าเชิงลึก ชื่อผู้ผลิต หรือหมวดหมู่ของสินค้า เป็นต้น

ตัวอย่าง Dimension Table

Product

Product_KeyProduct_NameCategoryPrice (฿)
P001EspressoCoffee65
P002LatteCoffee75
P003CappuccinoCoffee75
P004Green Tea LatteTea70
P005Chocolate FrappeFrappe85

Date/Time

Date_KeyDateDayMonthQuarterYearTime_Slot
20250101M2025-01-01WedJanQ12025Morning
20250101A2025-01-01WedJanQ12025Afternoon
20250101E2025-01-01WedJanQ12025Evening
20250102M2025-01-02ThuJanQ12025Morning

Branch

Branch_KeyBranch_NameCityOpen_YearManagerManager_emp_id
B001Central Rama 9Bangkok2020Mr. Somsak Chokdee1001
B002Siam SquareBangkok2018Miss. Suwanna Yimkeng1002
B003Chiang Mai TownChiang Mai2019Mr. Bucha Nathong1003

ความสันพันธ์ระหว่าง Fact และ Dimension ทำงานร่วมกันอย่างไร

Fact Data และ Dimension Data จะถูกเชื่อมโยงกันผ่าน Key Column เพื่อให้สามารถวิเคราะห์ข้อมูลได้ จากตัวอย่างข้างต้น ใน Fact Table จะประกอบด้วย Key 3 ตัวนั่นคือ

  1. Product Key – ใช้เชื่อมโยงกับฐานข้อมูลสินค้า
  2. Date Key – ใช้เชื่อมโยงกับข้อมูลวันที่
  3. Branch Key – ใช้เชื่อมโยงกับข้อมูลสาขา

การเชื่อมโยงกันระหว่าง Fact และ Dimension Data จึงออกมามีลักษณะคล้ายดวงดาว โดยมี Fact Table เป็นศูนย์กลาง และมี Dimension Table เป็นรัศมี ซึ่งถูกเชื่อมกันด้วย Key

fact-dimension-relation-powerbi
PowerBI Data Model

โครงสร้างความสัมพันธ์ข้อมูลแบบนี้จะทำให้เราสามารถกรองข้อมูลยอดขายผ่านบริบทของ Dimension Data ได้ เช่น

การจัดอันดับยอดขายตามเมือง โดยการใช้ข้อมูล ‘City’ จาก Branch Table

fact-dimension-relation-dashboard-location
Branch Sale Performance Dashboard

ตามประเภทของหมวดหมู่สินค้า โดยใช้ข้อมูล ‘Category’ จาก Product Table

fact-dimension-relation-dashboard-product
Product Sale Performance Dashboard

การวิเคราะห์ว่ายอดขายของกิจการเราเกิดขึ้นในวันไหนของสัปดาห์มากกว่ากัน โดยใช้ข้อมูล ‘Day’ จาก Date/Time

fact-dimension-relation-dashboard-time
Sale Time Insight Dashboard

ในขณะที่ Snowflake นั้นใช้หลักการเดียวกันกับ Star Schema แต่ในบางกรณี ข้อมูลที่เป็น Dimension Data อาจจะมีการแตกย่อยออกเป็นข้อมูล Sub-dimension เพิ่มเติม เพื่อขยายรายละเอียดต่อไปได้ เช่น ‘Employee Database’ เป็น Sub-dimension ของ Brach Table โดยเชื่อมข้อมูล Manager Employee ID เข้ากับฐานข้อมูลพนักงาน เพื่อวิเคราะห์หาความสัมพันธ์ระหว่างยอดขายและ Performance ของผู้จัดการร้าน เป็นต้น

Employee Database

emp_idFull NameJob TitleManagerPerformance Review ScoreYear of Service
1001Mr. Somsak ChokdeeBranch ManagerMr. Somsak Chokdee53
1002Miss. Suwanna YimkengBranch ManagerMiss. Suwanna Yimkeng107
1003Mr. Bucha NathongBranch ManagerMr. Bucha Nathong75

สรุปความแตกต่างระหว่าง Fact Data และ Dimension Data

คุณสมบัติFact DataDimension Data
บทบาทสิ่งที่เกิดขึ้น (What happened)บริบท (Context) หรือ คำอธิบาย (Who, What, Where, When)
ประเภทค่าตัวเลขเชิงปริมาณ (Measures)ข้อความหรือคำอธิบาย (Attributes)
การคำนวณนำไปรวม, เฉลี่ย, นับ, หรือคำนวณได้ใช้สำหรับกรอง, จัดกลุ่ม, จัดหมวดหมู่
ตัวอย่างยอดขาย, จำนวนหน่วย, กำไร, ต้นทุนชื่อลูกค้า, ชื่อผลิตภัณฑ์, ภูมิภาค, วันที่

ทุกการวิเคราะห์ข้อมูลที่ดีเริ่มต้นจากการจัดเรียงข้อมูลอย่างเหมาะสม ถ้าเราเข้าใจว่าเรา “กำลังวัดอะไร” (Fact) และ “วัดภายใต้บริบทหรือมุมมองใด” (Dimension) เราจะสามารถเลือกได้ว่าเราต้องใช้ข้อมูลอะไรบ้าง และเชื่อมโยงกันอย่างไรนั่นเองครับ แล้วพบกันใหม่บทความต่อไปครับ ขอบคุณครับ

Similar Posts