Skip to content

🎮 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ẽ:

  1. Chọn đúng dashboard layout — KPI-first, trend-focused, comparison, detail-drill
  2. Match visual type với mục đích — card cho KPI, line cho trend, bar cho comparison
  3. Thiết kế cho đúng audience — CEO (high-level) vs Manager (detail) vs Analyst (granular)
  4. Áp dụng Z-Pattern — sắp xếp thông tin theo thứ tự ưu tiên
  5. Chọn đúng interactivity — khi nào cross-filter, khi nào drill-down, khi nào slicer
  6. Phân biệt measure vs calculated column — biết khi nào dùng DAX measure
  7. 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ầnXP
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ạngXPMô tả
🥇 Gold — Dashboard Master≥ 80 XPBạn thiết kế dashboard như BI chuyên nghiệp!
🥈 Silver — Visual Thinker≥ 55 XPTố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 XPDashboard vẫn rối — quay lại đọc Buổi 11 nhé!

Huy hiệu đặc biệt

BadgeĐiều kiệnMô tả
🎯 Perfect DesignĐúng 1 vòng + giải thích lý doThiết kế dashboard chính xác!
🔥 Design Streak3 vòng liên tiếp đúngChuỗi dashboard design hoàn hảo!
🧠 UX ThinkerGiải thích đúng lý do ≥ 5 vòngHiểu sâu dashboard design principles!
Speed DesignerHoàn thành 7 vòng trong < 8 phútNhanh như Power BI autolayout!
🏆 Full MarksĐúng tất cả 7 vòngBI Designer huyền thoại!
📱 Mobile ProĐúng vòng mobile designMobile-first mindset!
💡 No Hints HeroKhông dùng hint cả gameDashboard intuition tự nhiên!
🛡️ Comeback DesignerSai 2 vòng đầu, đúng 5 vòng sauKhông bao giờ bỏ cuộc!
🎨 Executive DesignerĐúng vòng CEO/executive dashboardMaster of C-level communication!

🎲 Chỉ số theo dõi

Chỉ sốIconMô 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 seconds

Lựa chọn:

Dashboard DesignMô tả
A📊 4 KPI Cards + trend sparklines4 cards lớn ở trên, mỗi card: số + trend ▲/▼ + sparkline 7 ngày
B📈 4 line charts full-size4 biểu đồ line chi tiết 30 ngày, chiếm full screen
C📋 1 bảng detailTable: Date, Revenue, Orders, AOV, Growth — 30 rows
D🥧 4 pie chartsRevenue 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 rep

Lựa chọn:

Dashboard DesignMô tả
A📊 Horizontal bar chart (sorted) + slicer per repBar 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🗺️ MapPlot 15 reps trên bản đồ theo khu vực phụ trách
D🥧 Pie chartRevenue 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 visibility

Lựa chọn:

Dashboard DesignMô tả
A📊 24 vertical bars24 cột cho 24 tháng
B📈 Line chart + YoY overlayLine 2025 overlay trên line 2024, cùng trục tháng (Jan-Dec)
C🔥 Heatmap calendar24 ô màu (2 hàng × 12 cột), intensity = revenue
D📋 Table24 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 filter

Lựa chọn:

ApproachDAX Example
ACalculated ColumnRev Share = FACT_SALES[Revenue] / SUM(FACT_SALES[Revenue])
BMeasure with CALCULATE + ALLRev Share % = DIVIDE(SUM(Revenue), CALCULATE(SUM(Revenue), ALL(DIM_PRODUCT)))
CPower QueryTính % trong Power Query trước khi load
DBothCalculated 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 dept

Lựa chọn:

Dashboard DesignMô tả
APage 1: 5 KPI card rows (1 row per dept) → Page 2: Department detail (drillthrough)Overview dạng scorecard, click dept → drillthrough page
B1 page duy nhất25 visuals (5 depts × 5 metrics) trên 1 trang
C5 pages riêng biệt1 page per department, không có overview
D1 giant table5 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 scroll

Lựa chọn:

Mobile DesignMô tả
A1-column vertical scrollKPIs → Hero chart → Supporting charts, single column, scroll down
BShrink desktop layoutGiữ nguyên layout desktop, scale down 50%
CRemove half the visualsGiữ 3-4 visuals quan trọng nhất, bỏ phần còn lại
DA + C: 1-column + prioritize1-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 versions

Lựa chọn:

ApproachMô tả
A500 separate .pbix filesCopy paste 500 lần, mỗi file filter cho 1 rep
B1 dashboard + slicer "Select your name"Dropdown chọn tên — ai cũng thấy data người khác
C1 dashboard + Row-Level Security (RLS)RLS rule: [owner_email] = USERPRINCIPALNAME(). 1 dashboard, Power BI tự filter theo login
D30 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

AudienceLayoutKey VisualsInteractivity
CEO (phone, 30s)KPI cards first, minimalCards + sparklinesTap → drill-down
VP/Director (tablet, 5 min)Overview + drillthroughCards + hero chart + breakdownCross-filter + drillthrough
Manager (laptop, 15 min)Comparison + detailBar (sorted) + table + slicer per personSlicer + sort + export
Analyst (laptop, 30+ min)Multi-page, granularAll chart types + detailed tableFull interactivity + bookmarks
500+ users1 dashboard + RLSSame layout, personalized dataRLS + 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!