Skip to content

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

  1. Import data, tạo data model (relationships) trong Power BI / Tableau
  2. Tạo dashboard tương tác: measures, calculated columns, filters
  3. Sử dụng DAX / Tableau calculations cơ bản
  4. 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ốngPython/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 emailSếp mở app, xem KPI card real-time
Filter theo vùng miềnSửa code df[df['region']=='HCM'], re-runClick slicer "TP.HCM" — tất cả chart tự cập nhật
Drill-down từ tổng → chi tiếtCode mới cho mỗi levelClick vào cột → tự zoom vào chi tiết
Share cho team 50 ngườiEmail 50 file Excel khác nhau1 link dashboard, ai cũng xem real-time
Data thay đổi hàng ngàyRe-run notebook mỗi sángScheduled 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 BITableauLookerMetabase
Giá$10/user/month (Pro)$70/user/month (Creator)CustomFree (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ầnVai tròAi dùng?
Power BI DesktopTạo data model, viết DAX, xây reportData Analyst — bạn
Power BI ServicePublish, chia sẻ, schedule refresh, quản lý workspaceDA + IT Admin
Power BI MobileXem dashboard trên điện thoạiManager, CEO, Sales team

Tableau Architecture

Tableau có kiến trúc tương tự nhưng khác về tên gọi:

Power BITableauVai trò
Power BI DesktopTableau DesktopBuild report
Power QueryTableau PrepData transformation
DAXCalculated Fields + LODTính toán
Power BI ServiceTableau Server / CloudPublish & share
WorkspaceSite / ProjectQuả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 endpoint

Power 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ácPandas (Python)Power Query (Power BI)
Đọc filepd.read_csv("file.csv")Get Data → Text/CSV
Đổi tên cộtdf.rename(columns={...})Right-click column → Rename
Đổi kiểu dữ liệudf['col'].astype(int)Click icon cột → Change Type
Filter rowsdf[df['status'] == 'Active']Click dropdown → Filter
Merge tablespd.merge(df1, df2, on='key')Merge Queries → Select key
Unpivotpd.melt(df, ...)Select columns → Unpivot
Tạo cột mớidf['new'] = df['a'] + df['b']Add Column → Custom Column
Xóa duplicatesdf.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ệmGiải thíchVí dụ
Fact TableBảng chứa số liệu đo lường (measures) — thường rất lớnFACT_SALES: revenue, quantity, profit
Dimension TableBảng chứa thuộc tính mô tả — dùng để filter/groupDIM_PRODUCT: category, name; DIM_DATE: year, quarter
RelationshipLiên kết Fact ↔ Dimension qua keyFACT_SALES.product_idDIM_PRODUCT.product_id
Cardinality1-to-Many: 1 product → nhiều sales recordsDIM_PRODUCT (1)FACT_SALES (*)
Filter DirectionSingle = Dim filter Fact; Both = filter 2 chiềuMặc định: Single (Dim → Fact)

📌 Tại sao Star Schema quan trọng?

  1. Performance — BI engine optimize cho star schema, query nhanh hơn 10-100x so với flat table
  2. DAX hoạt động đúng — measures tính toán dựa trên filter context từ dimensions
  3. Flexibility — thêm dimension mới (ví dụ: DIM_STORE) mà không cần sửa fact table
  4. Consistency — cùng 1 DIM_DATE dù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 ColumnMeasure
Khi nào tínhKhi data load (static)Khi user interact (dynamic)
Lưu ở đâuTrong bảng — thêm 1 cột mớiKhông lưu — tính on-the-fly
Filter contextKhông thay đổiThay đổi theo slicer/filter
Dùng khiCầ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ênTố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

CALCULATEfunction 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.HCM
  • CALCULATE(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 đíchDAX (Power BI)Tableau Calculated Field
Tổng doanh thuSUM(FACT_SALES[Revenue])SUM([Revenue])
AverageAVERAGE(FACT_SALES[Revenue])AVG([Revenue])
Count distinctDISTINCTCOUNT(Sales[customer_id])COUNTD([Customer ID])
ConditionalCALCULATE(SUM(...), Region="HCM")IF [Region]="HCM" THEN [Revenue] END
YoY GrowthSAMEPERIODLASTYEAR(...)Table Calculation → Percent Difference
LOD ExpressionKhông có (dùng CALCULATE){FIXED [Region]: SUM([Revenue])}

Standard Visuals trong Power BI / Tableau

VisualDùng khiPower BITableau
KPI CardHiển thị 1 số quan trọngCard visualText / BAN
Bar ChartSo sánh categoriesClustered barBar chart
Line ChartTrend theo thời gianLine chartLine chart
Pie / DonutComposition (≤ 5 parts)Donut chartPie chart
Table / MatrixChi tiết + subtotalsMatrix visualText table
MapDữ liệu theo địa lýFilled Map / ArcGISMap / Symbol Map
ScatterRelationship 2 biếnScatter chartScatter plot
TreemapHierarchical compositionTreemapTreemap

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 Electronics

Drill-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 → Store

Tooltip: 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:

  1. Top — KPI cards: Revenue, Orders, AOV, Growth (số quan trọng nhất, nhìn đầu tiên)
  2. Middle-left — Trend chart: xu hướng theo thời gian (câu chuyện chính)
  3. Middle-right — Breakdown chart: phân bổ theo category
  4. 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:

  1. File → Publish → Chọn Workspace trên Power BI Service
  2. Mở app.powerbi.com → tìm report vừa publish
  3. Share → nhập email người nhận → chọn quyền (View / Edit)
  4. 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ệtEnglishGiải thích
Mô hình dữ liệuData ModelCấu trúc các bảng + relationships trong BI — star schema
Thước đoMeasurePhép tính DAX dynamic — thay đổi theo filter context
Bảng điều khiển tương tácInteractive DashboardDashboard cho phép user click, filter, drill-down
Chuyển đổi dữ liệuData TransformationQuá trình clean/reshape data — Power Query / Tableau Prep
Khoan sâuDrill-downĐi từ tổng quát → chi tiết theo hierarchy (Year → Month)
Cột tính toánCalculated ColumnCột mới trong bảng, tính khi data load (static)
Lọc chéoCross-filterClick visual A → visual B tự filter theo selection
Lập lịch làm mớiScheduled RefreshTự động cập nhật data theo lịch (daily, hourly)
Bảo mật cấp hàngRow-Level SecurityGiới hạn data hiển thị theo role/user
Lược đồ hình saoStar SchemaMô 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ệu

Bạ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

  1. Power BI Documentation — Microsoft Learn — Tài liệu chính thức, đầy đủ nhất
  2. DAX Guide — Tra cứu tất cả DAX functions với ví dụ
  3. SQLBI — DAX Patterns — Patterns DAX cho các use case phổ biến
  4. Tableau Public Gallery — Hàng nghìn dashboard mẫu để học hỏi
  5. Power BI Community — Forum hỏi đáp Power BI
  6. The Big Book of Dashboards — Steve Wexler — 28 dashboard patterns thực tế
  7. Microsoft PL-300 Exam Guide — Lộ trình thi chứng chỉ Power BI
  8. Tableau Prep Documentation — Hướng dẫn Tableau Prep Builder