Khóa học
Mô hình dữ liệu là nền tảng để xây dựng các báo cáo Power BI sâu sắc. Nó giúp bạn xác định quan hệ rõ ràng giữa các bảng và tổ chức, làm sạch, truy xuất dữ liệu hiệu quả. Trong hướng dẫn này, bạn sẽ tìm hiểu về hàm RELATED trong Power BI.
Thông qua các ví dụ thực hành, bạn sẽ thấy cách hàm RELATED có thể nâng cao kỹ năng mô hình dữ liệu và lập báo cáo của bạn.
Nếu bạn còn mới với Power BI, bạn có thể làm quen với chủ đề này với lộ trình kỹ năng Power BI Fundamentals của chúng tôi.
Bạn cũng có thể tải về cheat sheet DAX và giữ sẵn để tham khảo khi học thêm về Power BI và DAX.
Cheat Sheet DAX của DataCamp
Hàm RELATED trong Power BI là gì?
RELATED là một hàm DAX trong Power BI cho phép bạn lấy một giá trị từ một cột trong bảng có liên quan. Điều quan trọng là hàm này chỉ hoạt động nếu có quan hệ giữa bảng hiện tại và bảng chứa cột cần lấy.
Hàm RELATED đơn giản hóa mô hình dữ liệu bằng cách cho phép bạn đưa dữ liệu phù hợp từ các bảng khác nhau vào mà không cần tự tay hợp nhất hay nối bảng.
Cú pháp của hàm RELATED như sau:
RELATED(ColumnToFetch)
Ví dụ đơn giản, giả sử bạn có một bảng Sales và một bảng Products riêng:
|
InvoiceID |
ProductID |
Quantity |
Price |
|
1000 |
123 |
2 |
21 |
|
1001 |
456 |
1 |
19.99 |
|
1002 |
123 |
3 |
31.5 |
|
1003 |
789 |
1 |
24.95 |
Bảng 1. Sales
|
ProductID |
ProductName |
UnitPrice |
|
123 |
Widget |
10.5 |
|
456 |
Gear |
19.99 |
|
789 |
Gizmo |
24.95 |
Bảng 2. Products
Bảng Sales theo dõi các giao dịch bán hàng, bao gồm Product ID cho mỗi giao dịch, nhưng không có tên hay chi tiết sản phẩm. Bảng Products chứa các tên và chi tiết đó liên kết với từng Product ID.
Nếu không có RELATED, bạn sẽ phải hợp nhất hai bảng nếu muốn tạo cột tính toán dùng tên sản phẩm ngay trong bảng Sales.
Với RELATED, bạn có thể tạo một cột mới trong bảng Sales hiển thị trực tiếp Product Name cho mỗi giao dịch bằng cách lấy từ bảng Products. Bạn cũng có thể dùng hàm RELATED trong một measure để truy xuất thông tin này một cách động.
|
InvoiceID |
ProductID |
Quantity |
Price |
Product Name |
|
1000 |
123 |
2 |
21 |
Widget |
|
1001 |
456 |
1 |
19.99 |
Gear |
|
1002 |
123 |
3 |
31.5 |
Widget |
|
1003 |
789 |
1 |
24.95 |
Gizmo |
Bảng 3. Sử dụng RELATED
Tìm hiểu về quan hệ trong Power BI
Trong Power BI, quan hệ cho phép bạn liên kết các bảng với nhau dựa trên các cột chung. Những quan hệ này là nền tảng cho cách Power BI tích hợp dữ liệu từ nhiều nguồn, cho phép tiếp cận kiểu cơ sở dữ liệu quan hệ trong mô hình dữ liệu của bạn.
Các loại quan hệ trong Power BI
Các loại quan hệ trong Power BI gồm:
- Một-một (1:1): Mỗi hàng trong một bảng liên quan đến một (và chỉ một) hàng trong bảng khác. Loại quan hệ này ít phổ biến.
- Một-nhiều (1:nhiều): Một hàng trong một bảng có thể liên quan đến nhiều hàng trong bảng khác. Đây là loại quan hệ phổ biến nhất trong Power BI.
- Nhiều-nhiều (nhiều:nhiều): Các hàng trong một bảng có thể liên quan tới nhiều hàng trong bảng khác và ngược lại. Do tính phức tạp và tác động hiệu năng tiềm ẩn, hãy sử dụng quan hệ nhiều-nhiều một cách thận trọng.
Tầm quan trọng của quan hệ đối với hàm RELATED
Hàm RELATED tận dụng các quan hệ này để lấy dữ liệu từ bảng liên quan và đưa vào ngữ cảnh của bảng hiện tại. Nếu không có các quan hệ được định nghĩa đúng, hàm RELATED sẽ không hoạt động.
Quan hệ cung cấp đường dẫn điều hướng rõ ràng cho RELATED, đảm bảo hàm biết chính xác phải lấy dữ liệu từ đâu.
Thực hành mô hình dữ liệu tốt và quan hệ được xác định rõ ràng cho phép hàm RELATED truy cập dữ liệu liên quan hiệu quả. Điều này giúp bạn tránh các phép tra cứu phức tạp và cải thiện hiệu năng cũng như khả năng sử dụng của các báo cáo Power BI.
Ví dụ thực hành với hàm RELATED
Giờ hãy xem một số ví dụ để hiểu RELATED hoạt động thực tế như thế nào.
Cách dùng cơ bản của RELATED
Giả sử chúng ta có một bảng chứa doanh số theo tháng theo sản phẩm nhưng không có tên hay danh mục sản phẩm, chỉ có ProductID. Chúng ta cũng có bảng Products với ProductID, ProductName và Category. Ta tạo quan hệ giữa hai bảng này bằng ProductID.
Chúng ta muốn phân tích doanh số theo danh mục sản phẩm. Để làm điều này, ta tạo một cột tính toán trong bảng Sales với công thức DAX sau, rồi có thể thêm cột này vào một trực quan trong báo cáo Power BI:
ProductCategory = RELATED(Products[ProductCategory])
RELATED rất phù hợp ở đây vì có quan hệ trực tiếp một-nhiều giữa Products và Sales, giúp việc lấy ProductName hoặc Category trở nên đơn giản.
Kịch bản nâng cao
RELATED đặc biệt mạnh khi bạn cần kéo dữ liệu từ bảng liên quan vào ngữ cảnh của bảng hiện tại.
Dùng RELATED trong một measure cho phép bạn thực hiện các phép tính động thay đổi theo ngữ cảnh lọc hiện tại của báo cáo. Measures được dùng để tổng hợp và có thể kết hợp dữ liệu liên quan thông qua các hàm theo ngữ cảnh hàng như SUMX.
Nếu bạn chưa quen với hàm SUMX, bạn có thể tìm hiểu thêm trong hướng dẫn SUMX chi tiết này.
Hãy khám phá phiên bản phức tạp hơn của ví dụ trước. Giả sử bạn có các bảng chứa nhiều sản phẩm với mức giá khác nhau và một mục tiêu doanh số động thay đổi theo sản phẩm và theo tháng. Mục tiêu của bạn là theo dõi hiệu suất doanh số hàng tháng so với các mục tiêu này theo từng danh mục sản phẩm.
Mô hình dữ liệu của chúng ta, vốn có bảng Sales và Products, nay có thêm bảng SalesTargets chứa mục tiêu doanh số theo tháng cho từng sản phẩm, gồm các cột ProductID, Month và TargetAmount.
Để dùng hàm RELATED đúng cách, chúng ta tạo quan hệ dựa trên khóa tổng hợp gồm kết hợp Product ID và Month ở cả bảng Sales và SalesTargets.
Mục tiêu là tính phần trăm đạt mục tiêu doanh số cho mỗi danh mục sản phẩm, mỗi tháng.
Monthly Target Achievement =
VAR TotalSalesRevenue =
SUMX(
Sales,
Sales[QuantitySold] * RELATED(Products[Price])
)
VAR MonthlyTarget =
SUMX(
Sales,
RELATED(SalesTargets[TargetAmount])
)
RETURN
IF(
MonthlyTarget > 0,
TotalSalesRevenue / MonthlyTarget,
BLANK()
)
Measure này tính TotalSalesRevenue bằng cách lặp qua bảng Sales, sử dụng RELATED để lấy Price theo từng sản phẩm. Sau đó, MonthlyTarget được tính bằng cách cộng các mức mục tiêu cho tháng và sản phẩm liên quan từ bảng SalesTargets.
Cuối cùng, measure chia tổng doanh thu bán hàng cho mục tiêu tháng để ra phần trăm đạt được, đồng thời đảm bảo chỉ trả về giá trị khi có mục tiêu được đặt (tránh chia cho 0).
Bạn có thể học thêm về phân tích dữ liệu tài chính trong lộ trình kỹ năng Financial Reporting in Power BI, với các ví dụ thực hành hướng dẫn bạn phân tích và trực quan hóa dữ liệu trong Power BI.
Hàm RELATED trong Power BI: Thực tiễn tốt nhất
Giờ khi đã nắm vững cách hoạt động của RELATED, hãy đi sâu hơn và khám phá một số thực tiễn tốt.
Chỉ dùng RELATED khi cần
Áp dụng RELATED cho các trường hợp bạn thực sự cần đưa dữ liệu từ bảng khác vào ngữ cảnh của bảng hiện tại để tính toán. Điều này đặc biệt hữu ích cho việc tạo các cột tính toán giúp đơn giản hóa quá trình xây dựng báo cáo.
Lạm dụng RELATED có thể khiến mô hình dữ liệu trở nên phức tạp không cần thiết, có thể làm chậm hiệu năng báo cáo. Nếu bạn có thể thực hiện phân tích trực tiếp thông qua các quan hệ trong trực quan mà không cần đưa dữ liệu vật lý vào bảng của mình, thì thường sẽ hiệu quả hơn.
Hiểu mô hình dữ liệu của bạn
Trước khi dùng RELATED, hãy đảm bảo bạn hiểu mô hình dữ liệu của mình, đặc biệt là các quan hệ giữa các bảng. RELATED yêu cầu một quan hệ đang hoạt động — thường là quan hệ một-nhiều, trong đó hàm được sử dụng ở phía "nhiều" để lấy dữ liệu từ phía "một".
Hàm RELATED không hoạt động với quan hệ nhiều-nhiều.
Nếu bạn dùng RELATED mà không định nghĩa đúng quan hệ hoặc hiểu sai hướng của quan hệ, điều đó có thể dẫn tới lỗi hoặc kết quả không mong muốn.
Hiểu hướng của quan hệ
Dùng RELATED để kéo dữ liệu từ bảng chính (phía một) vào bảng liên quan (phía nhiều). Điều này đặc biệt hữu ích khi bạn muốn đưa dữ liệu tra cứu từ các bảng khác vào tính toán hoặc phân tích của mình.
Dùng RELATED theo hướng ngược lại (từ nhiều sang một) mà không hiểu rõ có thể gây nhầm lẫn. Với hướng ngược, RELATEDTABLE có thể phù hợp hơn, dù nó trả về một bảng nên cần thêm các hàm tổng hợp.
Các lựa chọn thay thế RELATED
Khi hàm RELATED không phù hợp trong Power BI, có một số cách tiếp cận thay thế bạn có thể cân nhắc. Hai lựa chọn được đề cập ở đây là hàm LOOKUPVALUE và hợp nhất dữ liệu bằng Power Query.
LOOKUPVALUE
LOOKUPVALUE là một hàm cực kỳ linh hoạt, nhưng có thể chậm hơn RELATED. Lý do là nó tìm kiếm qua bảng theo từng hàng để tìm khớp. Trong ví dụ của chúng ta, có thể có hàng nghìn hoặc hàng triệu giao dịch bán hàng, điều này có thể làm chậm đáng kể hiệu năng báo cáo.
LOOKUPVALUE có thể là không cần thiết cho các nhu cầu đơn giản khi đã có quan hệ trực tiếp. Tuy nhiên, nếu bạn cần tiêu chí khớp phức tạp hơn, chưa có quan hệ được thiết lập, hoặc không quá lo về hiệu năng, LOOKUPVALUE mang lại nhiều linh hoạt hơn.
Nếu muốn tìm hiểu thêm, bạn có thể đọc hướng dẫn toàn diện về DAX LOOKUPVALUE này.
Hợp nhất dữ liệu với Power Query
Hợp nhất các bảng trong Power Query thực chất tạo ra một ảnh chụp tĩnh của dữ liệu tại thời điểm hợp nhất.
Nhưng giả sử bảng Products của bạn thường xuyên được cập nhật (thêm sản phẩm mới hoặc đổi danh mục). Khi đó, bảng đã hợp nhất trong Power Query sẽ không tự động phản ánh các cập nhật này nếu không làm mới cả bảng Products và Sales.
Các bảng đã hợp nhất có thể trở nên khá lớn và có thể làm chậm hiệu năng báo cáo, đặc biệt nếu bạn chỉ quan tâm tới một phần dữ liệu nhỏ từ bảng liên quan (như danh mục sản phẩm).
Kết luận
Hàm RELATED đơn giản hóa mô hình dữ liệu bằng cách lấy dữ liệu từ các bảng được kết nối dựa trên quan hệ, loại bỏ nhu cầu hợp nhất thủ công. Điều này cho phép bạn tạo các cột tính toán và measures kết hợp động dữ liệu từ các bảng khác.
Để sử dụng tối ưu, hãy dùng RELATED một cách chiến lược, chỉ đưa dữ liệu vào ngữ cảnh của bảng hiện tại khi cần thiết. Việc hiểu rõ mô hình dữ liệu và các quan hệ đã được thiết lập là tối quan trọng.
Nếu bạn muốn tiếp tục học về Power BI, bạn có thể thử các tài nguyên sau:
Câu hỏi thường gặp
Hàm RELATED có thể dùng với các quan hệ không hoạt động không?
Không, hàm RELATED không thể trực tiếp tận dụng các quan hệ không hoạt động trong Power BI. RELATED được thiết kế để làm việc với các quan hệ đang hoạt động giữa các bảng.
Trong mô hình Power BI, dù có thể tồn tại nhiều quan hệ giữa hai bảng, chỉ có một quan hệ có thể hoạt động tại một thời điểm. Quan hệ đang hoạt động là quan hệ mà Power BI tự động sử dụng cho hàm RELATED.
Hàm RELATED có thể dùng trong measure và cột tính toán không?
Mặc dù RELATED thường được dùng trong các cột tính toán, nó cũng có thể dùng trong measures, đặc biệt là bên trong các hàm lặp như SUMX, như chúng ta đã khám phá trong hướng dẫn này.
Khi dùng trong một measure, RELATED truy xuất dữ liệu từ bảng liên quan dựa trên ngữ cảnh hàng hiện tại do hàm lặp thiết lập. Điều này cho phép các phép tính động trên các bảng liên quan trong ngữ cảnh lọc của measure.
Hàm RELATED có thể dùng qua nhiều bảng trong một chuỗi quan hệ không?
Có, RELATED có thể đi qua một chuỗi các quan hệ giữa nhiều bảng, miễn là mỗi mắt xích trong chuỗi đều có quan hệ được định nghĩa đúng. Điều này cho phép các mô hình dữ liệu phức tạp, nơi RELATED có thể kéo dữ liệu thông qua các bảng trung gian.
Ngữ cảnh lọc ảnh hưởng thế nào đến việc dùng RELATED trong measures?
RELATED hoạt động trong ngữ cảnh lọc đã được thiết lập khi dùng trong measures, và ngữ cảnh này có thể được thay đổi bởi slicer, trực quan, hoặc các hàm DAX khác như CALCULATE.
Các giá trị được lấy bởi RELATED sẽ phản ánh ngữ cảnh lọc hiện tại, khiến nó trở nên động và phản hồi trước các thay đổi trong báo cáo. Điều này cho phép các phép tính nhạy theo ngữ cảnh, thích ứng với tương tác của người dùng.
