Appearance
🎮 BI Designer — Thiết Kế Dashboard Như Chuyên Gia!
Bạn vừa được bổ nhiệm làm BI Analyst Lead tại DashCorp 📊. CEO gửi 7 yêu cầu dashboard — mỗi yêu cầu mô tả audience + mục đích + dữ liệu. Nhiệm vụ: chọn layout + visual type phù hợp nhất cho từng tình huống. Dashboard đẹp mà sai mục đích = thất bại! 📱
🎯 Mục tiêu học tập
Sau khi hoàn thành game, bạn sẽ:
- Chọn đúng dashboard layout — KPI-first, trend-focused, comparison, detail-drill
- Match visual type với mục đích — card cho KPI, line cho trend, bar cho comparison
- Thiết kế cho đúng audience — CEO (high-level) vs Manager (detail) vs Analyst (granular)
- Áp dụng Z-Pattern — sắp xếp thông tin theo thứ tự ưu tiên
- Chọn đúng interactivity — khi nào cross-filter, khi nào drill-down, khi nào slicer
- Phân biệt measure vs calculated column — biết khi nào dùng DAX measure
- Thiết kế mobile-responsive — biết optimize dashboard cho phone/tablet
📜 Luật chơi
┌──────────────────────────────────────────────────────┐
│ BẠN = BI Analyst Lead 📊📱 │
│ TASK = 7 yêu cầu dashboard từ CEO/stakeholders │
│ MỖI VÒNG = audience + mục đích → 4 dashboard designs │
│ CHỌN design phù hợp nhất — match audience + purpose │
│ MỤC TIÊU = Thu thập ≥ 80 XP để đạt hạng Gold 🥇 │
└──────────────────────────────────────────────────────┘Cách tính điểm mỗi vòng:
| Thành phần | XP |
|---|---|
| Trả lời đúng | +10 XP (Vòng 1–3), +13 XP (Vòng 4–5), +15 XP (Vòng 6–7) |
| Trả lời sai | +0 XP |
| Không dùng hint | +2 XP bonus ⚡ |
| Giải thích đúng lý do | +3 XP bonus 🧠 |
Tổng XP tối đa: 10+10+10+13+13+15+15 = 86 XP (chưa tính bonus)
Nguyên tắc quan trọng:
- 🔒 Dashboard tốt = đúng audience + đúng mục đích + đúng visual — đẹp mà sai audience = fail
- ⚖️ Less is more — 5-8 visuals/page max. Nhiều hơn = cognitive overload
🏆 Bảng xếp hạng & Huy hiệu
Ranks
| Hạng | XP | Mô tả |
|---|---|---|
| 🥇 Gold — Dashboard Master | ≥ 80 XP | Bạn thiết kế dashboard như BI chuyên nghiệp! |
| 🥈 Silver — Visual Thinker | ≥ 55 XP | Tốt! Cần luyện thêm audience-driven design |
| 🥉 Bronze — Dashboard Beginner | ≥ 35 XP | Ổn cho ngày đầu — ôn lại dashboard patterns |
| 💀 Game Over | < 35 XP | Dashboard vẫn rối — quay lại đọc Buổi 11 nhé! |
Huy hiệu đặc biệt
| Badge | Điều kiện | Mô tả |
|---|---|---|
| 🎯 Perfect Design | Đúng 1 vòng + giải thích lý do | Thiết kế dashboard chính xác! |
| 🔥 Design Streak | 3 vòng liên tiếp đúng | Chuỗi dashboard design hoàn hảo! |
| 🧠 UX Thinker | Giải thích đúng lý do ≥ 5 vòng | Hiểu sâu dashboard design principles! |
| ⚡ Speed Designer | Hoàn thành 7 vòng trong < 8 phút | Nhanh như Power BI autolayout! |
| 🏆 Full Marks | Đúng tất cả 7 vòng | BI Designer huyền thoại! |
| 📱 Mobile Pro | Đúng vòng mobile design | Mobile-first mindset! |
| 💡 No Hints Hero | Không dùng hint cả game | Dashboard intuition tự nhiên! |
| 🛡️ Comeback Designer | Sai 2 vòng đầu, đúng 5 vòng sau | Không bao giờ bỏ cuộc! |
| 🎨 Executive Designer | Đúng vòng CEO/executive dashboard | Master of C-level communication! |
🎲 Chỉ số theo dõi
| Chỉ số | Icon | Mô tả | Mục tiêu |
|---|---|---|---|
| Dashboard Design | 🎯 | Chọn đúng layout + visual / tổng 7 vòng | ≥ 6/7 |
| Audience Fit | 👥 | Match dashboard với đúng audience level | ≥ 5/7 |
| UX Quality | 📱 | Áp dụng Z-pattern, KPI-first, less is more | Đúng vòng advanced |
📋 Kịch bản chi tiết
📊 Vòng 1: "CEO Morning KPI" ⭐ Dễ
CEO muốn mở app lúc 6:30 sáng và biết ngay: hôm qua có tốt không?
💬 Slack từ CEO:
"Tôi cần 1 trang dashboard trên phone — mở ra là thấy 4 con số quan trọng nhất: revenue, orders, AOV, growth vs yesterday. Không cần nhiều chart. Tôi chỉ có 30 giây."
Yêu cầu:
📋 Dashboard Brief:
━━━━━━━━━━━━━━━━━━━
Audience: CEO (phone, 30 giây)
Mục đích: Monitor KPIs — hôm qua tốt hay xấu?
Data: Revenue, Orders, AOV, YoY Growth (daily)
Constraint: Mobile, scan in 30 secondsLựa chọn:
| Dashboard Design | Mô tả | |
|---|---|---|
| A | 📊 4 KPI Cards + trend sparklines | 4 cards lớn ở trên, mỗi card: số + trend ▲/▼ + sparkline 7 ngày |
| B | 📈 4 line charts full-size | 4 biểu đồ line chi tiết 30 ngày, chiếm full screen |
| C | 📋 1 bảng detail | Table: Date, Revenue, Orders, AOV, Growth — 30 rows |
| D | 🥧 4 pie charts | Revenue breakdown by category, region, channel, product |
💡 Hint (−2 XP)
Audience: CEO, phone, 30 giây. CEO cần tổng quát nhanh — số lớn, trend indicator, không cần detail. KPI card là visual #1 cho executive monitoring. Line chart chi tiết = quá phức tạp cho 30 giây.
Đáp án & Giải thích
✅ Đáp án đúng: A — 4 KPI Cards + trend sparklines
Lý do:
- A đúng vì: (1) KPI cards = visual tối ưu cho executive monitoring — số lớn, đọc trong 3 giây, (2) trend indicator ▲/▼ cho biết ngay tốt/xấu, (3) sparkline 7 ngày cho micro-context mà không chiếm diện tích, (4) mobile-friendly — 4 cards xếp dọc trên phone
- B sai vì: 4 line charts full = quá chi tiết cho CEO 30 giây. CEO không cần 30 ngày data, chỉ cần "hôm qua OK không?" Line charts phù hợp cho analyst, không executive
- C sai vì: Table 30 rows = cognitive overload trên phone. CEO không scan bảng — CEO cần headline. Table là supporting detail, không phải primary view
- D sai vì: Pie charts cho composition (phần vs tổng), không phải monitoring. CEO hỏi "revenue hôm qua?", không phải "revenue chia theo gì?"
XP: +10 | Bonus: +2 (no hint), +3 (đúng lý do)
📊 Vòng 2: "Sales Manager — Team Performance" ⭐ Dễ
Sales Manager muốn so sánh performance 15 sales reps trong team.
💬 Email từ Sales Manager:
"Cho tôi dashboard để biết: ai đạt target, ai chưa, pipeline mỗi người bao nhiêu. Hàng tuần tôi dùng trong 1-on-1 meeting với từng rep."
Yêu cầu:
📋 Dashboard Brief:
━━━━━━━━━━━━━━━━━━━
Audience: Sales Manager (laptop, 5 phút mỗi rep)
Mục đích: Comparison — rank reps, identify underperformers
Data: 15 sales reps, quota attainment, pipeline, win rate
Constraint: Dùng trong 1-on-1 meeting, filter per repLựa chọn:
| Dashboard Design | Mô tả | |
|---|---|---|
| A | 📊 Horizontal bar chart (sorted) + slicer per rep | Bar chart rank 15 reps by quota attainment + slicer để drill-down từng rep |
| B | 📈 15 line charts (small multiples) | 1 line chart cho mỗi rep — trend 12 tháng |
| C | 🗺️ Map | Plot 15 reps trên bản đồ theo khu vực phụ trách |
| D | 🥧 Pie chart | Revenue contribution mỗi rep trong tổng team |
💡 Hint (−2 XP)
Mục đích: comparison, ranking — ai đạt target, ai chưa. Chart nào tốt nhất cho comparison giữa 15 items? Manager cần sort & rank nhanh. Slicer cho phép chọn 1 rep để drill-down trong 1-on-1 meeting.
Đáp án & Giải thích
✅ Đáp án đúng: A — Horizontal bar chart (sorted) + slicer per rep
Lý do:
- A đúng vì: (1) Bar chart sorted = #1 cho comparison & ranking — thấy ngay top performers và underperformers, (2) horizontal bar dễ đọc label tên người, (3) slicer per rep → manager click vào 1 rep → drill-down chi tiết cho 1-on-1 meeting, (4) thêm target line → thấy ngay ai đạt ai chưa
- B sai vì: 15 small multiples = tốt cho trend, nhưng kém cho comparison across reps. Khó rank 15 đường cùng lúc
- C sai vì: Map cho geographic analysis, không phải performance comparison. 15 dots trên bản đồ không rank được
- D sai vì: Pie chart cho composition (phần vs tổng), 15 slices = quá nhiều, khó so sánh
XP: +10 | Bonus: +2 (no hint), +3 (đúng lý do)
📊 Vòng 3: "Revenue Trend — Seasonality" ⭐ Dễ
CFO muốn thấy doanh thu 24 tháng gần nhất — có seasonality không?
💬 Slack từ CFO:
"Show me revenue trend 2 năm. Tôi muốn thấy pattern — tháng nào cao, tháng nào thấp, có lặp lại không?"
Yêu cầu:
📋 Dashboard Brief:
━━━━━━━━━━━━━━━━━━━
Audience: CFO (laptop, board meeting)
Mục đích: Trend + seasonality detection
Data: Monthly revenue, 24 months (2024-2025)
Constraint: Clear pattern visibilityLựa chọn:
| Dashboard Design | Mô tả | |
|---|---|---|
| A | 📊 24 vertical bars | 24 cột cho 24 tháng |
| B | 📈 Line chart + YoY overlay | Line 2025 overlay trên line 2024, cùng trục tháng (Jan-Dec) |
| C | 🔥 Heatmap calendar | 24 ô màu (2 hàng × 12 cột), intensity = revenue |
| D | 📋 Table | 24 rows: Month, Revenue, MoM%, YoY% |
💡 Hint (−2 XP)
Mục đích: seasonality = pattern lặp lại mỗi năm. Chart nào cho phép so sánh Year 1 vs Year 2 theo cùng tháng? Overlay 2 năm trên cùng trục X (Jan-Dec) → thấy rõ tháng nào cao/thấp, có lặp lại không.
Đáp án & Giải thích
✅ Đáp án đúng: B — Line chart + YoY overlay
Lý do:
- B đúng vì: (1) YoY overlay = tối ưu cho seasonality detection — 2 đường cùng trục Jan-Dec, thấy ngay pattern lặp lại (ví dụ: cả 2 năm đều peak tháng 6, dip tháng 2), (2) Line chart cho trend direction rõ ràng, (3) chỗ 2 đường gần nhau = consistent, chỗ xa nhau = growth/decline
- A sai một phần — 24 bars OK cho magnitude nhưng kém cho seasonality detection. 24 cột liền = khó thấy Year 1 vs Year 2 pattern
- C sai vì: Heatmap calendar thú vị nhưng khó so sánh exact values — color intensity kém hơn line length/position cho trend
- D sai vì: Table = data view, không phải visual view. Khó phát hiện seasonality pattern từ 24 dòng số
XP: +10 | Bonus: +2 (no hint), +3 (đúng lý do)
📊 Vòng 4: "DAX Measure vs Calculated Column" ⭐⭐ Trung bình
Bạn cần hiển thị "Revenue share %" cho mỗi product category trên bar chart. Nên dùng measure hay calculated column?
💬 Yêu cầu kỹ thuật:
"Khi user click slicer 'Region = HCM' → Revenue share % phải tự tính lại cho HCM. Khi chọn 'All regions' → Revenue share % cho toàn quốc."
Yêu cầu:
📋 Technical Brief:
━━━━━━━━━━━━━━━━━━━
Behavior: Dynamic — thay đổi theo filter context
Destination: Bar chart showing category %
Slicer: Region, Date range
Key: Phải tự tính lại khi user thay đổi filterLựa chọn:
| Approach | DAX Example | |
|---|---|---|
| A | Calculated Column | Rev Share = FACT_SALES[Revenue] / SUM(FACT_SALES[Revenue]) |
| B | Measure with CALCULATE + ALL | Rev Share % = DIVIDE(SUM(Revenue), CALCULATE(SUM(Revenue), ALL(DIM_PRODUCT))) |
| C | Power Query | Tính % trong Power Query trước khi load |
| D | Both | Calculated column cho static, measure cho dynamic |
💡 Hint (−2 XP)
Keyword: dynamic, thay đổi theo filter context. Calculated columns tính 1 lần khi load, không thay đổi khi user click slicer. Measures tính on-the-fly mỗi khi filter context thay đổi. Khi user filter "HCM" → measure tự tính Revenue share chỉ trong HCM.
Đáp án & Giải thích
✅ Đáp án đúng: B — Measure with CALCULATE + ALL
Lý do:
- B đúng vì: (1) Measure = dynamic — tính lại mỗi khi filter context thay đổi, (2)
ALL(DIM_PRODUCT)bỏ filter trên product → tính tổng toàn bộ categories → chia cho category hiện tại = share %, (3) khi user click slicer Region → DAX tự tính share % trong region đó - A sai vì: Calculated column tính 1 lần khi load, static — không thay đổi khi click slicer. Revenue share % sẽ luôn giữ nguyên giá trị ban đầu bất kể user filter gì
- C sai vì: Power Query tính trước khi load = static. Giống calculated column, không phản ứng với filter
- D sai vì: Trong trường hợp này chỉ cần measure. Calculated column tính static % là thừa và tốn RAM
XP: +13 | Bonus: +2 (no hint), +3 (đúng lý do)
📊 Vòng 5: "Multi-Department Executive Dashboard" ⭐⭐ Trung bình
COO muốn 1 dashboard tổng hợp cho 5 departments — drill-down từ tổng quan xuống chi tiết.
💬 Email từ COO:
"Tôi muốn nhìn tổng quan health của 5 phòng ban ở page 1. Click vào phòng ban nào → xem chi tiết phòng ban đó ở page 2. Đừng nhồi tất cả vào 1 trang."
Yêu cầu:
📋 Dashboard Brief:
━━━━━━━━━━━━━━━━━━━
Audience: COO (laptop, weekly review)
Mục đích: Overview + drill-down
Data: 5 departments: Revenue, Headcount, Cost, Margin, KPIs
Constraint: Page 1 = overview, Page 2 = detail per deptLựa chọn:
| Dashboard Design | Mô tả | |
|---|---|---|
| A | Page 1: 5 KPI card rows (1 row per dept) → Page 2: Department detail (drillthrough) | Overview dạng scorecard, click dept → drillthrough page |
| B | 1 page duy nhất | 25 visuals (5 depts × 5 metrics) trên 1 trang |
| C | 5 pages riêng biệt | 1 page per department, không có overview |
| D | 1 giant table | 5 rows × 10 columns, conditional formatting |
💡 Hint (−2 XP)
COO nói rõ: "Page 1 = overview, Page 2 = detail." Pattern này gọi là progressive disclosure — Level 1 tổng quát, click → Level 2 chi tiết. Power BI có tính năng Drillthrough — click right → drillthrough to detail page. Đừng nhồi tất cả vào 1 page.
Đáp án & Giải thích
✅ Đáp án đúng: A — Page 1: Scorecard overview → Page 2: Drillthrough detail
Lý do:
- A đúng vì: (1) Progressive disclosure = best practice — overview → detail, (2) Page 1: 5 rows, mỗi row = 1 dept với 4-5 KPI → COO scan 5 depts trong 30 giây, (3) Drillthrough page: click dept → trang riêng với charts chi tiết, (4) đúng yêu cầu COO — overview ở 1 trang, detail ở trang khác
- B sai vì: 25 visuals trên 1 trang = cognitive overload — vi phạm quy tắc ≤ 8 visuals/page
- C sai vì: Không có overview → COO phải click qua 5 trang để compare 5 depts. Mất overview perspective
- D sai vì: Table = raw data view, không visual. 5 rows thì conditional formatting hữu ích nhưng thiếu visual patterns (trend, comparison)
XP: +13 | Bonus: +2 (no hint), +3 (đúng lý do)
📊 Vòng 6: "Mobile Dashboard Optimization" ⭐⭐⭐ Khó
VP Marketing xem dashboard trên iPad trong meeting. Design hiện tại (desktop) không đọc được trên tablet.
💬 Slack từ VP Marketing:
"Dashboard của bạn trên laptop OK, nhưng trên iPad tôi phải zoom in, scroll ngang, chart chữ bé. Cần version mobile/tablet readable."
Yêu cầu:
📋 Dashboard Brief:
━━━━━━━━━━━━━━━━━━━
Audience: VP Marketing (iPad, meeting, 1 tay holding)
Mục đích: Same insights as desktop, optimized for tablet
Current: Desktop layout 1280×720, 7 visuals + 2 slicers
Constraint: Readable on iPad (1024×768), no horizontal scrollLựa chọn:
| Mobile Design | Mô tả | |
|---|---|---|
| A | 1-column vertical scroll | KPIs → Hero chart → Supporting charts, single column, scroll down |
| B | Shrink desktop layout | Giữ nguyên layout desktop, scale down 50% |
| C | Remove half the visuals | Giữ 3-4 visuals quan trọng nhất, bỏ phần còn lại |
| D | A + C: 1-column + prioritize | 1-column layout, chỉ giữ KPI cards + hero chart + 1 breakdown, dropdown filter thay slicer |
💡 Hint (−2 XP)
Mobile ≠ shrink desktop. Mobile = re-think layout: (1) 1-column vertical scroll — phone/tablet are vertical, (2) prioritize — không phải mọi desktop visual cần trên mobile, chọn quan trọng nhất, (3) dropdown thay slicer — slicer chiếm diện tích, dropdown compact hơn. Power BI Mobile Layout: View → Mobile Layout.
Đáp án & Giải thích
✅ Đáp án đúng: D — 1-column layout + prioritize visuals + dropdown filter
Lý do:
- D đúng vì: (1) 1-column = natural scroll trên tablet, không scroll ngang, (2) prioritize = giữ KPI cards + hero chart + 1 breakdown — VP cần top insights, không cần tất cả 7 visuals, (3) dropdown thay slicer = tiết kiệm diện tích, tap để filter, (4) kết hợp tốt nhất của A (layout) và C (prioritize)
- A sai một phần — 1-column tốt nhưng không prioritize → 7 visuals scroll dài, VP phải scroll quá nhiều
- B sai vì: Scale down 50% = chữ bé, chart nhỏ, không đọc được. Mobile ≠ miniature desktop
- C sai một phần — Prioritize tốt nhưng vẫn layout ngang → scroll ngang trên tablet
XP: +15 | Bonus: +2 (no hint), +3 (đúng lý do)
📊 Vòng 7: "Dashboard cho 500 Sales Reps — RLS + Personalization" ⭐⭐⭐ Khó
VP Sales muốn 1 "My Performance" dashboard cho 500 sales reps — mỗi người chỉ thấy data của mình.
💬 Email từ VP Sales:
"Tôi muốn EVERY sales rep có dashboard riêng: thấy pipeline, quota attainment, deals CỦA HỌ. Manager thấy data team. VP thấy all. Nhưng chỉ build 1 dashboard, không 500 dashboard."
Yêu cầu:
📋 Dashboard Brief:
━━━━━━━━━━━━━━━━━━━
Audience: 500 sales reps + 30 managers + 5 VPs
Mục đích: Personalized performance view — mỗi người thấy data CỦA HỌ
Security: Rep thấy mình, Manager thấy team, VP thấy all
Constraint: Build 1 dashboard, NOT 500 versionsLựa chọn:
| Approach | Mô tả | |
|---|---|---|
| A | 500 separate .pbix files | Copy paste 500 lần, mỗi file filter cho 1 rep |
| B | 1 dashboard + slicer "Select your name" | Dropdown chọn tên — ai cũng thấy data người khác |
| C | 1 dashboard + Row-Level Security (RLS) | RLS rule: [owner_email] = USERPRINCIPALNAME(). 1 dashboard, Power BI tự filter theo login |
| D | 30 dashboards (1 per manager) | Mỗi manager 1 file, share cho team |
💡 Hint (−2 XP)
Keyword: mỗi người thấy data CỦA HỌ, build 1 dashboard. Power BI có Row-Level Security (RLS) — define rule dựa trên user identity. Khi rep A login → Power BI tự filter chỉ hiển thị data của rep A. Không cần build nhiều file. Không cần slicer (slicer = ai cũng thấy data người khác).
Đáp án & Giải thích
✅ Đáp án đúng: C — 1 dashboard + Row-Level Security (RLS)
Lý do:
- C đúng vì: (1) RLS = Power BI tự filter data theo user identity — rep A login → thấy data rep A, (2) 1 dashboard for all — maintainable, consistent, (3) hierarchy RLS: rep thấy mình, manager thấy team, VP thấy all — configure role hierarchy, (4) scalable — 500 hay 5000 users, vẫn 1 file .pbix
- A sai vì: 500 files = unmaintainable nightmare. Update 1 measure → phải update 500 files. Impossible
- B sai vì: Slicer dropdown = no security — rep A chọn tên rep B → thấy data rep B. Vi phạm data privacy. Thảm họa nếu có salary/commission data
- D sai vì: 30 files vẫn nhiều, vẫn khó maintain. Và rep vẫn thấy data của team members (không có per-rep security)
XP: +15 | Bonus: +2 (no hint), +3 (đúng lý do)
🏁 Tổng kết
Dashboard Design Decision Guide
| Audience | Layout | Key Visuals | Interactivity |
|---|---|---|---|
| CEO (phone, 30s) | KPI cards first, minimal | Cards + sparklines | Tap → drill-down |
| VP/Director (tablet, 5 min) | Overview + drillthrough | Cards + hero chart + breakdown | Cross-filter + drillthrough |
| Manager (laptop, 15 min) | Comparison + detail | Bar (sorted) + table + slicer per person | Slicer + sort + export |
| Analyst (laptop, 30+ min) | Multi-page, granular | All chart types + detailed table | Full interactivity + bookmarks |
| 500+ users | 1 dashboard + RLS | Same layout, personalized data | RLS + hierarchy |
Nguyên tắc vàng
┌─────────────────────────────────────────────────────────┐
│ 1. AUDIENCE FIRST — thiết kế cho người xem, không cho mình │
│ 2. KPI CARDS ở trên cùng — số quan trọng nhất nhìn đầu tiên │
│ 3. ≤ 8 VISUALS per page — Less is More │
│ 4. PROGRESSIVE DISCLOSURE — overview → drill → detail │
│ 5. MOBILE ≠ MINIATURE — re-design, không scale down │
│ 6. RLS cho multi-user — 1 dashboard, personalized data │
│ 7. MEASURE > CALCULATED COLUMN cho dynamic calculations │
└─────────────────────────────────────────────────────────┘Tiếp theo
Bạn đã biết thiết kế dashboard cho đúng audience và mục đích. Giờ hãy tự tay xây dashboard tương tác trong Workshop — Xây Dashboard Tương tác — từ import data đến publish! 🚀
💡 Sau game này
- ✅ Bạn biết design dashboard cho CEO (KPI cards), Manager (comparison), Analyst (granular)
- ✅ Bạn hiểu progressive disclosure: overview → drillthrough → detail
- ✅ Bạn phân biệt measure vs calculated column cho dynamic calculations
- ✅ Bạn biết mobile design ≠ shrink desktop, RLS cho multi-user security
- → Sẵn sàng cho Workshop: xây dashboard Power BI / Tableau từ đầu!