Appearance
📘 Buổi 11: Power BI / Tableau — Dashboard tương tác
Excel dashboard = tĩnh. BI dashboard = tương tác, real-time, share được. Từ hôm nay, bạn chuyển từ "người làm chart" sang "người xây dashboard."
🎯 Mục tiêu buổi học
Sau buổi này, học viên sẽ:
- Import data, tạo data model (relationships) trong Power BI / Tableau
- Tạo dashboard tương tác: measures, calculated columns, filters
- Sử dụng DAX / Tableau calculations cơ bản
- Publish và share dashboard
📋 Tổng quan
Ở Buổi 10, bạn đã master Matplotlib & Seaborn — tạo publication-quality charts trong Python. Nhưng mỗi lần sếp hỏi "số liệu mới nhất?", bạn lại mở Jupyter, chạy lại code, export chart, paste vào slide, rồi gửi email. Mất 30 phút mỗi lần. Nếu sếp muốn filter theo vùng miền? Theo quý? Theo danh mục? Mỗi câu hỏi = 30 phút nữa.
BI Tools giải quyết vấn đề đó. Power BI và Tableau cho phép bạn xây dashboard tương tác — sếp tự click filter, tự drill-down, tự xem KPI real-time. Bạn build 1 lần, stakeholders dùng mãi. Dashboard auto-refresh khi data thay đổi. Đó là sự khác biệt giữa DA làm báo cáo và DA xây hệ thống.
Trong hành trình OSEMN, Buổi 7–9 là Obtain → Scrub → Explore, Buổi 10 là iNterpret bằng chart tĩnh. Buổi 11 nâng cấp iNterpret lên interactive level — người xem tự khám phá data thay vì đọc chart cố định.
mermaid
flowchart LR
A["📥 Obtain<br/>Buổi 7: Python"] --> B["🧹 Scrub<br/>Buổi 8: Pandas"]
B --> C["🔍 Explore<br/>Buổi 9: EDA"]
C --> D["📊 iNterpret<br/>Buổi 10: Chart tĩnh"]
D --> E["📱 iNterpret+<br/>✅ Buổi 11: BI Dashboard"]
E --> F["📖 Storytelling<br/>Buổi 12+"]
style E fill:#e8f5e9,stroke:#4caf50,stroke-width:3px💡 Tại sao cần BI Dashboard?
| Tình huống | Python/Excel (tĩnh) | BI Dashboard (tương tác) |
|---|---|---|
| Sếp hỏi "doanh thu tháng này?" | Mở notebook, chạy code, export PNG, gửi email | Sếp mở app, xem KPI card real-time |
| Filter theo vùng miền | Sửa code df[df['region']=='HCM'], re-run | Click slicer "TP.HCM" — tất cả chart tự cập nhật |
| Drill-down từ tổng → chi tiết | Code mới cho mỗi level | Click vào cột → tự zoom vào chi tiết |
| Share cho team 50 người | Email 50 file Excel khác nhau | 1 link dashboard, ai cũng xem real-time |
| Data thay đổi hàng ngày | Re-run notebook mỗi sáng | Scheduled refresh — tự chạy 6AM mỗi ngày |
BI Tools Landscape — Power BI vs Tableau vs Looker vs Metabase
Trước khi chọn tool, hãy hiểu bức tranh toàn cảnh của thị trường BI:
mermaid
flowchart TD
A["🏢 BI Tools Market"] --> B["💰 Enterprise<br/>(License)"]
A --> C["🆓 Open Source<br/>(Free)"]
B --> D["Power BI<br/>Microsoft · $10/user/mo<br/>⭐ #1 Enterprise"]
B --> E["Tableau<br/>Salesforce · $70/user/mo<br/>⭐ Best Viz"]
B --> F["Looker<br/>Google · Custom pricing<br/>⭐ Best for BigQuery"]
C --> G["Metabase<br/>Free self-host<br/>⭐ Quick Start"]
C --> H["Apache Superset<br/>Free · Python-based<br/>⭐ Tech Teams"]| Tiêu chí | Power BI | Tableau | Looker | Metabase |
|---|---|---|---|---|
| Giá | $10/user/month (Pro) | $70/user/month (Creator) | Custom | Free (self-host) |
| Học dễ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ |
| Visualization | ⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐ |
| Data Modeling | ⭐⭐⭐⭐⭐ (DAX) | ⭐⭐⭐⭐ (LOD) | ⭐⭐⭐⭐ (LookML) | ⭐⭐ |
| Tích hợp Microsoft | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐ |
| Phổ biến VN | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ |
📌 Tại sao buổi này tập trung Power BI?
- Phổ biến nhất tại Việt Nam — 80%+ doanh nghiệp dùng Microsoft 365 → Power BI tích hợp sẵn
- Miễn phí cho cá nhân — Power BI Desktop hoàn toàn free
- DAX language — mạnh mẽ cho tính toán business metrics
- Chứng chỉ PL-300 — được công nhận toàn cầu, tăng giá trị CV
Tuy nhiên, mọi concept (data model, measures, dashboard design) áp dụng cho TẤT CẢ BI tools. Học Power BI → dễ dàng chuyển sang Tableau/Looker.
📌 Phần 1: Giới thiệu BI Tools — Kiến trúc & Workflow
Power BI Architecture — 3 thành phần chính
Power BI không phải chỉ 1 app — nó là hệ sinh thái gồm 3 thành phần:
mermaid
flowchart LR
A["🖥️ Power BI Desktop<br/>Build reports<br/>Free · Windows only"] --> B["☁️ Power BI Service<br/>Publish & Share<br/>Pro: $10/user/mo"]
B --> C["📱 Power BI Mobile<br/>View on phone<br/>Free app"]
D["📊 Data Sources<br/>CSV, Excel, SQL,<br/>API, SharePoint"] --> A
B --> E["👥 Stakeholders<br/>View & Interact<br/>via browser"]| Thành phần | Vai trò | Ai dùng? |
|---|---|---|
| Power BI Desktop | Tạo data model, viết DAX, xây report | Data Analyst — bạn |
| Power BI Service | Publish, chia sẻ, schedule refresh, quản lý workspace | DA + IT Admin |
| Power BI Mobile | Xem dashboard trên điện thoại | Manager, CEO, Sales team |
Tableau Architecture
Tableau có kiến trúc tương tự nhưng khác về tên gọi:
| Power BI | Tableau | Vai trò |
|---|---|---|
| Power BI Desktop | Tableau Desktop | Build report |
| Power Query | Tableau Prep | Data transformation |
| DAX | Calculated Fields + LOD | Tính toán |
| Power BI Service | Tableau Server / Cloud | Publish & share |
| Workspace | Site / Project | Quản lý |
Workflow chuẩn trong Power BI
mermaid
flowchart TD
A["1️⃣ Get Data<br/>Import CSV, Excel,<br/>SQL Server, API"] --> B["2️⃣ Transform Data<br/>Power Query: clean,<br/>rename, merge, unpivot"]
B --> C["3️⃣ Data Model<br/>Tạo relationships,<br/>star schema"]
C --> D["4️⃣ DAX Measures<br/>SUM, AVERAGE,<br/>CALCULATE, FILTER"]
D --> E["5️⃣ Visualizations<br/>Charts, KPI cards,<br/>tables, maps"]
E --> F["6️⃣ Dashboard Design<br/>Layout, filters,<br/>drill-down, tooltips"]
F --> G["7️⃣ Publish & Share<br/>Power BI Service,<br/>scheduled refresh"]📌 Phần 2: Data Model — Import, Relationships, Star Schema
Import Data vào Power BI
Power BI hỗ trợ 70+ data sources — từ file CSV đến cloud databases. Cách phổ biến nhất:
📁 Nguồn data phổ biến cho BI Dashboard:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
CSV / Excel → Get Data → Text/CSV → Load
SQL Server → Get Data → SQL Server → Write Query → Load
Google Sheets → Get Data → Web → Paste URL
API / JSON → Get Data → Web → Paste API endpointPower Query — Data Transformation
Power Query là ETL engine tích hợp trong Power BI — tương tự Pandas nhưng giao diện GUI:
| Thao tác | Pandas (Python) | Power Query (Power BI) |
|---|---|---|
| Đọc file | pd.read_csv("file.csv") | Get Data → Text/CSV |
| Đổi tên cột | df.rename(columns={...}) | Right-click column → Rename |
| Đổi kiểu dữ liệu | df['col'].astype(int) | Click icon cột → Change Type |
| Filter rows | df[df['status'] == 'Active'] | Click dropdown → Filter |
| Merge tables | pd.merge(df1, df2, on='key') | Merge Queries → Select key |
| Unpivot | pd.melt(df, ...) | Select columns → Unpivot |
| Tạo cột mới | df['new'] = df['a'] + df['b'] | Add Column → Custom Column |
| Xóa duplicates | df.drop_duplicates() | Remove Rows → Remove Duplicates |
⚠️ Power Query vs DAX — Khi nào dùng cái nào?
- Power Query = transformation trước khi load → clean data, merge tables, change types
- DAX = calculation sau khi load → tạo measures, calculated columns trong data model
Rule: Clean ở Power Query, Calculate ở DAX. Đừng dùng DAX để clean data — chậm và khó maintain.
Data Model — Relationships & Star Schema
Data model là trái tim của mọi BI dashboard. Nó định nghĩa cách các bảng liên kết với nhau — giống như database schema nhưng optimized cho analytics.
mermaid
erDiagram
DIM_PRODUCT {
int product_id PK
string product_name
string category
string sub_category
}
DIM_CUSTOMER {
int customer_id PK
string customer_name
string segment
string region
}
DIM_DATE {
date date_key PK
int year
int quarter
string month_name
int day_of_week
}
FACT_SALES {
int order_id PK
int product_id FK
int customer_id FK
date order_date FK
int quantity
float revenue
float cost
float profit
}
FACT_SALES ||--o{ DIM_PRODUCT : "product_id"
FACT_SALES ||--o{ DIM_CUSTOMER : "customer_id"
FACT_SALES ||--o{ DIM_DATE : "order_date = date_key"Star Schema — mô hình chuẩn cho BI:
| Khái niệm | Giải thích | Ví dụ |
|---|---|---|
| Fact Table | Bảng chứa số liệu đo lường (measures) — thường rất lớn | FACT_SALES: revenue, quantity, profit |
| Dimension Table | Bảng chứa thuộc tính mô tả — dùng để filter/group | DIM_PRODUCT: category, name; DIM_DATE: year, quarter |
| Relationship | Liên kết Fact ↔ Dimension qua key | FACT_SALES.product_id → DIM_PRODUCT.product_id |
| Cardinality | 1-to-Many: 1 product → nhiều sales records | DIM_PRODUCT (1) → FACT_SALES (*) |
| Filter Direction | Single = Dim filter Fact; Both = filter 2 chiều | Mặc định: Single (Dim → Fact) |
📌 Tại sao Star Schema quan trọng?
- Performance — BI engine optimize cho star schema, query nhanh hơn 10-100x so với flat table
- DAX hoạt động đúng — measures tính toán dựa trên filter context từ dimensions
- Flexibility — thêm dimension mới (ví dụ:
DIM_STORE) mà không cần sửa fact table - Consistency — cùng 1
DIM_DATEdùng cho mọi fact table → filter theo thời gian nhất quán
Rule of thumb: Nếu cột là text/category → đưa vào Dimension. Nếu cột là số đo lường → giữ trong Fact.
Tạo Relationships trong Power BI
Bước tạo relationship:
━━━━━━━━━━━━━━━━━━━━
1. Vào tab "Model" (bên trái)
2. Kéo trường từ Fact table thả vào Dimension table
Ví dụ: kéo FACT_SALES.product_id → DIM_PRODUCT.product_id
3. Power BI tự detect: Cardinality (Many-to-One), Direction (Single)
4. Kiểm tra: đường nối hiện "* ─── 1" = Many-to-One ✅
5. Lặp lại cho tất cả dimension tables📌 Phần 3: Visualizations & Measures — DAX cơ bản
DAX — Data Analysis Expressions
DAX là ngôn ngữ tính toán của Power BI — tương tự Excel formulas nhưng mạnh hơn nhiều vì nó hoạt động trên toàn bộ data model, không chỉ 1 sheet.
Calculated Column vs Measure — Khác nhau cơ bản
| Calculated Column | Measure | |
|---|---|---|
| Khi nào tính | Khi data load (static) | Khi user interact (dynamic) |
| Lưu ở đâu | Trong bảng — thêm 1 cột mới | Không lưu — tính on-the-fly |
| Filter context | Không thay đổi | Thay đổi theo slicer/filter |
| Dùng khi | Cần group/sort (ví dụ: Age Group) | Cần aggregate (ví dụ: Total Revenue) |
| Ví dụ | Age Group = IF(Age < 30, "Young", "Senior") | Total Revenue = SUM(Sales[Revenue]) |
| Tốn tài nguyên | Tốn RAM (lưu mỗi row) | Nhẹ (tính khi cần) |
⚠️ Rule vàng: Dùng Measure thay Calculated Column bất cứ khi nào có thể
Calculated column tốn RAM vì lưu giá trị cho mỗi row. Measure chỉ tính khi user tương tác. 90% trường hợp bạn cần Measure, không phải Calculated Column.
DAX Measures cơ bản
dax
// ═══════════════════════════════════════════
// MEASURES CƠ BẢN — Bắt đầu từ đây
// ═══════════════════════════════════════════
// 1. SUM — Tổng doanh thu
Total Revenue = SUM(FACT_SALES[Revenue])
// 2. AVERAGE — Giá trị đơn hàng trung bình (AOV)
AOV = AVERAGE(FACT_SALES[Revenue])
// 3. COUNT — Đếm số đơn hàng
Total Orders = COUNTROWS(FACT_SALES)
// 4. DISTINCTCOUNT — Đếm số khách hàng unique
Total Customers = DISTINCTCOUNT(FACT_SALES[customer_id])
// 5. DIVIDE — Chia an toàn (tránh lỗi chia cho 0)
Revenue Per Customer = DIVIDE([Total Revenue], [Total Customers], 0)DAX Measures nâng cao — CALCULATE & FILTER
CALCULATE là function quan trọng nhất trong DAX — nó cho phép bạn thay đổi filter context khi tính toán:
dax
// ═══════════════════════════════════════════
// CALCULATE — Thay đổi filter context
// ═══════════════════════════════════════════
// Revenue chỉ tính cho khu vực TP.HCM
Revenue HCM =
CALCULATE(
SUM(FACT_SALES[Revenue]),
DIM_CUSTOMER[region] = "TP.HCM"
)
// Revenue năm trước (Previous Year)
Revenue PY =
CALCULATE(
[Total Revenue],
SAMEPERIODLASTYEAR(DIM_DATE[date_key])
)
// Year-over-Year Growth %
YoY Growth % =
DIVIDE(
[Total Revenue] - [Revenue PY],
[Revenue PY],
0
)
// Revenue chỉ tính cho đơn hàng > 1 triệu
Revenue Premium =
CALCULATE(
SUM(FACT_SALES[Revenue]),
FACT_SALES[Revenue] > 1000000
)💡 CALCULATE hoạt động như thế nào?
Hãy nghĩ CALCULATE = "Tính cái này, NHƯNG chỉ cho dữ liệu thỏa điều kiện"
CALCULATE(
<what to calculate>, ← expression: SUM, AVERAGE, COUNT...
<filter 1>, ← điều kiện 1
<filter 2>, ← điều kiện 2 (AND logic)
...
)Ví dụ thực tế:
CALCULATE(SUM(Revenue), Region = "HCM")→ Tổng doanh thu, nhưng chỉ TP.HCMCALCULATE(SUM(Revenue), Year = 2025, Category = "Electronics")→ Tổng doanh thu, nhưng chỉ 2025 + Electronics
Tableau Calculated Fields — So sánh với DAX
Nếu bạn dùng Tableau thay vì Power BI, đây là các phép tính tương đương:
| Mục đích | DAX (Power BI) | Tableau Calculated Field |
|---|---|---|
| Tổng doanh thu | SUM(FACT_SALES[Revenue]) | SUM([Revenue]) |
| Average | AVERAGE(FACT_SALES[Revenue]) | AVG([Revenue]) |
| Count distinct | DISTINCTCOUNT(Sales[customer_id]) | COUNTD([Customer ID]) |
| Conditional | CALCULATE(SUM(...), Region="HCM") | IF [Region]="HCM" THEN [Revenue] END |
| YoY Growth | SAMEPERIODLASTYEAR(...) | Table Calculation → Percent Difference |
| LOD Expression | Không có (dùng CALCULATE) | {FIXED [Region]: SUM([Revenue])} |
Standard Visuals trong Power BI / Tableau
| Visual | Dùng khi | Power BI | Tableau |
|---|---|---|---|
| KPI Card | Hiển thị 1 số quan trọng | Card visual | Text / BAN |
| Bar Chart | So sánh categories | Clustered bar | Bar chart |
| Line Chart | Trend theo thời gian | Line chart | Line chart |
| Pie / Donut | Composition (≤ 5 parts) | Donut chart | Pie chart |
| Table / Matrix | Chi tiết + subtotals | Matrix visual | Text table |
| Map | Dữ liệu theo địa lý | Filled Map / ArcGIS | Map / Symbol Map |
| Scatter | Relationship 2 biến | Scatter chart | Scatter plot |
| Treemap | Hierarchical composition | Treemap | Treemap |
Interactivity — Tooltip, Drill-down, Cross-filter
Đây là sức mạnh thực sự của BI dashboard — tương tác:
Cross-filter: Click vào 1 visual → tất cả visual khác tự filter theo selection đó.
Ví dụ: Click "Electronics" trên bar chart
→ Line chart tự filter chỉ hiện trend Electronics
→ Map tự highlight vùng miền bán Electronics
→ KPI card tự cập nhật revenue ElectronicsDrill-down: Đi sâu từ tổng quát → chi tiết theo hierarchy.
Year → Quarter → Month → Day
Category → Sub-Category → Product
Country → Region → City → StoreTooltip: Hover lên data point → hiện thông tin chi tiết.
Hover lên cột "TP.HCM":
┌─────────────────────────┐
│ TP.HCM │
│ Revenue: 15.2B VND │
│ Orders: 42,350 │
│ AOV: 358K VND │
│ YoY Growth: +18% │
│ Top Product: iPhone 15 │
└─────────────────────────┘📌 Cross-filter behavior — Kiểm soát tương tác
Mặc định, click vào visual A sẽ filter visual B. Nhưng bạn có thể thay đổi:
- Filter — visual B chỉ hiện data matching selection
- Highlight — visual B highlight matching, dim phần còn lại
- None — visual B không bị ảnh hưởng
Cách thay đổi: chọn visual A → Format → Edit Interactions → chọn icon filter/highlight/none trên visual B.
📌 Phần 4: Dashboard Design & Publishing
Dashboard Design Principles
Một dashboard tốt tuân theo 5 nguyên tắc thiết kế:
mermaid
flowchart TD
A["📐 Dashboard Design Principles"] --> B["1️⃣ One Story<br/>Dashboard kể 1 câu chuyện<br/>không phải dump data"]
A --> C["2️⃣ Z-Pattern Layout<br/>Mắt đọc: trên-trái → trên-phải<br/>→ dưới-trái → dưới-phải"]
A --> D["3️⃣ Less is More<br/>5-8 visuals max<br/>Mỗi visual trả lời 1 câu hỏi"]
A --> E["4️⃣ KPI First<br/>Số quan trọng nhất ở trên cùng<br/>KPI cards + trend indicator"]
A --> F["5️⃣ Interactive ≠ Phức tạp<br/>Filter đơn giản, drill path rõ<br/>User test trước khi publish"]Layout chuẩn cho Business Dashboard
┌─────────────────────────────────────────────────────────┐
│ 📊 Sales Dashboard — FY2025 [Filter: Region ▼] │
├──────────┬──────────┬──────────┬───────────────────────── │
│ Revenue │ Orders │ AOV │ YoY Growth │
│ 15.2B │ 42,350 │ 358K │ +18% ▲ │
│ ▲ +18% │ ▲ +12% │ ▲ +5% │ │
├──────────┴──────────┴──────────┴──────────────────────── │
│ 📈 Revenue Trend (Line) │ 📊 Revenue by Category │
│ ┌──────────────────┐ │ ┌──────────────────┐ │
│ │ /\ /\ │ │ │ ████████ Elec │ │
│ │ / \ / \ / │ │ │ ██████ Fashion │ │
│ │ / \/ \/ │ │ │ █████ Food │ │
│ └──────────────────┘ │ └──────────────────┘ │
├──────────────────────────────────┴────────────────────── │
│ 🗺️ Revenue by Region (Map) │ 📋 Top Products Table │
│ ┌──────────────────┐ │ ┌──────────────────┐ │
│ │ ○ HN ● HCM │ │ │ Product | Rev │ │
│ │ ○ DN │ │ │ iPhone | 2.1B │ │
│ └──────────────────┘ │ └──────────────────┘ │
└─────────────────────────────────────────────────────────┘Z-Pattern Reading Order:
- Top — KPI cards: Revenue, Orders, AOV, Growth (số quan trọng nhất, nhìn đầu tiên)
- Middle-left — Trend chart: xu hướng theo thời gian (câu chuyện chính)
- Middle-right — Breakdown chart: phân bổ theo category
- Bottom — Supporting visuals: map, table chi tiết
Mobile Responsive
Power BI hỗ trợ mobile layout — thiết kế riêng cho điện thoại:
Desktop (1280×720) Mobile (375×812)
┌─────────────────┐ ┌──────────┐
│ KPI KPI KPI KPI │ │ KPI │
│ ────────────────│ │ KPI │
│ Chart │ Chart │ │ KPI │
│ │ │ │ ─────────│
│ ────────────────│ │ Chart │
│ Map │ Table │ │ │
└─────────────────┘ │ ─────────│
│ Chart │
│ │
│ ─────────│
│ Table │
└──────────┘Cách tạo: View → Mobile Layout → kéo thả visuals vào phone canvas.
Publish & Share
mermaid
flowchart LR
A["🖥️ Power BI Desktop<br/>.pbix file"] -->|"Publish"| B["☁️ Power BI Service<br/>app.powerbi.com"]
B -->|"Share link"| C["👥 Stakeholders<br/>View in browser"]
B -->|"Embed"| D["🌐 Website / Teams<br/>Iframe embed"]
B -->|"Schedule Refresh"| E["🔄 Auto Refresh<br/>Daily / Hourly"]
B -->|"Export"| F["📄 PDF / PPT<br/>Static export"]Các bước publish:
- File → Publish → Chọn Workspace trên Power BI Service
- Mở app.powerbi.com → tìm report vừa publish
- Share → nhập email người nhận → chọn quyền (View / Edit)
- Hoặc: Create App → bundle nhiều reports vào 1 app cho team
Scheduled Refresh:
Settings → Dataset → Scheduled Refresh:
✅ Keep your data up to date
Refresh frequency: Daily
Time: 06:00 AM
Time zone: (UTC+07:00) Bangkok, Hanoi, Jakarta
Gateway: On-premises data gateway (nếu data từ local server)⚠️ Lưu ý khi Publish
- Power BI Pro license ($10/user/month) cần cho người viewer (không chỉ người tạo)
- Row-Level Security (RLS) — giới hạn data theo user. VD: Sales Manager HN chỉ thấy data HN
- Data sensitivity — đừng share dashboard có dữ liệu nhạy cảm (lương, thông tin cá nhân) ra ngoài tổ chức
- Scheduled refresh cần data gateway nếu data source ở on-premises (SQL Server local). Cloud sources (SharePoint, Google Sheets) refresh trực tiếp.
🔑 Từ khóa chính
| Tiếng Việt | English | Giải thích |
|---|---|---|
| Mô hình dữ liệu | Data Model | Cấu trúc các bảng + relationships trong BI — star schema |
| Thước đo | Measure | Phép tính DAX dynamic — thay đổi theo filter context |
| Bảng điều khiển tương tác | Interactive Dashboard | Dashboard cho phép user click, filter, drill-down |
| Chuyển đổi dữ liệu | Data Transformation | Quá trình clean/reshape data — Power Query / Tableau Prep |
| Khoan sâu | Drill-down | Đi từ tổng quát → chi tiết theo hierarchy (Year → Month) |
| Cột tính toán | Calculated Column | Cột mới trong bảng, tính khi data load (static) |
| Lọc chéo | Cross-filter | Click visual A → visual B tự filter theo selection |
| Lập lịch làm mới | Scheduled Refresh | Tự động cập nhật data theo lịch (daily, hourly) |
| Bảo mật cấp hàng | Row-Level Security | Giới hạn data hiển thị theo role/user |
| Lược đồ hình sao | Star Schema | Mô hình data: 1 fact table + nhiều dimension tables |
📊 Tổng kết buổi học
✅ Checklist — Bạn đã nắm được
- [ ] Hiểu BI landscape: Power BI vs Tableau vs Looker vs Metabase
- [ ] Phân biệt Power BI Desktop / Service / Mobile
- [ ] Import data vào Power BI từ CSV, Excel, SQL
- [ ] Sử dụng Power Query để transform data (rename, filter, merge, change type)
- [ ] Tạo data model: relationships, star schema (fact + dimension)
- [ ] Viết DAX cơ bản: SUM, AVERAGE, COUNT, DISTINCTCOUNT, DIVIDE
- [ ] Viết DAX nâng cao: CALCULATE với filter context
- [ ] Phân biệt Calculated Column vs Measure — khi nào dùng cái nào
- [ ] Tạo visuals: KPI card, bar, line, donut, map, table/matrix
- [ ] Thiết lập interactivity: cross-filter, drill-down, tooltip
- [ ] Thiết kế dashboard theo Z-pattern, KPI first, less is more
- [ ] Tạo mobile layout
- [ ] Publish lên Power BI Service và share
- [ ] Thiết lập scheduled refresh
🗺️ Hành trình học tập
Buổi 3-4: Excel — Pivot Table, biểu đồ cơ bản
↓
Buổi 5-6: SQL — Query, JOIN, GROUP BY, Window Functions
↓
Buổi 7: Python — Lập trình cơ bản, đọc/ghi file
↓
Buổi 8: Pandas & Numpy — Data Cleaning chuyên nghiệp
↓
Buổi 9: EDA — Khám phá dữ liệu, phát hiện insight
↓
Buổi 10: Visualization — Matplotlib & Seaborn chuyên sâu
↓
✅ Buổi 11: Power BI / Tableau — Dashboard tương tác
↓
→ Buổi 12: Storytelling with Data — Kể chuyện bằng dữ liệuBạn vừa bước lên level mới — từ "vẽ chart trong Jupyter Notebook" sang "xây dashboard tương tác mà ai cũng dùng được." Chart tĩnh chỉ phục vụ bạn, dashboard tương tác phục vụ cả tổ chức. Từ buổi sau, bạn sẽ học cách kết hợp charts + dashboards thành một data story hoàn chỉnh — storytelling with data.
🔗 Tài liệu tham khảo
- Power BI Documentation — Microsoft Learn — Tài liệu chính thức, đầy đủ nhất
- DAX Guide — Tra cứu tất cả DAX functions với ví dụ
- SQLBI — DAX Patterns — Patterns DAX cho các use case phổ biến
- Tableau Public Gallery — Hàng nghìn dashboard mẫu để học hỏi
- Power BI Community — Forum hỏi đáp Power BI
- The Big Book of Dashboards — Steve Wexler — 28 dashboard patterns thực tế
- Microsoft PL-300 Exam Guide — Lộ trình thi chứng chỉ Power BI
- Tableau Prep Documentation — Hướng dẫn Tableau Prep Builder