Model relationships trong Power BI Desktop (Phần 3)

Qua hai phần đầu tiên về Model relationships bạn đã có được những thông tin cơ bản về mô hình mối quan hệ. Trong phần này, chúng ta tiếp tục tìm hiểu về các hàm DAX và relationship evaluation. Đừng quên xem lại hai phần đầu tiên của bài viết để chắc chắn không bỏ sót bất kì kiến thức nào.

Tham khảo:

1. Các hàm DAX liên quan đến model relationships

Dưới đây là danh sách các hàm DAX có liên quan đến model relationships (mô hình mối quan hệ). Mỗi hàm được mô tả ngắn gọn để giúp bạn hiểu được ý nghĩa và công dụng của hàm.

  • RELATED: lấy giá trị từ “one” side.
  • RELATEDTABLE: Truy xuất một bảng các hàng từ “many” side.
  • USERELATIONSHIP: Buộc sử dụng một mối quan hệ mô hình không hoạt động cụ thể.
  • CROSSFILTER: Sửa đổi mối quan hệ cross filter direction (thành one hoặc both) hoặc vô hiệu hóa truyền bộ lọc.
  • COMBINEVALUES: Nối hai hoặc nhiều chuỗi văn bản thành một chuỗi văn bản. Mục đích của chức năng này là hỗ trợ các mối quan hệ nhiều cột trong các mô hình DirectQuery.
  • TREATAS: Áp dụng kết quả của một biểu thức bảng dưới dạng bộ lọc cho các cột từ một bảng không liên quan.
  • Hàm Parent and Child: Một họ các hàm liên quan có thể được sử dụng để tạo các cột được tính toán nhằm tự nhiên hóa hệ thống phân cấp parent-child. Sau đó, các cột này có thể được sử dụng để tạo hệ thống phân cấp cố định.
2. Relationship evaluation

Mô hình mối quan hệ, từ góc độ evaluation (đánh giá) được phân loại là regular or limited. Nó không phải là thuộc tính quan hệ có thể định cấu hình, nó được suy ra từ kiểu cardinality và nguồn dữ liệu của hai bảng liên quan. Điều quan trọng là phải hiểu kiểu đánh giá vì có thể có những tác động hoặc hậu quả về hiệu suất nếu tính toàn vẹn của dữ liệu bị xâm phạm. Những tác động và hậu quả toàn vẹn được mô tả trong chủ đề này.

Đầu tiên, một số lý thuyết mô hình hóa là cần thiết để hiểu đầy đủ các relationship evaluation (đánh giá mối quan hệ).

Import hoặc DirectQuery model lấy nguồn tất cả dữ liệu của nó từ Vertipaq cache hoặc cơ sở dữ liệu nguồn. Trong cả hai trường hợp, Power BI có thể xác định rằng tồn tại một “one” side của một mối quan hệ.

Composite model có thể bao gồm các bảng sử dụng các chế độ lưu trữ khác nhau (Import, DirectQuery hoặc Dual) hoặc nhiều nguồn DirectQuery. Mỗi nguồn, bao gồm Vertipad cache của dữ liệu Import được xem là một data island (đảo dữ liệu). Các mối quan hệ mô hình sau đó có thể được phân loại là intra-island (nội đảo) hoặc cross-island (giữa đảo). Mối quan hệ giữa các đảo là mối quan hệ liên quan đến hai bảng trong một đảo dữ liệu, trong khi mối quan hệ giữa các đảo liên quan đến các bảng từ các đảo dữ liệu khác nhau. Lưu ý rằng các mối quan hệ trong các model Import hoặc DirectQuery luôn là đảo nội bộ.

Dưới đây là ví dụ về một Composite model:

Trong ví dụ này, Composite model bao gồm 2 đảo: một đảo dữ liệu Vertipad và một đảo nguồn dữ liệu DirectQuery. Đảo dữ liệu Vertipad chứa 3 bảng và đảo nguồn dữ liệu DirectQuery chứa 2 bảng. Một mối quan hệ đảo chéo tồn tại để liên kết một bảng trong đảo dữ liệu Vertipad với một bảng trong đảo nguồn dữ liệu DirectQuery.

2.1. Regular relationships

Một mô hình mối quan hệ là Regular khi công cụ truy vấn có thể xác định “one” side của mối quan hệ. Nó xác nhận rằng cột “one” side chứa các giá trị duy nhất, tất cả các mối quan hệ giữa One-to-many giữa nhiều đảo là Regular relationships.

Trong ví dụ dưới đây, có hai regular relationships, cả hai được đánh dấu là R. Relationships bao gồm mối quan hệ One-to-many có trong Vertipad và mối quan hệ One-to-many có trong nguồn DirectQuery.

Đối với các Import models, trong đó có tất cả dữ liệu được lưu trữ trong Vertipad, cấu trúc dữ liệu được tạo cho mỗi regular relationship ở thời điểm làm mới dữ liệu. Cấu trúc dữ liệu bao gồm các ánh xạ được lập chỉ mục của tất cả các giá trị từ cột này sang cột khác và mục đích của chúng là để tăng tốc độ nối các bảng tại thời điểm truy vấn.

Tại thời điểm truy vấn, các regular relationships cho phép mở rộng bảng diễn ra. Mở rộng bảng dẫn đến việc tạo ra một ảo bằng cách bao gồm các cột gốc của bảng cơ sở và sau đó mở rộng thành các bảng có liên quan.

Đối với bảng Import, nó được thực hiện trong công cụ truy vấn, đối với bảng DirectQuery, nó được thực hiện trong truy vấn gốc được gửi đến cơ sở dữ liệu nguồn (miễn là Assume referential integrity không được kích hoạt). Sau đó, công cụ truy vấn sẽ hoạt động trên bảng mở rộng, áp dụng các bộ lọc và nhóm theo các giá trị trong các cột của bảng mở rộng.

Lưu ý: Các mối quan hệ Inactive (không hoạt động) cũng được mở rộng ngay cả khi mối quan hệ không được sử dụng bởi một phép tính. Mối quan hệ hai hướng không có tác động đến việc mở rộng bảng.

Đối với mối quan hệ One-to-many, mở rộng bảng diễn ra từ “many” đến “one” sides bằng cách sử dụng LEFT OUTER JOIN. Khi một giá trị phù hợp từ “many” đến “one” side không tồn tại, một hàng ảo trống được thêm vào bảng “one” side.

Mở rộng bảng cũng xảy ra đối với mối quan hệ One-to-one intra-island nhưng bằng cách sử dụng FULL OUTER JOIN. Nó đảm bảo rằng các hàng ảo trống được thêm vào hai bên khi cần thiết.

Các hàng ảo trống là Unknown Members có hiệu quả. Các thành viên không xác định đại diện cho các vi phạm toàn vẹn tham chiếu trong đó giá trị bên “many” side không có giá trị tương ứng bên “one” side. Lý tưởng nhất là những khoảng trống này không nên tồn tại và chúng có thể được loại bỏ bằng cách làm sạch hoặc sữa chữa dữ liệu nguồn.

Dưới đây là một ví dụ về cách bảng mở rộng làm việc:

Trong ví dụ này, mô hình bao gồm 3 bảng: Category, Product Sales. Bảng Category liên kết với bảng Product bằng mối quan hệ One-to-many và bảng Product liên kết với bảng Sales bằng mối quan hệ One-to-many. Bảng Category chứa 2 dòng, bảng Product chứa 3 dòng và Sales là 5 dòng.

Các giá trị tương ứng trên cả hai phía của mối quan hệ điều này có nghĩa là không có vi phạm tính toàn vẹn của tham chiếu. Bảng query-time expanded được hiển thị, bao gồm các cột từ 3 bảng. Nó thực sự là một góc nhìn không chuẩn hóa của dữ liệu có trong ba bảng. Một dòng mới được thêm vào bảng Sales và nó có giá trị (9) không tương ứng với bảng Product. Đó là một vi phạm tham chiếu toàn vẹn. Trong bảng mở rộng, hàng mới có giá trị trống (Blank) cho các cột trong bảng CategoryProduct.

2.2. Limited relationships

Một mô hình mối quan hệ là limited (bị giới hạn) khi không có “one” side nào được đảm bảo. Nó có thể là trường hợp vì 2 lý do:

  • Mối quan hệ sử dụng một loại cardinality Many-to-many (thậm chí nếu một hoặc cả hai cột chứa các giá trị duy nhất).
  • Mối quan hệ là cross-island (đối với Composite model).

Trong ví dụ dưới đây, có hai mối quan hệ bị giới hạn, cả hai được đánh dấu là L. Hai mối quan hệ bao gồm Many-to-many có trong Vertipad island và mối quan hệ One-to-many cross-island

Đối với mô hình Import, cấu trúc dữ liệu thì không bao giờ được tạo cho mối quan hệ bị giới hạn. Điều này có nghĩa là phép nối bảng (join) phải được giải quyết tại thời điểm truy vấn.

Mở rộng bảng không bao giờ xảy ra đối với mối quan hệ bị giới hạn. Các phép nối bảng đạt được bằng cách sử dụng INNER JOIN vì vậy, các hàng ảo trống không được thêm vào để bù cho các vi phạm toàn vẹn tham chiếu.

Các hạn chế bổ sung liên quan đến các mối quan hệ hạn chế:

  • Không thể sử dụng hàm RELATED DAX  để truy xuất giá trị cột “one” side.
  • Thực thi RLS có các hạn chế về cấu trúc liên kết.

Lưu ý: Trong Power BI Desktop, không phải lúc nào bạn cũng có thể xác định mối quan hệ mô hình là regular hay limited. Mối quan hệ Many-to-many sẽ luôn luôn là limited cũng như mối quan hệ One-to-many khi đó là mối quan hệ cross-island.

Để xác định xem đó có phải là mối quan hệ cross-island, bạn sẽ cần kiểm tra các chế độ lưu trữ bảng và nguồn dữ liệu để đi đến xác định chính xác.

2.3. Các quy tắc ưu tiên

Các mối quan hệ Bi-direction có thể giới thiệu nhiều đường dẫn truyền bộ lọc – và do đó không rõ ràng giữa các bảng mô hình.

Danh sách sau đây trình bày các quy tắc ưu tiên mà Power BI sử dụng để phát hiện sự không rõ ràng và giải quyết đường dẫn:

  1. Mối quan hệ Many-to-one và One-to-one, bao gồm mối quan hệ limited.
  2. Mối quan hệ Many-to-many
  3. Mối quan hệ Bi-direction, theo hướng ngược lại (từ “Many” side).
2.4. Tùy chọn hiệu suất

Danh sách sau đây sắp xếp thứ tự hiệu suất truyền bộ lọc, từ hiệu suất nhanh đến chậm nhất:

  1. Mối quan hệ One-to-many intra-island
  2. Mối quan hệ cardinality Many-to-many
  3. Mối quan hệ mô hình Many-to-many đạt được với một bảng trung gian và liên quan đến ít nhất một mối quan hệ bi-direction.
  4. Mối quan hệ cross-island.

Như vậy, chúng ta đã hoàn tất bài viết về model relationships trong Power BI Desktop. Đừng quên đón đọc những nội dung mới nhất sẽ được cập nhật tại website bacs.vn. Hiện nay, các bạn có thể tham gia khóa học Power BI tại BAC để được trang bị những kiến thức nền tảng về phân tích dữ liệu và ứng dụng công cụ này trong các phân tích của riêng mình.

Nguồn tham khảo:
https://docs.microsoft.com/

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: 

Các bài viết liên quan Power BI: 

    Các bài viết liên quan: 

    • TABLEAU – Giải pháp BUSINESS INTELLIGENCE (BI) – click vào đây
    • Hướng dẫn cài đặt và Sử dụng TABLEAU – click vào đây
    • Tính năng mới trên tableau – verion 2019.1 – click vào đây

    BAC – Biên soạn và tổng hợp nội dung

     

    Previous Post
    Next Post