Mục lục
Video hướng dẫn chi tiết cách sử dụng hàm USERELATIONSHIP
Cú pháp của hàm USERELATIONSHIP
Hàm không trả về giá trị nào mà chỉ có tác dụng kích hoạt mối quan hệ đang bị inactive được tạo bởi hai cột đang là tham số bên trong USERELATIONSHIP.
| Syntax | USERELATIONSHIP(<columnName1>, <columnName2>)Trong đó: <ColumnName1>, <ColumnName2> là 2 cột trong một mối quan hệ one – to – many |
| Return | Hàm không trả về giá trị, mà chỉ kích hoạt mối quan hệ được chỉ định trong suốt thời gian tính toán. |
| Remarks | Chỉ có thể sử dụng hàm USERELATIONSHIP đối với các bảng đã có mối quan hệ. |
Giới thiệu Dataset

Ở ví dụ này, chúng ta có thể thấy bảng Date và bảng Sales có nhiều hơn một mối quan hệ.
- Date(DateKey) 1-n Sales(OrderDateKey)
- Date(DateKey) 1-n Sales(DueDateKey)
- Date(DateKey) 1-n Sales(ShipDateKey)
Để nhìn dễ hơn, các bạn có thể chọn Manage relationships ở trên thanh menu để xem các mối quan hệ đang có cũng như trạng thái hiện tại của chúng.

Chúng ta có đến 3 mối quan hệ giữa bảng Sales và bảng Date, tuy nhiên chỉ có Sales(OrderDateKey) – Date(DateKey) là đang ở trạng thái Active, hai mối quan hệ còn lại giữa Sales(DueDateKey) và Sales(ShipDateKey) với Date(DateKey) là đang ở trạng thái Inactive.
Như vậy, các bạn có thể thấy rằng bảng Date của chúng ta đang có tới 3 vai trò. Điều này cũng dễ hiểu bởi ngoài việc cần biết ngày đặt hàng, chúng ta cũng cần biết khi nào hàng cần chuyển đi và cần chuyển đi trước khi nào.
Và lúc này, khi tính toán cần sử dụng đến mối quan hệ đang ở trạng thái Inactive, hàm USEREALTIONSHIP sẽ cho phép ta kích hoạt nó mà không cần phải vào phần Model View để thay đổi trạng thái.
Hãy cùng đi vào ví dụ cụ thể bên dưới.
Use Case phổ biến của hàm USERELATIONSHIP
Role Playing Dimension
Giả sử chúng ta cần tạo một bảng trong đó gồm cột Month.

Và thêm 2 cột cần tính toán thêm đó là:
- Order Amount theo Order Date
- Ship Amount, tức Order Amount theo Ship Date
Công thức tính Order Amount theo Order Date rất đơn giản, chúng ta chỉ cần sử dụng hàm SUM() để tính tổng Sales Amount ở bảng Sales.

Để tính Ship Amount (Order Amount theo Ship Date), chúng ta sẽ cần sử dụng đến trường ShipDateKey trong bảng Sales. Tuy nhiên, để sử dụng được trường này, thì chúng ta cần kích hoạt mối quan hệ giửa cột Date ở bảng Date và cột ShipDateKey ở bảng Sales.

Để kích hoạt mối quan hệ trên và tính Order Amount theo Ship Date, chúng ta sẽ sử dụng hàm CALCUALTE kết hợp với USERELATIONSHIP và công thức DAX sẽ như sau:

So sánh 2 đối tượng trên 1 màn hình
Giả sử chúng ta có bảng Product và chúng ta muốn so sánh Order Amount giữa 2 category, nhưng việc so sánh này sẽ được thể hiện trên cùng 1 trang báo cáo.
Đầu tiên chúng ta tạo sẽ tạo:
- 2 slicer cho Product category
- 2 biểu đồ đường thể hiện Order Amount theo năm

Tiếp theo, trong Data Model, chúng ta sẽ tạo thêm một bảng mới giống với bảng Product hiện tại, và đặt tên bảng là Product 2. Ở đây chúng ta sẽ sử dụng DAX để tạo bảng mới.


Để 2 bảng Product có thể tương tác được với nhau, chúng ta sẽ tạo mối quan hệ giữa 2 bảng thông qua trường ProductKey.

Mối quan hệ hiện tại giữa hai bảng sẽ là 1:1 với chiều filter là 2 chiều, chúng ta sẽ chuyển trạng thái của mối quan hệ này thành Inactive.


Tiếp theo, chúng ta sẽ quay trở lại màn hình báo cáo, với Slicer thứ 2, chúng ta sẽ đổi sang sử dụng Category của bảng Product 2.

Đổi tên Slicer thành Category 2 đễ tránh bị nhầm lẫn.

Và để biểu đồ thay đổi theo khi chọn item trong Cateogry 2 nhưng không bị ảnh hưởng bởi Category của bảng Product gốc, chúng ta sẽ tạo ra một công thức DAX như sau:
Trong đó:
- REMOVEFILTERS ( ‘Product’ ): bỏ qua bộ lọc đang sử dụng cho Product chính
- USERELATIONSHIP ( ‘Product'[ProductKey], ‘Product 2′[ProductKey] ): kích hoạt mối quan hệ giữa 2 bảng Product và Product 2
Sau đó thay measure Order Amount đang sử dụng ở biểu đồ thứ 2 băng công thức chúng ta vừa tạo ở trên.


Như vậy là chúng ta đã hoàn thành việc tạo biểu đồ để so sánh giữa các danh mục trong Cateogry.

Tạm kết
Trong bài viết này, chúng ta đã tìm hiểu về hàm USERELATIONSHIP cũng như 2 use case phổ biến của hàm này. Hy vọng bài viết này đã mang tới cho bạn những kiến thức hữu ích trong việc xây dựng báo cáo.
Để có thể xem các thao tác trên một cách chi tiết, bạn hãy xem video được gắn ở đầu bài viết nhé.
Hãy theo dõi blog và kênh YouTube của Datapot để không bỏ lỡ các nội dung mới về DAX cũng như POWER BI.
Tìm hiểu thêm các khóa học Power BI tại Datapot chuẩn giáo trình của Microsoft và đăng ký học ngay hôm nay!
PL-300 – Microsoft Power BI Data Analyst
ĐƯỢC YÊU THÍCH BỞI NHỮNG HỌC VIÊN TỪ CÁC TỔ CHỨC TRONG NƯỚC VÀ QUỐC TẾ Khóa học tiêu chuẩn của Microsoft cung cấp các phương pháp khác nhau và bài thực hành dựa trên các yêu cầu thực tế của Doanh nghiệp để lập mô hình, trực quan hóa và phân tích dữ liệu…
APBI – Power BI Advanced Data Modeling and Visualization
ĐƯỢC YÊU THÍCH BỞI NHỮNG HỌC VIÊN TỪ CÁC TỔ CHỨC TRONG NƯỚC VÀ QUỐC TẾ Khóa học Power BI nâng cao sẽ đi sâu vào nâng cao mô hình dữ liệu và trực quan hóa dữ liệu. Khóa học này giúp người học có được tư duy phân tích, kỹ thuật và quy trình…
Data Analyst


