AI Thực Chiến · Cẩm nang nội bộ

Claude × Power BI

Ra lệnh bằng tiếng Việt trong Claude Code — Power BI tự có kết quả: bảng, quan hệ, DAX measure. Toàn bộ kiến thức từ cài đặt đến thực chiến, đúc kết từ một phiên làm việc thật.

~2 phút
Dựng model từ report trắng
9 measure
DAX Claude tự viết
0 dòng
DAX bạn phải gõ tay

Phần 1

Cơ chế hoạt động

Bạn ra lệnh
Claude Code
Cây cầu
MCP Server
Kết quả
Power BI

MCP (Model Context Protocol) là chuẩn kết nối do Anthropic tạo ra, cho phép Claude "cắm" vào công cụ ngoài. Microsoft phát hành MCP server chính thức cho Power BI: @microsoft/powerbi-modeling-mcp — kết nối vào semantic model của Power BI Desktop (qua cổng XMLA cục bộ) hoặc Fabric cloud.

Connect thật = MCP (cây cầu) + Node.js (nền chạy cầu) + Power BI Desktop đang mở file (đầu bên kia)

Cài MCP mới chỉ dựng xong cây cầu. Thiếu Node thì cầu không chạy. Quên mở Power BI thì cầu nối vào khoảng không — vẫn báo "Connected" nhưng không thấy model.

↑ Về mục lục

Phần 2

Cài đặt — 4 bước cho mỗi máy

⚡ Cách nhanh — chạy file setup.bat

Tải bộ cài về, giải nén → chuột phải setup.bat → Run. Script tự làm các bước 1–3 bên dưới (cài Node, Claude Code, dựng cầu MCP cho cả Claude Code lẫn Claude Desktop). Bạn chỉ còn bước 4 và phần đăng nhập.

Bộ cài nhúng sẵn trong trang này — bấm là tải, không cần mạng nội bộ. Chi tiết: xem Phần 3.

🔗 Nguồn chính thức — copy khi cần

Repo MCP server của Microsoft (tài liệu gốc, các cách cài khác, troubleshooting):

https://github.com/microsoft/powerbi-modeling-mcp.git

Lưu ý: không cần git clone repo này — package đã có sẵn trên npm, lệnh ở bước 3 tự tải về. Link chỉ để tham khảo tài liệu.

Hoặc cài thủ công — 4 bước

  1. Cài Node.js 1 lần / máy

    Tải tại nodejs.org (bản LTS). Lệnh npx cần Node để tải và chạy MCP server.

  2. Cài Claude Code 1 lần / máy

    Nơi gõ lệnh: npm install -g @anthropic-ai/claude-code. Sau đó gõ claude để đăng nhập tài khoản (mỗi người dùng tài khoản riêng).

  3. Dựng cầu MCP 1 lần / máy

    Một dòng lệnh duy nhất — dùng -s user để mọi thư mục đều có:

    # Chi chay 1 lan tren moi may
    $ claude mcp add powerbi -s user -- npx -y @microsoft/powerbi-modeling-mcp@latest --start
    
    # Kiem tra: tim dong "powerbi ... ✔ Connected"
    $ claude mcp list
  4. Mở Power BI Desktop + file .pbip Mỗi lần dùng

    Bật định dạng .pbip (làm 1 lần): File → Options → Preview features → tick "Power BI Project (.pbip) save option" → khởi động lại → Save as → .pbip. Định dạng .pbip lưu model dưới dạng text (TMDL) nên Claude đọc/sửa và đưa vào Git được.

🔍
Bài test "thông 100%":

Mở file .pbip → hỏi Claude "liệt kê các bảng trong model đang mở". Thấy ra danh sách bảng = thông thật. "✔ Connected" đơn thuần chưa đủ.

↑ Về mục lục

Phần 3

Bộ cài 1-click — triển khai 60 máy

Thay vì làm tay 4 bước trên từng máy, đóng gói thành thư mục setup-powerbi-mcp/ gồm 3 file, gửi zip qua mạng nội bộ:

FileVai trò
setup.batNhân viên chuột phải → Run. Tự kiểm tra/cài Node.js (winget) → Claude Code (npm) → thêm MCP vào Claude Code (scope user) → ghép config Claude Desktop
merge-desktop-config.ps1Ghép an toàn vào claude_desktop_config.json: giữ nguyên connector cũ, tự backup .bak
DOC-TRUOC-KHI-CHAY.mdHướng dẫn phát hành + checklist kiểm tra thành công

3 việc không thể tự động (mỗi người tự làm 1 lần)

ViệcVì sao không tự động được
Đăng nhập Claude (gõ claude, làm theo hướng dẫn)Tài khoản cá nhân của từng người
Khởi động lại Claude Desktop (Quit hẳn ở khay hệ thống)App chỉ đọc config lúc khởi động
Bật ".pbip save option" trong Power BISetting nằm trong Power BI của từng máy
↑ Về mục lục

Phần 4

Hai đích cài — đừng nhầm lẫn

2 "Claude" khác nhau trên cùng một máy, mỗi cái có kho connector riêng. Cài vào cái này sẽ không hiện ở cái kia:

Claude Code (terminal)Claude Desktop (app cửa sổ)
Cách càiclaude mcp add powerbi -s user -- npx ...Sửa file %APPDATA%\Claude\claude_desktop_config.json (hoặc nút Add trong Settings → Connectors)
Kiểm traclaude mcp listSettings → Connectors (sau khi khởi động lại app)
Scope-s user = mọi thư mục; mặc định = chỉ thư mục hiện tạiToàn app
// Doan them vao claude_desktop_config.json > "mcpServers"
"powerbi": {
  "command": "cmd",
  "args": ["/c", "npx", "-y", "@microsoft/powerbi-modeling-mcp@latest", "--start"]
}
↑ Về mục lục

Phần 5

Thư viện prompt mẫu

Gõ tiếng Việt tự nhiên. Các mẫu dưới đây đều đã chạy thật:

Khám phá model

"Liệt kê tất cả bảng và measure trong model đang mở"
Bài test kết nối chuẩn — luôn chạy đầu tiên
"Tạo data dictionary cho toàn bộ model, xuất ra file markdown"
Sinh tài liệu tự động — quà cho team BI
"Tìm các measure không được dùng ở đâu và các cột thừa"
Dọn dẹp model cũ

Xây model & DAX

"Tạo bảng Date từ 2024 đến 2026, có cột Year, Quarter, Month, MonthNo, đánh dấu là date table, và set cột Month sắp xếp theo MonthNo"
Một câu = bảng lịch chuẩn + sort đúng thứ tự tháng
"Tạo quan hệ giữa Sales[OrderDate] và Date[Date]"
Quan hệ 1-nhiều, tự đặt tên
"Thêm các measure: Total Sales, Sales YTD, Sales MoM %, xếp hạng sản phẩm theo doanh thu, % trên tổng. Gom vào display folder cho gọn"
5 measure + tổ chức thư mục trong một lệnh
"Viết measure tăng trưởng quý (QoQ %) và kiểm tra bằng cách chạy thử theo từng quý"
Claude viết DAX xong tự chạy query xác nhận kết quả

Bảo trì hàng loạt

"Đổi tên tất cả measure theo chuẩn: viết hoa chữ đầu, bỏ dấu gạch dưới"
Bulk rename — DAX tham chiếu tự cập nhật theo
"Export model ra TMDL để tôi đưa vào Git"
Version control cho data model
"So sánh hiệu năng 2 cách viết measure này và chọn cách nhanh hơn"
Tối ưu DAX có đo lường thực tế
↑ Về mục lục

Phần 6

Demo thực chiến: từ report trắng đến model hoàn chỉnh

Toàn bộ phần dưới đây được Claude làm qua MCP trong ~2 phút, bắt đầu từ một report hoàn toàn trống — không gõ tay một dòng DAX nào:

Bảng Sales — 10 giao dịch (DAX UNION/ROW) Bảng Date — lịch 365 ngày (CALENDAR) Quan hệ Sales↔Date + mark date table 9 measure trong 3 display folder Sort Month theo MonthNo

📈 Doanh thu theo tháng (YTD + MoM%)

ThángDoanh thuYTDMoM %
Jan4.1004.100
Feb3.3607.460−18,0%
Mar6.30013.760+87,5%
Apr60014.360−90,5%
May2.40016.760+300%
Jun8.80025.560+267%

🏆 Xếp hạng sản phẩm (RANKX + % tổng)

Sản phẩmDoanh thuHạng% Tổng
Laptop18.000170,4%
Monitor3.900215,3%
Keyboard2.560310,0%
Mouse1.10044,3%

Kèm QoQ%: Q2 giảm −14,2% so với Q1 — measure DATEADD quarter.

9 measure đã tạo

MeasureDAX chínhFolder
Total SalesSUM(Sales[Amount])Key Metrics
Total QuantitySUM(Sales[Quantity])Key Metrics
Order CountCOUNTROWS(Sales)Key Metrics
Avg Order ValueDIVIDE([Total Sales], [Order Count])Key Metrics
% of Total SalesDIVIDE([Total Sales], CALCULATE([Total Sales], ALL(Sales)))Key Metrics
Sales YTDTOTALYTD([Total Sales], 'Date'[Date])Time Intelligence
Sales MoM %DATEADD('Date'[Date], -1, MONTH)Time Intelligence
Sales QoQ %DATEADD('Date'[Date], -1, QUARTER)Time Intelligence
Product RankRANKX(ALL(Sales[Product]), [Total Sales])Ranking
↑ Về mục lục

Phần 7

Ai làm gì — quy trình 7 khâu

🧠 Claude lo

Bộ não · Logic & Số liệu

  • Dựng bảng, quan hệ, cột tính toán
  • Viết & tối ưu DAX (YTD, YoY, QoQ, RANKX…)
  • Dọn dẹp model, đặt tên, thư mục
  • Sinh tài liệu, export TMDL

🎨 Bạn lo

Đôi mắt · Trình bày

  • Nạp dữ liệu thật, đăng nhập nguồn
  • Kéo thả biểu đồ lên canvas
  • Màu sắc, bố cục, format
  • Quyết định "đẹp / hợp sếp" chưa
#KhâuAi làmTiết kiệm
1Kết nối / nạp dữ liệu (Get Data, mật khẩu)👤 Bạn
2Làm sạch dữ liệu (Power Query)👤 Bạn · Claude hỗ trợ viết M
3Dựng bảng, quan hệ, cột tính toán🤖 Claude⭐⭐⭐
4Viết DAX measure🤖 Claude⭐⭐⭐⭐⭐
5Dọn dẹp model (tên, folder, sort-by-column)🤖 Claude⭐⭐⭐⭐
6Vẽ biểu đồ (kéo thả canvas)👤 Bạn
7Trang trí dashboard (màu, layout)👤 Bạn
↑ Về mục lục

Phần 8

MCP làm được gì — 21 nhóm lệnh

Server của Microsoft cung cấp 21 nhóm operations. Bạn không cần nhớ — Claude tự chọn đúng nhóm khi bạn ra lệnh tiếng Việt. Liệt kê để biết "trần" khả năng:

table — tạo/sửa/xóa bảng, mark date table column — cột, kiểu dữ liệu, sort-by-column measure — measure, format, folder, bulk rename/move relationship — quan hệ, active/inactive dax_query — chạy & validate DAX, đo hiệu năng model — refresh, stats, export TMDL database — import/export TMDL·BIM, deploy Fabric connection — dò instance PBI Desktop, connect Fabric partition — sửa M expression, phân vùng calculation_group — calculation groups calendar — bảng lịch security_role — RLS roles perspective — góc nhìn model culture / translations — đa ngôn ngữ user_hierarchy — hierarchy named_expression — shared M expressions query_group — nhóm query function — DAX UDF trace — debug hiệu năng transaction — batch an toàn, rollback

Giới hạn — nói rõ để không kỳ vọng sai

Làm được

  • Toàn bộ semantic model: bảng, cột, quan hệ, measure, RLS, calculation group
  • Chạy & kiểm tra DAX, đo hiệu năng
  • Thao tác hàng loạt có transaction (lỗi thì rollback)
  • Power BI Desktop cục bộ + Fabric cloud

Không làm được

  • Tạo/sửa visual, biểu đồ trên canvas
  • Layout, màu sắc, format báo cáo
  • Nhập mật khẩu nguồn dữ liệu hộ bạn
  • (Visual nằm ngoài XMLA endpoint)
↑ Về mục lục

Phần 9

Sự cố thường gặp & cách xử lý

Tất cả đều là lỗi đã gặp thật trong phiên làm việc và đã xử lý xong:

Triệu chứngNguyên nhânCách xử lý
"Connected" nhưng không thấy bảng nào Power BI Desktop chưa mở file, hoặc file trống Mở file .pbip có dữ liệu → thử lại "liệt kê các bảng"
Không thấy Power BI trong Connectors của Claude Desktop Cài vào Claude Code ≠ Claude Desktop (2 kho riêng) Thêm vào claude_desktop_config.json rồi khởi động lại app (Phần 4)
MCP chỉ chạy ở 1 thư mục Scope mặc định là local (per-project) Gỡ rồi thêm lại với -s user
Tháng trên biểu đồ xếp lộn xộn (Apr, Feb, Jan…) Cột chữ sắp theo alphabet Ra lệnh: "set cột Month sắp xếp theo MonthNo" — sửa 1 lần ở model, mọi biểu đồ đúng mãi
Tạo bảng DAX bị SemanticError với DATATABLE DATATABLE không nhận hàm như DATE() — chỉ nhận hằng số Dùng UNION(ROW(...), ROW(...)) thay thế
"needs to be recalculated" khi chạy query Vừa tạo bảng/quan hệ nhưng chưa refresh Ra lệnh refresh model (Full sau khi tạo bảng, Calculate sau khi tạo quan hệ)
Lỗi thiếu tham số khi tạo measure Sai tên thuộc tính Claude tự tra Help của tool rồi sửa — người dùng không cần làm gì
🔒
Bảo mật:

Claude không bao giờ nhập mật khẩu/API key hộ — mỗi người tự đăng nhập (device-code với Fabric). Không dán token vào prompt. Kiểm tra file config trước khi chia sẻ máy — key có thể nằm dạng chữ thô trong đó.

↑ Về mục lục

Phần 10

Checklist mở lớp training

  1. Chuẩn bị trước buổi học

    Gửi bộ cài 1-click (Phần 3) trước 1 ngày để mọi người tự cài. File Power BI demo lưu sẵn dạng .pbip. Kiểm tra máy chiếu hiển thị được cả terminal lẫn Power BI.

  2. Mở đầu: khái niệm (10 phút)

    Dùng sơ đồ cây cầu (Phần 1) + bảng "Ai làm gì" (Phần 7). Chốt bằng câu thông điệp vàng.

  3. Demo live: từ 0 đến model (15 phút)

    Mở report trắng → gõ lệnh tạo bảng Date + measure YTD → cho lớp thấy Data pane "mọc" ra kết quả. Đây là khoảnh khắc "wow" — đừng bỏ qua.

  4. Học viên thực hành (20 phút)

    Mỗi người chạy bài test "liệt kê các bảng" trên máy mình → tự tạo 1 measure bằng tiếng Việt → kéo lên canvas thành biểu đồ.

  5. Xử lý tình huống + Q&A (15 phút)

    Mở bảng sự cố (Phần 9) — demo cố tình để lỗi "quên mở Power BI" cho lớp thấy triệu chứng và cách nhận biết.

  6. Giao bài về nhà

    Mỗi người mang 1 file báo cáo thật của phòng mình, dùng Claude thêm 3 measure time-intelligence và gửi lại screenshot.

↑ Về mục lục
ZaloFB
Khám phá nhanh
← Về trang chính