Hướng dẫn sử dụng DirectQuery trong Power BI (Phần 1)

Nếu bạn muốn sử dụng DirectQuery, bài viết này sẽ cung cấp các hướng dẫn cấp cao để bạn có thể dùng DirectQuery trong Power BI. Hướng dẫn trong phần này được bắt nguồn từ ý nghĩa của việc ứng dụng DirectQuery đã được BAC chia sẻ trong loạt bài viết dưới đây.

Tham khảo: Giới thiệu về cách sử dụng DirectQuery trong Power BI (Phần 1)

1. Hiệu suất nguồn dữ liệu back-end

Xác nhận các trực quan đơn giản làm mới trong một thời gian hợp lý. Thời gian này phải dưới 5 giây để có trải nghiệm tương tác tốt nhất. Nếu trực quan diễn ra lâu hơn 30 giây, rất có thể xảy ra các sự cố liên tiếp trong khi xuất bản báo cáo. Những vấn đề này có thể làm cho giải pháp không hoạt động.

Trường hợp các truy vấn chậm, hãy kiểm tra các truy vấn đang được gửi đến các nguồn cơ bản và lý do cho hiệu suất truy vấn. Bài viết này không đề cập đến nhiều phương pháp hay nhất về tối ưu hóa cơ sở dữ liệu trên toàn bộ các nguồn dữ liệu tìm năng cơ bản. Nội dung lần này chúng ta đề cập đến các thông lệ cơ sở dữ liệu tiêu chuẩn áp dụng cho hầu hết các tình huống:

  • Các mối quan hệ dựa trên các cột số nguyên thường hoạt động tốt hơn các mối quan hệ trên các cột kiểu dữ liệu khác.
  • Các chỉ mục thích hợp nên được tạo. Tạo chỉ mục nói chung có nghĩa là sử dụng các chỉ mục lưu trữ cột trong các nguồn hỗ trợ chúng. Ví dụ, SQL Server.
  • Mọi số liệu thống kê cần thiết trong nguồn cần được cập nhật.
2. Hướng dẫn thiết kế mô hình (model design)

Khi xác định mô hình, xem xét các hướng dẫn dưới đây:

  • Tránh các truy vấn phức tạp trong Query Editor: Query Editor dịch một truy vấn phức tạp thành một truy vấn SQL. Truy vấn duy nhất xuất hiện trong subselect (lựa chọn con) của mọi truy vấn được gửi đến bảng đó. Nếu truy vấn đó phức tạp, nó có thể dẫn đến các vấn đề hiệu suất trên mỗi truy vấn được gửi. Truy vấn SQL thực tế cho một tập hợp các bước có thể nhận được bằng cách chọn bước cuối cùng trong Query Editor và chọn View Native Query từ menu ngữ cảnh.
  • Giữ các measures đơn giản: Ít nhất ban đầu, bạn nên hạn chế các measures đối với các tổng hợp đơn giản.Sau đó, nếu các measures hoạt động một cách thỏa đáng, các measures phức tạp hơn có thể được xác định nhưng chú ý đến hiệu suất của từng measures.
  • Tránh các mối quan hệ trên những calculated columns: Hướng dẫn này có liên quan đến cơ sở dữ liệu mà bạn cần thực hiện các phép nối (join) nhiều cột. Power BI ngày nay không cho phép mối quan hệ dựa trên nhiều cột như FK/PK. Cách giải quyết là nối các cột với nhau bằng cách sử dụng một cột được tính toán và đặt phép nối trên cột đó. Mặc dù cách giải quyết này là hợp lý đối với dữ liệu đã import (nhập) nhưng đối với DirectQuery nó dẫn đến kết hợp trên một biểu thức. Kết quả đó thường ngăn việc sử dụng bất kỳ chỉ mục nào và dẫn đến hiệu suất kém. Cách giải quyết duy nhất là thực sự cụ thể hóa nhiều cột thành một cột duy nhất trong cơ sở dữ liệu bên dưới.
  • Tránh các mối quan hệ trên cột mã định danh duy nhất (uniqueidentifier columns): Power BI không hỗ trợ kiểu dữ liệu của uniqueidentifier. Xác định một mối quan hệ giữa các cột của loại cột uniqueidentifier dẫn đến một truy vấn có phép nối liên quan đến kết hợp. Một lần nữa, cách tiếp cận này thường dẫn đến hiệu suất kém. Cho đến khi trường hợp này được tối ưu hóa cụ thể, cách giải quyết duy nhất là thực hiện hóa các cột thuộc loại thay thế trong cơ sở dữ liệu cơ bản.
  • Ẩn cột tới trên các mối quan hệ: Cột tới trên các mối quan hệ thường là khóa chính (primary key) trên bảng tới, cột đó nên được ẩn. Nếu bị ẩn, nó sẽ không xuất hiện trong danh sách trường và không thể sử dụng trong trực quan. Thông thường, các cột dựa trên các mối quan hệ trên thực tế là các cột hệ thống như các khóa thay thế trong kho dữ liệu. Dù sao thì bạn cũng nên ẩn các cột như vậy, nếu cột có ý nghĩa hãy giới thiệu một cột được tính toán có thể nhìn thấy và có biểu thức đơn giản là bằng với khóa chính như ví dụ dưới đây:

    ProductKey_PK   (Destination of a relationship, hidden)

    ProductKey (= [ProductKey_PK],   visible)

    ProductName

    …

  • Kiểm tra tất cả việc sử dụng calculated columns và thay đổi kiểu dữ liệu: Việc sử dụng những tính năng không nhất thiết có hại. Chúng dẫn đến các truy vấn được gửi đến nguồn cơ bản chứa các biểu thức chứ không phải là các tham chiếu đơn giản đến các cột. Điều đó một lần nữa có thể dẫn đến các chỉ mục không được sử dụng.
  • Tránh sử dụng lọc chéo hai chiều (bi-directional cross filtering) trên các mối quan hệ: Việc dùng tính năng này có thể dẫn đến các câu lệnh truy vấn hoạt động không tốt.
  • Thử nghiệm thiết lập Assume referential integrity: Cài đặt Assume Referential Integrity trên các mối quan hệ cho phép các truy vấn sử dụng câu lệnh INNER JOIN chứ không phải OUTER JOIN. Hướng dẫn này thường cải thiện hiệu suất truy vấn, mặc dù nó phụ thuộc vào các chi tiết cụ thể của nguồn dữ liệu.
  • Không sử dụng tính năng lọc dữ liệu tương đối trong Query Editor: Có thể xác định ngày tương đối trong Query Editor. Ví dụ, để lọc các hàng có ngày trong 14 ngày qua.

Tuy nhiên, bộ lọc này được chuyển thành bộ lọc dựa trên ngày cố định, tại thời điểm truy vấn được tạo ra. Kết quả này có thể được nhìn thấy khi xem truy vấn gốc.

Kết quả này có lẽ không như những gì mà bạn mong muốn. Để đảm bảo bộ lọc được áp dụng dựa trên ngày tại thời điểm báo cáo chạy, thay vào đó hãy áp dụng bộ lọc trong báo cáo dưới dạng một Report Filter. Hiện tại, cách tiếp cận này sẽ được thực hiện bằng cách tạo một calculated column để tính số ngày trước, dùng hàm DAX DATE () và sau đó dùng calculated column trong một bộ lọc.

Kết thúc phần đầu tiên với thông tin về hiệu suất nguồn dữ liệu back-end và hướng dẫn thiết kế mô hình, trong phần sau chúng ta sẽ tiếp tục với thiết kế báo cáo, đừng quên đón đọc tại website bacs.vn.

Nguồn tham khảo:

https://docs.microsoft.com/

Đọc tiếp phần 2 tại đây nhé: Hướng dẫn sử dụng DirectQuery trong Power BI (Phần 2)

Nhu cầu đào tạo doanh nghiệp

BAC là đơn vị đào tạo BA đầu tiên tại Việt Nam. Đối tác chính thức của IIBA quốc tế. Ngoài các khóa học public, BAC còn có các khóa học in house dành riêng cho từng doanh nghiệp. Chương trình được thiết kế riêng theo yêu cầu của doanh nghiệp, giúp doanh nghiệp giải quyết những khó khăn và tư vấn phát triển.

Tham khảo chương trình đào tạo: 

 

Previous Post
Next Post
Exit mobile version