Menu

Kinh nghiệm tối ưu tốc độ làm mới dữ liệu trong PowerBI Desktop

Liễu Lý Thy 08/03/2026 00:51 213 lượt xem 2 trả lời

Mình thấy rất nhiều bạn gặp tình trạng báo cáo PowerBI load chậm, đặc biệt là khi làm mới dữ liệu (refresh). Hôm nay mình muốn chia sẻ một vài kinh nghiệm cá nhân để cải thiện vấn đề này, đặc biệt là về khái niệm Query Folding.

Query Folding là khả năng Power Query (M-engine) dịch các bước biến đổi dữ liệu của bạn ngược lại thành các câu lệnh SQL (hoặc ngôn ngữ gốc của nguồn dữ liệu) và thực thi trực tiếp trên nguồn. Điều này giúp giảm tải cho PowerBI Desktop vì nó không phải tải toàn bộ dữ liệu thô về rồi mới xử lý, mà chỉ nhận về kết quả đã được xử lý.

Để tối ưu, các bạn nên lưu ý:

  • Lọc dữ liệu càng sớm càng tốt: Thay vì tải cả bảng về rồi mới lọc, hãy lọc ngay tại nguồn nếu có thể. Hoặc ít nhất là ở những bước đầu tiên trong Power Query. Ví dụ, nếu chỉ cần dữ liệu của năm 2023, hãy thêm bước lọc năm 2023 ngay sau khi kết nối nguồn.
  • Xóa bỏ các cột và dòng không cần thiết: Mỗi cột/dòng bạn giữ lại đều tốn bộ nhớ và thời gian xử lý. Hãy dùng Remove ColumnsRemove Rows cho những dữ liệu không dùng đến.
  • Hạn chế các phép biến đổi phức tạp phá vỡ Query Folding: Một số phép biến đổi như gộp bảng từ nhiều nguồn khác nhau, sử dụng các hàm M-query tùy chỉnh phức tạp có thể làm mất khả năng Query Folding. Để kiểm tra xem bước nào còn Query Folding, bạn có thể click chuột phải vào một bước trong Applied Steps và chọn View Native Query. Nếu tùy chọn này bị mờ đi, nghĩa là Query Folding đã bị phá vỡ từ bước đó trở về sau.
  • Sử dụng Direct Query hoặc Import Mode hợp lý: Tùy vào yêu cầu và kích thước dữ liệu mà chọn chế độ phù hợp. Import Mode sẽ nhanh hơn khi tương tác với báo cáo, nhưng refresh có thể lâu hơn. Direct Query sẽ refresh nhanh hơn nhưng tương tác có thể chậm hơn.

Hy vọng những mẹo nhỏ này sẽ giúp các bạn cải thiện hiệu suất làm việc với PowerBI. Nếu có kinh nghiệm nào hay hơn, mọi người chia sẻ thêm nhé!

5

Đúng là Query Folding là "chìa khóa" để PowerBI chạy mượt mà hơn rất nhiều, đặc biệt là khi làm việc với nguồn dữ liệu lớn.

Cảm ơn bạn đã chia sẻ kinh nghiệm rất hay này! Mình cũng từng "đau đầu" với mấy báo cáo refresh hàng tiếng đồng hồ, từ khi hiểu và áp dụng được Query Folding thì tốc độ cải thiện rõ rệt luôn.

Mình có một thắc mắc nhỏ, không biết bạn có kinh nghiệm gì khi Query Folding bị "phá vỡ" (break) do những bước biến đổi phức tạp, ví dụ như dùng nhiều hàm Table.Buffer hay các phép Join/Merge từ nhiều nguồn khác nhau không? Có cách nào để tối ưu lại trong những trường hợp đó không?

0

Mình cũng đồng ý là Query Folding là yếu tố then chốt để PowerBI chạy mượt mà, đặc biệt khi làm việc với các nguồn dữ liệu lớn. Nhiều khi mình thấy anh em hay gặp tình trạng Query Folding bị "phá vỡ" như có bạn đã hỏi ở trên, phần lớn là do các bước biến đổi dữ liệu phức tạp không được dịch ngược về SQL được.

Một mẹo nhỏ mình hay dùng là luôn cố gắng thực hiện các bước lọc (Filter), chọn cột (Select Columns), đổi tên cột (Rename Columns) và các phép biến đổi đơn giản khác CÀNG SỚM CÀNG TỐT trong Power Query. Điều này giúp Query Folding được duy trì lâu nhất có thể, vì những bước này thường dễ dàng được dịch ngược về nguồn dữ liệu hơn là các phép biến đổi phức tạp như Merge, Join hay dùng hàm M tùy chỉnh sau này.

Với các phép Merge/Join, nếu có thể, nên cố gắng Join ngay trên nguồn dữ liệu (nếu nguồn là CSDL quan hệ) hoặc thực hiện các bước biến đổi phức tạp hơn sau khi đã thu hẹp dữ liệu ở mức tối thiểu. Cách này giúp giảm tải đáng kể cho PowerBI Desktop!

2

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký