Lấy dữ liệu (Get Data) là bước đầu tiên trong quá trình thực hiện phân tích dữ liệu. Chúng ta có thể lấy dữ liệu từ nhiều nguồn khác nhau, như từ flat file, SQL database hay Analysis Service.
Vậy liệu chúng ta có những cách nào để tối ưu hóa công việc Get Data này?
Các nội dung chính
Chọn chế độ lưu trữ data
Cách phổ biến nhất để sử dụng dữ liệu (data) trong Power BI là import dữ liệu đó vào tập dữ liệu (dataset) Power BI. Import dữ liệu có nghĩa là dữ liệu được lưu trữ trong tệp Power BI và được publish (xuất bản) cùng với Power BI reports. Quá trình này giúp bạn tương tác trực tiếp với dữ liệu của mình dễ dàng hơn. Tuy nhiên, cách này có thể không hiệu quả với tất cả các trường hợp.
Đôi khi có thể có các yêu cầu bảo mật dữ liệu của bạn khiến bạn không thể import trực tiếp bản sao. Hoặc các tập dữ liệu của bạn có thể quá lớn và mất quá nhiều thời gian để tải vào Power BI và bạn muốn tránh tạo ra tắc nghẽn hiệu suất. Power BI giải quyết những vấn đề này bằng cách sử dụng chế độ lưu trữ DirectQuery, cho phép bạn truy vấn dữ liệu trong nguồn dữ liệu trực tiếp và không phải nhập bản sao vào Power BI. DirectQuery hữu ích vì nó đảm bảo bạn luôn xem phiên bản mới nhất của dữ liệu.
Ba chế độ lưu trữ khác nhau:
• Import
• DirectQuery
• Dual (Composite)
Bạn có thể truy cập các chế độ lưu trữ bằng cách chuyển sang chế độ Model view, chọn Data table và Properties, chọn chế độ bạn muốn sử dụng.

Chế độ Import
Chế độ Import cho phép bạn tạo bản sao Power BI cục bộ của bộ dữ liệu từ nguồn dữ liệu của bạn. Bạn có thể sử dụng tất cả các tính năng của dịch vụ Power BI với chế độ lưu trữ này, bao gồm QnA và Quick Insights. Tuy nhiên, việc làm mới dữ liệu phải thực hiện thủ công. Chế độ Import là chế độ mặc định để tạo Power BI report mới.
Chế độ DirectQuery
DirectQuery hữu ích khi bạn không muốn lưu các bản sao cục bộ của dữ liệu vì dữ liệu của bạn sẽ không được lưu vào bộ nhớ đệm. Thay vào đó, bạn có thể truy vấn (query) các bảng cụ thể mà bạn sẽ cần bằng cách sử dụng Power BI queries và dữ liệu bắt buộc sẽ được truy xuất từ nguồn dữ liệu cơ bản. Về cơ bản, bạn đang tạo kết nối trực tiếp đến nguồn dữ liệu. Sử dụng mô hình này đảm bảo rằng bạn luôn xem dữ liệu cập nhật nhất và tất cả các yêu cầu bảo mật đều được đáp ứng. Ngoài ra, chế độ này phù hợp khi bạn có bộ dữ liệu. Thay vì làm chậm hiệu suất do phải tải một lượng lớn dữ liệu vào Power BI, bạn có thể sử dụng DirectQuery để tạo kết nối với nguồn và get data, cũng như giải quyết các vấn đề về độ trễ của dữ liệu.
Chế độ Dual (Composite mode)
Ở chế độ Dual, bạn có thể xác định một số dữ liệu sẽ được Import trực tiếp và các dữ liệu khác phải được truy vấn. Bất kỳ bảng nào được đưa vào báo cáo của bạn đều là sản phẩm của cả hai chế độ Import và DirectQuery. Sử dụng chế độ Dual cho phép Power BI chọn hình thức get data hiệu quả nhất.
Khắc phục vấn đề về hiệu suất trong Get data
Đôi khi, các tổ chức sẽ cần giải quyết các vấn đề về hiệu suất khi chạy báo cáo. Power BI cung cấp công cụ Performance Analyzer để giúp khắc phục sự cố và hợp lý hóa quy trình.
Giả sử bạn đang xây dựng reports cho Sales team của công ty. Bạn đã import dữ liệu của mình từ một số bảng trong cơ sở dữ liệu SQL của Sales team bằng cách tạo kết nối dữ liệu với cơ sở dữ liệu thông qua DirectQuery. Khi bạn tạo Visual và Filter sơ bộ, bạn nhận thấy rằng một số bảng được truy vấn nhanh hơn những bảng khác và một số Filter mất nhiều thời gian hơn để xử lý so với những bảng khác.
Chẩn đoán truy vấn (Query diagnotics)
Một công cụ khác mà bạn có thể sử dụng để nghiên cứu hiệu suất truy vấn là chẩn đoán truy vấn. Tính năng này cho phép bạn xác định những điểm nghẽn nào (nếu có) tồn tại trong khi Load & Transform dữ liệu, làm mới (Refresh) dữ liệu của bạn trong Power Query hoặc khi chạy câu lệnh SQL trong Query Editor, v.v.
Để truy cập Query Diagnostics trong Power Query Editor, bạn chuyển sang tab Tools trên Home ribbon. Khi bạn đã sẵn sàng transform dữ liệu của mình hoặc thực hiện các chỉnh sửa khác trong Power Query Editor, hãy chọn Start Diagnostics trên tab Session Diagnostics. Khi bạn hoàn tất, hãy chọn Stop Diagnostics.

Chọn Diagnose Step cho bạn biết khoảng thời gian cần thiết để chạy bước đó, như ảnh sau. Lựa chọn này có thể cho bạn biết liệu một bước có mất nhiều thời gian để hoàn thành hơn những bước khác hay không.

Công cụ này hữu ích khi bạn muốn phân tích hiệu suất ở phía Power Query cho các tác vụ như load datasets, refresh dữ liệu hoặc chạy các tác vụ transform khác.
Các kỹ thuật khác để tối ưu hóa hiệu suất trong get data
Các cách khác để tối ưu hóa hiệu suất truy vấn get data trong Power BI bao gồm:
• Xử lý càng nhiều dữ liệu càng tốt trong nguồn dữ liệu gốc. Power Query và Power Query Editor cho phép bạn xử lý dữ liệu; tuy nhiên, sức mạnh xử lý cần thiết để hoàn thành tác vụ này có thể làm giảm hiệu suất trong các tác vụ khác trong báo cáo của bạn. Nhìn chung, phương pháp tốt là xử lý càng nhiều càng tốt nguồn dữ liệu gốc.
• Sử dụng các truy vấn SQL gốc (native SQL queries). Khi sử dụng DirectQuery cho cơ sở dữ liệu SQL, hãy đảm bảo rằng bạn không lấy dữ liệu từ các stored porcedures hoặc các common table expressions (CTE).
• Tách biệt ngày và giờ nếu bị ràng buộc với nhau. Nếu bất kỳ bảng nào của bạn có các cột kết hợp ngày và giờ, hãy đảm bảo rằng bạn tách chúng thành các cột riêng biệt trước khi nhập chúng vào Power BI. Cách này sẽ làm tăng khả năng nén.
Tối ưu hóa hiệu suất Get data trong Power Query
Hiệu suất trong Power Query phụ thuộc vào hiệu suất ở cấp nguồn dữ liệu. Sự đa dạng của các nguồn dữ liệu mà Power Query cung cấp và các kỹ thuật điều chỉnh hiệu suất cho mỗi nguồn là rất rộng. Ví dụ: nếu bạn trích xuất dữ liệu từ Microsoft SQL Server, bạn nên tuân theo các nguyên tắc điều chỉnh hiệu suất của MS SQL Server. Các kỹ thuật điều chỉnh hiệu suất SQL Server tốt bao gồm index creation, năng cấp phần cứng, điều chỉnh kế hoạch thực thi và nén dữ liệu. Các chủ đề này nằm ngoài phạm vi và chỉ được đề cập như một ví dụ về những lợi ích khi sử dụng Power BI và Power Query.
Power Query tận dụng hiệu suất tốt tại nguồn dữ liệu thông qua một kỹ thuật được gọi là Query Folding.
Query Folding
Query folding trong Power Query Editor giúp bạn tăng hiệu suất của các báo cáo Power BI của mình. Query folding là quá trình mà các biến đổi và chỉnh sửa mà bạn thực hiện trong Power Query Editor đồng thời được theo dõi dưới dạng các truy vấn gốc hoặc các câu lệnh Select SQL đơn giản, trong khi bạn đang thực hiện các biến đổi. Lý do thực hiện quá trình này là để đảm bảo rằng các chuyển đổi này có thể diễn ra trong máy chủ nguồn dữ liệu ban đầu và không áp đảo tài Power BI computing resource.
Bạn có thể sử dụng Power Query để load dữ liệu vào Power BI. Khi sử dụng Power Query Editor, bạn có thể thực hiện các transformation sâu hơn đối với dữ liệu của mình, chẳng hạn như đổi tên hoặc xóa cột, thêm, hợp nhất (append), lọc (filter) hoặc phân nhóm (group) dữ liệu của bạn.
Giả sử tình huống bạn đổi tên vài cột trong Sales data, hợp nhất cột “city” và “state” thành “city sate”. Khi đó, tính năng query folding theo dõi những thay đổi đó trong các truy vấn gốc. Sau đó bạn tải dữ liệu của mình, quá trình chuyển đổi diễn ra độc lập trong nguồn dữ liệu, điều này đảm bảo rằng hiệu suất được tối ưu hóa trong Power BI.
Các lợi ích của Query folding bao gồm:
• Hiệu quả hơn trong việc làm mới dữ liệu và làm mới gia tăng (incremental refreshes). Khi bạn nhập bảng dữ liệu bằng cách sử dụng Query folding, Power BI có khả năng phân bổ tài nguyên tốt hơn và làm mới dữ liệu nhanh hơn vì Power BI không phải chạy cục bộ từng chuyển đổi.
• Tự động tương thích với chế độ DirectQuery và chế độ Dual Storage. Tất cả các nguồn dữ liệu chế độ DirectQuery và chế độ Dual Storage có khả năng xử lý máy chủ back-end để tạo kết nối trực tiếp, có nghĩa là Query folding là một tính năng tự động bạn có thể sử dụng. Nếu tất cả các transformation có thể được rút gọn thành một câu lệnh Select, thì Query folding có thể xảy ra.
Ví dụ về Query folding. Trong trường hợp này, bạn áp dụng một tập hợp các truy vấn cho nhiều bảng. Sau khi bạn thêm nguồn dữ liệu mới bằng cách sử dụng Power Query và bạn được chuyển hướng đến Power Query Editor, bạn đi tới Query Settings và bấm chuột phải vào bước áp dụng cuối cùng, như hình sau.

Nếu tùy chọn View Native Query không có sẵn (không được hiển thị bằng kiểu in đậm), thì bước này không thể thực hiện Query folding và bạn sẽ phải quay lại Applied Steps cho đến khi bạn tìm ra bước mà View Native Query là có sẵn (hiển thị kiểu in đậm). Quá trình này sẽ cho biết truy vấn gốc được sử dụng để chuyển đổi tập dữ liệu.
Tuy nhiên, bạn không thể thực hiện các Native queries đối với các biến đổi sau:
• Thêm một cột index
• Merge và append các cột của các bảng khác nhau với hai nguồn khác nhau
• Thay đổi kiểu dữ liệu của cột
• Chạy hàm DAX phức tạp
Cần nhớ là nếu bạn có thể dịch một phép transform thành câu lệnh Select SQL, bao gồm các toán tử và mệnh đề như GROUP BY, SORT BY, WHERE, UNION ALL và JOIN, bạn có thể sử dụng Query folding.
Trên đây là các kỹ thuật mà bạn có thể thực hiện trong quá trình lấy dữ liệu (Get data) để tối ưu hóa hiệu suất báo cáo. Sau bước Get data, chúng ta sẽ bắt đầu đi vào làm sạch dữ liệu (clean data), xây dựng mô hình (model data) và tạo báo cáo (visualize).