Tối ưu Power BI: 6 cách tăng tốc Dashboard cho Data Analyst

6-cach-tang-toc-power-bi-2400x1256

⚡ TĂNG TỐC DASHBOARD

Mở báo cáo mất cả phút, bấm một slicer phải chờ vài giây, file .pbix nặng hàng trăm MB. Phản xạ thường gặp là xóa bớt visual hoặc nâng cấu hình máy, nhưng nhiều khi vấn đề nằm ở một cột dữ liệu hay một công thức DAX mà bạn không ngờ tới. Muốn tối ưu Power BI hiệu quả, bạn cần hiểu Power BI xử lý một cú click ra sao, đo đúng chỗ nghẽn, rồi mới sửa. Bài viết này đi qua đủ ba phần đó.

Power BI xử lý một cú click như thế nào?

Khi bạn mở trang hoặc bấm slicer, mỗi visual gửi một truy vấn DAX xuống mô hình dữ liệu. Truy vấn đó được hai “cỗ máy” xử lý:

🚀 Storage Engine (SE, còn gọi là VertiPaq)

Vai trò: Quét dữ liệu đã nén trong bộ nhớ, lọc, nhóm, cộng, đếm

Đặc điểm: Chạy đa luồng, rất nhanh, nhưng chỉ làm được các phép tính đơn giản; kết quả có thể được lưu cache

🧠 Formula Engine (FE)

Vai trò: Thực hiện logic DAX phức tạp, ghép các kết quả từ SE

Đặc điểm: Chạy đơn luồng, linh hoạt nhưng chậm hơn nhiều

Từ đây có một nguyên tắc quan trọng: càng đẩy được nhiều việc xuống Storage Engine, báo cáo càng nhanh. Phần lớn kỹ thuật tối ưu trong bài đều xoay quanh hai mục tiêu: làm cho dữ liệu nhỏ và dễ nén để SE quét nhanh, và viết DAX sao cho FE phải làm ít nhất.

Vì sao dung lượng và “số giá trị khác nhau” lại quan trọng?

VertiPaq lưu dữ liệu theo cột và nén từng cột bằng các kỹ thuật như:

  • Dictionary encoding: mỗi giá trị khác nhau trong cột được đưa vào một “từ điển” và thay bằng một mã số. Cột càng nhiều giá trị khác nhau (cardinality cao), từ điển càng lớn.
  • Run-length encoding (RLE): các giá trị giống nhau nằm liên tiếp được lưu thành “giá trị + số lần lặp”.
  • Value encoding: cột số nguyên có thể được lưu trực tiếp bằng phép biến đổi số học, không cần từ điển.

Vì vậy, một cột ngày giờ chính xác đến từng giây hay một cột mã giao dịch dạng chuỗi dài có thể chiếm dung lượng lớn hơn cả chục cột số cộng lại, và làm mọi truy vấn chạm vào nó chậm theo.

Quy trình chẩn đoán 3 bước trước khi sửa

1

Performance Analyzer

Visual nào chậm?

➜ 2

DAX Studio

Chậm ở FE hay SE?

➜ 3

VertiPaq Analyzer

Cột nào nặng nhất?

BƯỚC 1

Bước 1: Performance Analyzer, tìm visual chậm

  1. Trong Power BI Desktop, mở tab Optimize (hoặc View ở phiên bản cũ) › Performance Analyzer.
  2. Bấm Start recording, rồi bấm Refresh visuals để đo cả trang. Muốn đo một thao tác cụ thể, hãy bấm slicer trong lúc đang ghi.
  3. Sắp xếp theo tổng thời gian và đọc ba chỉ số của từng visual:
Chỉ số Ý nghĩa Nếu chiếm phần lớn thời gian
DAX query Thời gian mô hình trả kết quả cho visual Vấn đề nằm ở mô hình dữ liệu hoặc DAX → chuyển sang Bước 2
Visual display Thời gian vẽ visual Visual có quá nhiều điểm dữ liệu hoặc là custom visual nặng
Other Thời gian chờ các visual khác xử lý xong Trang có quá nhiều visual

Với visual có DAX query cao, bấm Copy query để lấy nguyên văn truy vấn mang sang bước tiếp theo.

BƯỚC 2

Bước 2: DAX Studio, xem thời gian nằm ở FE hay SE

DAX Studio là công cụ miễn phí (daxstudio.org). Sau khi cài, mở từ tab External Tools trong Power BI Desktop để kết nối thẳng vào mô hình đang mở.

  1. Dán truy vấn vừa copy vào cửa sổ soạn thảo.
  2. Bật Server Timings trên thanh công cụ.
  3. Chọn chế độ chạy Clear Cache then Run để đo ở trạng thái “lạnh”, không bị cache làm sai kết quả.
  4. Đọc kết quả trong tab Server Timings:
  • FE chiếm phần lớn thời gian: công thức DAX đang bắt Formula Engine làm nhiều việc → xem Cách 5.
  • SE chiếm phần lớn thời gian hoặc có rất nhiều SE query: bảng quá lớn, cột khó nén hoặc quan hệ chưa tốt → xem Cách 1, 2, 3.
  • Xuất hiện CallbackDataID trong câu truy vấn xmSQL: Storage Engine phải gọi ngược lên Formula Engine cho từng dòng, thường do biểu thức phức tạp bên trong hàm lặp như SUMX, FILTER → xem Cách 5.

BƯỚC 3

Bước 3: VertiPaq Analyzer, tìm bảng và cột “nặng ký”

Trong DAX Studio, vào Advanced › View Metrics. Bảng kết quả cho biết dung lượng từng bảng, từng cột, số giá trị khác nhau (Cardinality) và tỷ lệ phần trăm trên toàn mô hình. Sắp xếp theo dung lượng giảm dần: thường chỉ một vài cột chiếm phần lớn dung lượng, và đó là nơi nên xử lý đầu tiên. Đồng thời hãy tìm các bảng tên bắt đầu bằng LocalDateTable, dấu hiệu của tính năng Auto date/time (xem Cách 2).

Công cụ Trả lời câu hỏi Dấu hiệu cần chú ý
Performance Analyzer Visual nào chậm? Chậm ở khâu nào? DAX query, Visual display hay Other cao
DAX Studio (Server Timings) Truy vấn chậm do DAX hay do mô hình? FE cao, nhiều SE query, CallbackDataID
VertiPaq Analyzer Bảng, cột nào chiếm nhiều bộ nhớ? Cột cardinality cao, bảng LocalDateTable

💡 Ghi lại số đo trước khi sửa: thời gian của 3 visual chậm nhất, dung lượng file và thời gian refresh. Sau mỗi kỹ thuật, đo lại để biết thay đổi nào thực sự có hiệu quả.

6 cách tăng tốc Power BI chi tiết

01DỮ LIỆUChỉ nạp dữ liệu thực sự cần dùng 02DỮ LIỆUGiảm số giá trị khác nhau và chọn đúng kiểu dữ liệu 03MÔ HÌNHXây mô hình Star Schema và kiểm soát quan hệ
04MÔ HÌNHĐẩy tính toán về Power Query, dùng measure cho giá trị tổng hợp 05DAXViết DAX để Formula Engine làm ít nhất 06VISUALTối ưu trang báo cáo và cách visual tương tác

Mỗi cách dưới đây được trình bày theo cùng một khung: vì sao hiệu quả, cách làm từng bước và kiểm tra lại thế nào. Ví dụ dùng chung mô hình bán lẻ gồm bảng Fact_BanHang và các bảng Dim_Ngay, Dim_SanPham, Dim_KhachHang, Dim_CuaHang.

CÁCH 1 DỮ LIỆU

Cách 1: Chỉ nạp dữ liệu thực sự cần dùng

Vì sao hiệu quả: mỗi cột, mỗi dòng thừa đều chiếm bộ nhớ, kéo dài thời gian refresh và bắt Storage Engine quét nhiều hơn. Đây là cách dễ làm nhất và thường cho hiệu quả rõ nhất.

Cách làm:

  1. Chỉ giữ cột cần dùng. Trong Power Query, chọn Choose Columns thay vì xóa từng cột, để khi nguồn thêm cột mới, mô hình không tự phình ra:
Power Query (M)
= Table.SelectColumns ( Source,
    { "NgayBan", "MaSanPham", "MaKhachHang", "MaCuaHang", "SoLuong", "ThanhTien" } )
  1. Lọc dòng theo phạm vi báo cáo thực sự cần, bỏ dòng test, đơn hủy:
Power Query (M)
= Table.SelectRows ( #"Chon cot", each [NgayBan] >= #date ( 2024, 1, 1 ) )
  1. Giữ query folding. Với nguồn là database, đặt các bước chọn cột, lọc dòng ngay sau bước Source. Chuột phải vào bước cuối › View Native Query: nếu mở được câu SQL, nghĩa là các bước đang được đẩy về database xử lý thay vì tải hết về máy rồi mới lọc. Một số bước như thêm cột Index hay hàm tùy biến có thể làm gãy folding, nên đặt chúng ở cuối.
  2. Gom nhóm trước bằng Group By nếu báo cáo chỉ cần số liệu theo ngày và cửa hàng, không cần từng giao dịch.
  3. Với bảng giao dịch rất lớn, cân nhắc Incremental refresh: tạo hai tham số RangeStart, RangeEnd kiểu Date/Time, lọc bảng theo hai tham số đó rồi thiết lập chính sách refresh. Power BI sẽ chỉ làm mới phần dữ liệu gần đây thay vì nạp lại toàn bộ.

🔍 Kiểm tra lại: so sánh dung lượng file .pbix và thời gian refresh trước, sau; mở VertiPaq Analyzer để chắc chắn không còn cột “lạ” chiếm dung lượng lớn.

CÁCH 2 DỮ LIỆU

Cách 2: Giảm số giá trị khác nhau và chọn đúng kiểu dữ liệu

Vì sao hiệu quả: như đã nói ở phần VertiPaq, cột càng nhiều giá trị khác nhau thì từ điển càng lớn và nén càng kém. Giảm cardinality là cách thu nhỏ mô hình mà không mất thông tin cần cho báo cáo.

Cách làm:

  1. Tách cột ngày giờ. Một năm chỉ có tối đa 366 ngày, nhưng có hơn 31 triệu giây. Tách thành cột Ngày và cột Giờ (nếu thực sự cần phân tích theo giờ), rồi xóa cột gốc:
Power Query (M)
= Table.AddColumn ( Source, "Ngay", each DateTime.Date ( [ThoiGian] ), type date )

= Table.AddColumn ( #"Them Ngay", "Gio", each Time.Hour ( [ThoiGian] ), Int64.Type )
  1. Làm tròn số về độ chính xác cần thiết. Với tiền VNĐ, phần thập phân thường vô nghĩa: dùng Number.Round([DonGia], 0) và kiểu Fixed decimal number cho cột tiền tệ.
  2. Dùng khóa số nguyên để nối bảng thay cho chuỗi dài như “KH-HN-000123”. Nếu nguồn có cột ID dạng số, hãy nối bằng cột đó.
  3. Bỏ các cột ID giao dịch không dùng trong báo cáo. Cột mã đơn hàng có số giá trị khác nhau gần bằng số dòng, nên gần như không nén được.
  4. Tắt Auto date/time: File › Options and settings › Options, bỏ chọn Auto date/time ở cả mục Global › Data Load và Current File › Data Load. Tính năng này tạo ngầm một bảng ngày (LocalDateTable) cho mỗi cột ngày trong mô hình. Thay vào đó, dùng một bảng Dim_Ngay duy nhất và đánh dấu Mark as date table.

🔍 Kiểm tra lại: trong VertiPaq Analyzer, cột Cardinality và dung lượng của các cột vừa xử lý phải giảm rõ; các bảng LocalDateTable biến mất.

CÁCH 3 MÔ HÌNH

Cách 3: Xây mô hình Star Schema và kiểm soát quan hệ

Vì sao hiệu quả: Storage Engine xử lý rất tốt việc lọc từ bảng Dimension nhỏ sang bảng Fact lớn qua quan hệ 1 – nhiều. Ngược lại, bảng phẳng lặp lại chuỗi văn bản trên mọi dòng, còn quan hệ hai chiều và nhiều – nhiều tạo thêm đường lan truyền bộ lọc, khiến truy vấn nặng và kết quả khó đoán.

Cách làm:

  1. Tách bảng phẳng thành Fact và các Dimension trong Power Query (Reference bảng gốc, giữ cột mô tả, Remove Duplicates trên cột khóa).
  2. Gộp các Dimension nhiều tầng (Snowflake): dùng Merge Queries gộp Dim_NhomHang vào Dim_SanPham rồi Expand cột tên nhóm, để mỗi Dimension nối trực tiếp với Fact.
  3. Để mọi quan hệ ở chế độ Single. Nếu một phép tính cần lọc ngược chiều, bật hai chiều ngay trong measure đó bằng CROSSFILTER, thay vì bật Both cho cả mô hình:
DAX
Số sản phẩm đã bán =
CALCULATE (
    COUNTROWS ( Dim_SanPham ),
    CROSSFILTER ( Fact_BanHang[MaSanPham], Dim_SanPham[MaSanPham], BOTH )
)
  1. Nhiều cột ngày trên cùng bảng Fact (ngày bán, ngày giao): giữ một quan hệ active, quan hệ còn lại để inactive và kích hoạt khi cần:
DAX
Doanh thu theo ngày giao =
CALCULATE ( [Doanh thu], USERELATIONSHIP ( Fact_BanHang[NgayGiao], Dim_Ngay[Date] ) )

Xem thêm bài Star Schema là gì? Cách xây mô hình dữ liệu chuẩn trong Power BI.

🔍 Kiểm tra lại: trong Model view không còn mũi tên hai chiều hay quan hệ nhiều – nhiều ngoài ý muốn; trong Server Timings, số SE query của các visual chậm giảm xuống.

CÁCH 4 MÔ HÌNH

Cách 4: Đẩy tính toán về Power Query, dùng measure cho giá trị tổng hợp

Vì sao hiệu quả: calculated column được tính khi refresh và lưu cho từng dòng, thường nén kém hơn cột nạp từ nguồn. Vài cột tính toán trên bảng Fact hàng triệu dòng có thể làm mô hình phình to đáng kể.

Cách làm:

  1. Cột dùng để lọc hoặc phân nhóm: tạo trong Power Query hoặc SQL. Ví dụ phân khúc đơn hàng, thay vì viết calculated column bằng DAX:
DAX
PhanKhuc =
IF ( Fact_BanHang[ThanhTien] >= 5000000, "Lớn",
    IF ( Fact_BanHang[ThanhTien] >= 1000000, "Vừa", "Nhỏ" ) )

hãy tạo cột điều kiện trong Power Query:

Power Query (M)
= Table.AddColumn ( #"Buoc truoc", "PhanKhuc",
    each if [ThanhTien] >= 5000000 then "Lớn"
         else if [ThanhTien] >= 1000000 then "Vừa"
         else "Nhỏ", type text )
  1. Giá trị dùng để tổng hợp: viết bằng measure. Thay vì tạo cột Lợi nhuận = ThanhTien – GiaVon cho từng dòng rồi cộng lại, hãy viết measure từ hai phép tổng đơn giản mà Storage Engine xử lý rất nhanh:
DAX
Lợi nhuận = SUM ( Fact_BanHang[ThanhTien] ) - SUM ( Fact_BanHang[GiaVon] )

🔍 Kiểm tra lại: dung lượng bảng Fact trong VertiPaq Analyzer giảm; danh sách cột của bảng Fact chỉ còn khóa và số đo gốc.

CÁCH 5 DAX

Cách 5: Viết DAX để Formula Engine làm ít nhất

Vì sao hiệu quả: Formula Engine chạy đơn luồng. Công thức buộc nó duyệt từng dòng hoặc tính lặp lại sẽ chậm dần theo kích thước dữ liệu. Bốn mẫu viết dưới đây giúp đẩy việc về Storage Engine.

Mẫu 1: Lọc theo cột thay vì lọc cả bảng.

DAX
-- Chậm: duyệt từng dòng của bảng Fact
Doanh thu HN =
CALCULATE (
    [Doanh thu],
    FILTER ( Fact_BanHang, RELATED ( Dim_CuaHang[ThanhPho] ) = "Hà Nội" )
)

-- Nhanh hơn: lọc trên cột của bảng Dimension
Doanh thu HN =
CALCULATE ( [Doanh thu], Dim_CuaHang[ThanhPho] = "Hà Nội" )

Mẫu 2: Dùng CALCULATE thay cho COUNTROWS(FILTER(…)).

DAX
-- Chậm
Đơn lớn = COUNTROWS ( FILTER ( Fact_BanHang, Fact_BanHang[ThanhTien] >= 5000000 ) )

-- Nhanh hơn
Đơn lớn = CALCULATE ( COUNTROWS ( Fact_BanHang ), Fact_BanHang[ThanhTien] >= 5000000 )

Lưu ý: cách viết thứ hai thay thế bộ lọc sẵn có trên cột ThanhTien; nếu muốn giữ bộ lọc đó, bọc điều kiện bằng KEEPFILTERS.

Mẫu 3: Dùng VAR để không tính lặp.

DAX
Tăng trưởng YoY % =
VAR HienTai = [Doanh thu]
VAR CungKy = [Doanh thu cùng kỳ]
RETURN
    DIVIDE ( HienTai - CungKy, CungKy )

Mẫu 4: Giữ biểu thức trong hàm lặp thật đơn giản để tránh CallbackDataID:

DAX
-- Dễ phát sinh CallbackDataID
Doanh thu sau giảm =
SUMX ( Fact_BanHang,
    IF ( Fact_BanHang[GiamGia] > 0,
        Fact_BanHang[ThanhTien] * ( 1 - Fact_BanHang[GiamGia] ),
        Fact_BanHang[ThanhTien] ) )

-- Gọn hơn: cùng kết quả, không cần IF
Doanh thu sau giảm =
SUMX ( Fact_BanHang, Fact_BanHang[ThanhTien] * ( 1 - Fact_BanHang[GiamGia] ) )

Nếu measure này được dùng rất nhiều, tốt nhất là tính sẵn cột ThanhTienSauGiam trong Power Query rồi chỉ cần SUM.

🔍 Kiểm tra lại: chạy lại cùng truy vấn trong DAX Studio với Clear Cache then Run; thời gian FE phải giảm và CallbackDataID không còn xuất hiện.

CÁCH 6 VISUAL

Cách 6: Tối ưu trang báo cáo và cách visual tương tác

Vì sao hiệu quả: mỗi visual gửi ít nhất một truy vấn, và mỗi lần bấm slicer, mọi visual có tương tác với nó đều truy vấn lại. Mô hình tốt đến đâu, một trang quá tải vẫn sẽ chậm.

Cách làm:

  1. Giữ mỗi trang khoảng 6–8 visual quan trọng nhất; phần chi tiết chuyển sang trang Drill-through hoặc tooltip.
  2. Gộp các thẻ KPI rời thành một visual New card (hoặc Multi-row card) hiển thị nhiều chỉ số.
  3. Tắt tương tác không cần thiết: chọn visual › Format › Edit interactions, bỏ lọc chéo với những visual không liên quan.
  4. Thêm nút Apply cho slicer và bộ lọc: tab Optimize › Optimization presets › Query reduction. Power BI chỉ chạy truy vấn khi người dùng chọn xong và bấm Apply.
  5. Tránh bảng, ma trận hiển thị hàng chục nghìn dòng: thêm bộ lọc Top N hoặc chỉ hiển thị khi người dùng đã chọn một đối tượng cụ thể.
  6. Slicer trên cột có rất nhiều giá trị (tên khách hàng, mã sản phẩm): chuyển sang dạng Dropdown có ô tìm kiếm, hoặc lọc theo cột nhóm (nhóm hàng, khu vực).
  7. Hạn chế custom visual nặng và hình ảnh dung lượng lớn; ưu tiên visual mặc định của Power BI.
  8. Khi đang thiết kế, dùng Optimize › Pause visuals để Power BI tạm dừng truy vấn, chỉnh sửa xong mới chạy lại.

🔍 Kiểm tra lại: chạy Performance Analyzer cho cùng thao tác; tổng thời gian của trang và chỉ số Other giảm rõ.

Bảng tra nhanh: triệu chứng, dấu hiệu và cách xử lý

Triệu chứng Dấu hiệu khi đo Nguyên nhân thường gặp Áp dụng
File .pbix nặng, refresh lâu VertiPaq Analyzer: vài cột chiếm phần lớn dung lượng Nạp thừa cột, dòng; cột ngày giờ, cột ID; mất query folding Cách 1 Cách 2
Mô hình phình to dù ít dữ liệu Có nhiều bảng LocalDateTable, nhiều calculated column Bật Auto date/time, tính toán bằng cột DAX Cách 2 Cách 4
Visual chậm, DAX query cao Server Timings: SE cao, nhiều SE query Bảng phẳng, Snowflake, quan hệ hai chiều Cách 3
Visual chậm, DAX query cao Server Timings: FE cao, có CallbackDataID FILTER cả bảng, biểu thức phức tạp trong SUMX Cách 5
Bấm slicer phải chờ lâu Performance Analyzer: Other cao Quá nhiều visual, tương tác chéo không cần thiết Cách 6
Một visual vẽ rất chậm Performance Analyzer: Visual display cao Bảng hàng chục nghìn dòng, custom visual nặng Cách 6

Nên bắt đầu từ cách nào?

Không phải cách nào cũng tốn công như nhau. Nếu chưa biết bắt đầu từ đâu, hãy đi theo thứ tự sau:

Thứ tự Việc cần làm Công sức Ghi chú
1 Tắt Auto date/time, xóa cột và dòng thừa (Cách 1, 2) Thấp Làm được trong vài phút, không ảnh hưởng công thức
2 Giảm visual, tắt tương tác thừa, bật Query reduction (Cách 6) Thấp Người xem cảm nhận được ngay
3 Sửa các measure chậm nhất (Cách 5) Trung bình Dựa vào kết quả DAX Studio, sửa từng measure một
4 Chuyển cột tính toán về Power Query (Cách 4) Trung bình Cần kiểm tra lại các visual đang dùng cột đó
5 Tái cấu trúc mô hình theo Star Schema (Cách 3) Cao Hiệu quả lâu dài nhất, nên làm từ đầu với báo cáo mới

Checklist tối ưu Power BI trước khi chia sẻ Dashboard

✅ Đã ghi lại số đo trước và sau khi tối ưu

✅ Chỉ giữ cột, dòng cần dùng; query folding còn hoạt động

✅ Đã tách cột ngày giờ, làm tròn số, bỏ cột ID không dùng

✅ Đã tắt Auto date/time và dùng một bảng ngày riêng

✅ Mô hình theo Star Schema, quan hệ 1 – nhiều, lọc một chiều

✅ Giá trị tổng hợp viết bằng measure, cột phân nhóm tạo trong Power Query

✅ DAX lọc theo cột, dùng VAR, không còn CallbackDataID ở measure chính

✅ Mỗi trang khoảng 6–8 visual, đã rà Edit interactions và bật Query reduction

📅 Muốn được giảng viên hướng dẫn tối ưu Dashboard trên dữ liệu thực tế? Xem Lịch khai giảng tháng 10/2026 các khóa Power BI, SQL, Python, AI tại MCNA.

Câu hỏi thường gặp (FAQ)

HỏiNên dùng Import hay DirectQuery để Dashboard nhanh hơn?

Với đa số báo cáo, Import cho tốc độ tương tác nhanh hơn vì dữ liệu được nén sẵn trong bộ nhớ và Storage Engine xử lý trực tiếp. DirectQuery phù hợp khi dữ liệu quá lớn hoặc cần gần thời gian thực, nhưng mỗi tương tác đều phải hỏi database nguồn, nên tốc độ phụ thuộc vào database đó.

HỏiDAX Studio có an toàn và miễn phí không?

DAX Studio là công cụ mã nguồn mở, miễn phí, được cộng đồng Power BI sử dụng rộng rãi. Nó chỉ đọc và chạy truy vấn trên mô hình đang mở, không tự thay đổi file của bạn. Nếu máy công ty hạn chế cài đặt, hãy hỏi bộ phận IT trước.

HỏiBáo cáo nhanh trên Desktop nhưng chậm trên Power BI Service?

Kiểm tra kết nối đến nguồn dữ liệu qua gateway (đặc biệt với DirectQuery), số người xem cùng lúc và loại dung lượng của workspace. Với Import, hãy đảm bảo lịch refresh hoàn tất trước giờ làm việc.

HỏiTối ưu có làm sai số liệu không?

Có thể, nếu bạn đổi cách lọc (ví dụ Mẫu 2 ở Cách 5) hoặc bỏ quan hệ hai chiều mà một visual đang cần. Hãy lưu bản sao file, so sánh các con số chính trước và sau mỗi thay đổi.

HỏiNgười mới nên bắt đầu từ đâu?

Chạy Performance Analyzer để tìm 2–3 visual chậm nhất, sau đó làm theo bảng thứ tự ưu tiên ở trên: Tắt Auto date/time, xóa dữ liệu thừa và giảm visual trước.

Kết luận

Tăng tốc Power BI không phải là mẹo vặt, mà là một quy trình: hiểu cách Formula Engine và Storage Engine làm việc, đo bằng Performance Analyzer, DAX Studio, VertiPaq Analyzer, rồi áp dụng đúng cách cho đúng triệu chứng. Dữ liệu gọn và dễ nén, mô hình Star Schema, DAX để Storage Engine làm phần nặng và trang báo cáo ít visual là bốn trụ cột giúp mọi Dashboard chạy mượt. Một Dashboard nhanh cũng là một Dashboard được người dùng tin tưởng và mở ra mỗi ngày. Hãy chọn báo cáo chậm nhất của bạn, ghi lại số đo và thử áp dụng hai cách đầu tiên ngay hôm nay.

Nếu bạn muốn học Power BI bài bản từ data modeling, DAX đến tối ưu và triển khai Dashboard thực tế, khóa học Power BI tại MCNA Technology School sẽ đồng hành cùng bạn.

👉 Xem lịch khai giảng tháng 10/2026: Power BI, SQL, Python, AI – MCNA

Thông tin tác giả

Võ Ngọc Vương – Data Analyst tại MCNA Technology School

MCNA Technology School – Đơn vị tiên phong đào tạo AI, Big Data, Business Intelligence tại Việt Nam. Chuyên sâu về Power BI, Python, SQL và Data Analytics — đối tác đào tạo của 300+ doanh nghiệp.

Đối tác đào tạo: Viettel Global, Masan Group, Techcombank, VPBank, Daikin.

→ Chỉ mục