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 ColumnsvàRemove Rowscho 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é!