แผนการเรียนรู้
/

Week 12: OLAP
Multi-Dimensional Analysis

Slicing, Dicing & Drilling Down into Business Data

Project Milestone

Build a Dashboard & Test OLAP Analysis

"Turn data into insight — slice it, dice it, drill into it."

Learning Outcomes

1
Explain OLAP concepts: cubes, measures, and hierarchies
2
Differentiate OLAP operations: slice, dice, roll-up, drill-down
3
Compare MOLAP, ROLAP, and HOLAP engines
4
Build a dashboard applying OLAP analysis on the project data

OLTP vs OLAP

OLTP (Transactional)

  • • 📝 งาน: บันทึกธุรกรรมรายวัน (สั่งซื้อ, โอนเงิน)
  • • ⚡ คำสั่ง: INSERT/UPDATE/DELETE สั้นๆ
  • • 👤 ผู้ใช้: พนักงานปฏิบัติการ (high concurrency)
  • • 🎯 จุดเน้น: ความเร็วและความถูกต้อง

OLAP (Analytical)

  • • 📊 งาน: วิเคราะห์ยอดรวม แนวโน้ม และความสัมพันธ์
  • • 🔍 คำสั่ง: SELECT ซับซ้อนบนข้อมูลปริมาณมาก
  • • 🔬 ผู้ใช้: นักวิเคราะห์, ผู้บริหาร, AI
  • • 🎯 จุดเน้น: ความเร็วตอบคำถามวิเคราะห์
💡 คลังข้อมูล (DW) ถูกออกแบบมาเพื่อ OLAP โดยเฉพาะ

แนวคิด OLAP Cube

OLAP Cube คือการมองข้อมูลหลายมิติ โดยแต่ละ "เซลล์" เก็บค่าของ เมตริก (Measure) ที่ตรงกับค่ามิติจำนวนหนึ่ง

เวลา (Time)
ปี/ไตรมาส/เดือน
สินค้า (Product)
หมวด/ยี่ห้อ/ชื่อ
ที่ตั้ง (Location)
ภาค/จังหวัด/เมือง

แต่ละมิติมี ลำดับชั้น (Hierarchy) ที่ใช้ย่อ/ขยายมุมมองได้

อ่านเพิ่มเติม: OLAP Cube

OLAP Operations

Slicing 🔪

ตัด "ชิ้น" หนึ่งมิติให้คงที่ เช่น ดูยอดขายเฉพาะ เดือนมกราคม เท่านั้น

Dicing 🎲

เลือกชุดย่อยของหลายมิติ เช่น ยอดขายสินค้าหมวด "อิเล็กทรอนิกส์" ภาคเหนือ ใน Q1

Roll-up / Drill-down 🔍

ย่อระดับ (เดือน→ปี) หรือขยายระดับ (ปี→เดือน) ตามลำดับชั้น

Pivot / Rotate 🔄

หมุนแกนเพื่อดูมิติใหม่บนแถว/คอลัมน์ แบบ Pivot Table

กิจกรรมกลุ่ม (20 นาที)

ระบุ OLAP Operation

จากข้อมูลยอดขายสามมิติ (เวลา, สินค้า, ที่ตั้ง) จงระบุว่าแต่ละคำถามใช้ operation ใด:

คำถาม A: "ดูยอดขายของเดือนกันยายนทั้งหมด"
คำถาม B: "เปรียบเทียบยอดขายสินค้าหมวด 'เครื่องดื่ม' ภาคกลาง ระหว่าง Q1 ถึง Q2"
คำถาม C: "จากยอดขายปี 2025 รวม → อยากเห็นแยกเป็นรายเดือน"

เฉลย: Operations

คำถาม A → Slicing 🔪

ตัดเพียงมิติเวลาให้คงที่ที่ "กันยายน" มองทุกสินค้าและที่ตั้ง

คำถาม B → Dicing 🎲

เลือกชุดย่อยหลายมิติ: หมวด=เครื่องดื่ม, ที่ตั้ง=ภาคกลาง, เวลา=Q1–Q2

คำถาม C → Drill-down 🔍

ขยายลำดับชั้นเวลาจากปีลงสู่เดือน (Roll-up คือไปทางตรงข้าม)

💡 ตัวช่วย: จำง่ายๆ — Slice=ตัดชิ้นเดียวคงไว้, Dice=เลือกหลายช่อง, Drill=ขยาย/ย่อรายละเอียด

Part 2: OLAP Engines

"Choose the right engine for the job"

MOLAP, ROLAP, HOLAP — แต่ละแบบต่างกันที่วิธีจัดเก็บและประมวลผล

MOLAP vs ROLAP vs HOLAP

MOLAP

Multidimensional OLAP

  • • เก็บใน Cube จำเพาะ (Array)
  • • ✅ ตอบเร็วมาก, คำนวณล่วงหน้า
  • • ❌ ข้อมูลจำกัด, ใช้พื้นที่มาก
  • • 🔧 เช่น Essbase, SSAS

ROLAP

Relational OLAP

  • • ใช้ตารางสัมพันธ์ (SQL)
  • • ✅ รองรับข้อมูลมหาศาล
  • • ❌ ช้ากว่า MOLAP
  • • 🔧 เช่น ClickHouse, BigQuery

HOLAP

Hybrid OLAP

  • • ผสม MOLAP + ROLAP
  • • ✅ สรุปใน Cube, รายละเอียดใน RDBMS
  • • 🎯 สมดุลระหว่างความเร็วและขนาด
อ่านเพิ่มเติม: OLAP (Wikipedia)

Star Schema & OLAP

Star Schema ถูกออกแบบมาให้เหมาะกับการทำ OLAP โดยตรง

Time Dim
PK: date_key
Product Dim
PK: product_key
FACT
Sales
FK×3 + measures
Store Dim
PK: store_key
  • • Fact Table เก็บเมตริก (amount, quantity) + FK ไปยังมิติ
  • • Dimension Tables เก็บรายละเอียดและลำดับชั้น (denormalized)
  • • ✅ Joins น้อย → Query OLAP รวดเร็ว

SQL วิเคราะห์ข้อมูลแบบ OLAP

ใช้ GROUP BY ร่วมกับฟังก์ชัน Window / ROLLUP / CUBE:

-- Slicing: เฉพาะเดือนมกราคม
SELECT region, SUM(amount) AS revenue
FROM fct_orders f JOIN dim_store s ON f.store_key = s.store_key
WHERE f.order_date BETWEEN '2025-01-01' AND '2025-01-31'
GROUP BY region;

-- Roll-up: ยอดขายตามปี + หมวด (ด้วย ROLLUP)
SELECT YEAR(order_date), category, SUM(amount)
FROM fct_orders f JOIN dim_product p ON f.product_key = p.product_key
GROUP BY ROLLUP(YEAR(order_date), category);
ฝึกฝน: Mode SQL Tutorial
Workshop (30 นาที)

Dashboards กับ OLAP Queries

สร้างแดชบอร์ดเบื้องต้นจากตาราง Gold ของโครงการ และเขียนคำสั่ง OLAP:

1. เขียนคำสั่งเพื่อทำ Slice เฉพาะเดือนที่มียอดขายสูงสุด
2. ใช้ ROLLUP เพื่อดูยอดขายรวมตามหมวดสินค้าและปี
3. เลือกเครื่องมือ (Looker Studio, Metabase, Grafana, Tableau) และวาด 1 แผนภูมิ

แนวทาง: Dashboard Design

แผนภูมิแนะนำ

  • • 📈 Line: แนวโน้มยอดขายตามเวลา
  • • 🥧 Pie/Donut: สัดส่วนรายได้ตามหมวด
  • • 🗺️ Map: ยอดขายตามภูมิภาค
  • • 📊 Bar: เปรียบเทียบสินค้า/สาขา

การออกแบบที่ดี

  • • 🎯 เริ่มจากคำถามธุรกิจที่ชัดเจน
  • • 🔗 ให้ผู้ใช้ Drill-down ได้ (คลิกปี → เดือน)
  • • 🧹 ลดสิ่งรบกวน เน้น KPI สำคัญ
  • • 🤖 เชื่อม Semantic Layer เพื่อตัวเลขตรงกัน
🚀 Project (Phase): ส่งมอบแดชบอร์ดที่ใช้ SLICE/DICE/ROLL-UP พร้อมเชื่อมกับข้อมูลโครงการ

Modern OLAP: ClickHouse

ClickHouse เป็นฐานข้อมูล Columnar OLAP ยอดนิยมสำหรับการวิเคราะห์แบบเรียลไทม์บนข้อมูลขนาดใหญ่

  • • 📦 Column-Oriented: อ่านเฉพาะคอลัมน์ที่ต้องการ → เร็วมาก
  • • ⚡ Aggregation Engine: เก่งคำสั่ง GROUP BY ขนาดใหญ่
  • • 🎯 Real-time: รองรับข้อมูลสตรีมมิ่งเพื่อ dashboard สด
เรียนเพิ่ม: ClickHouse Developer Course

Week 12 Summary

1. OLAP วิเคราะห์ข้อมูลหลายมิติผ่าน Cube และลำดับชั้น
2. Slicing/Dicing/Drill-down ช่วยเจาะมุมมองได้หลากหลาย
3. Star Schema + Columnar (ClickHouse) เหมาะกับ OLAP มาก
4. Dashboard คือผลงานที่แสดงทักษะ OLAP ของคุณ
Next Week: AI-powered Query Optimization & Forecasting!