Phần mềm - Dịch vụ | Bảng giá |
Giỏ hàng trống |
06/06/2025 | Tran Van Dao
Trong Power BI DAX, việc hiểu rõ hai khái niệm Row và Filter Context là điều kiện tiên quyết để viết công thức chính xác và tối ưu hiệu suất mô hình dữ liệu. Nhiều người mới học DAX thường nhầm lẫn giữa hai loại này, dẫn đến kết quả sai lệch hoặc khó tối ưu mô hình. Bài viết này sẽ giúp bạn phân biệt rõ ràng giữa Row và Filter, từ đó áp dụng hiệu quả trong thực tế.
Row Context vs Filter Context: Phân biệt và Ứng dụng trong Power BI
Trước khi đi sâu vào từng loại, cần hiểu rằng “Context” trong DAX là môi trường mà tại đó một công thức được đánh giá. Đây là yếu tố quan trọng nhất ảnh hưởng đến cách một biểu thức DAX trả về giá trị.
DAX có hai loại cơ bản:
Cả hai đều đóng vai trò thiết yếu trong việc xử lý biểu thức, đặc biệt là khi viết các hàm như CALCULATE, SUMX, FILTER, hoặc các biểu thức phức tạp có điều kiện lọc động.
Định nghĩa Row vs Filter Context
Row Context là khi một biểu thức DAX được đánh giá trong bối cảnh của từng dòng riêng lẻ của một bảng. Khi DAX đọc qua từng dòng dữ liệu, nó hiểu rằng “tôi đang ở dòng này” và các cột trong dòng đó có giá trị cụ thể.
Ví dụ: New Price = Sales[Price] * 1.1
Trong công thức trên, DAX nhân Sales[Price] với 1.1 tại từng dòng, nghĩa là nó hiểu đang ở mỗi dòng cụ thể để áp dụng phép toán – đây chính là Row Context.
Một số hàm tạo Row phổ biến:
🔎 Ví dụ thực tế:
Giả sử bạn có bảng Sales gồm các dòng sản phẩm và giá trị đơn hàng. Khi tạo một cột mới Total = Sales[Quantity] * Sales[UnitPrice], Power BI sẽ tự động hiểu và áp dụng công thức theo từng dòng – đó là Row Context.
Filter Context xuất hiện khi một biểu thức DAX được đánh giá trong điều kiện lọc cụ thể, thường đến từ visual (biểu đồ, bảng), slicer, hoặc từ công thức DAX có sử dụng CALCULATE.
Ví dụ: Total Sales := CALCULATE(SUM(Sales[Amount]), Sales[Region] = “Hanoi”)
Trong biểu thức trên, CALCULATE áp dụng một điều kiện lọc (Filter) – chỉ tính tổng doanh số của khu vực “Hanoi”.
Filter Context có thể được áp dụng từ:
🔎 Ví dụ thực tế:
Trong một visual thể hiện doanh số theo khu vực, Power BI tự động áp dụng Filter cho từng vùng – nghĩa là biểu thức SUM(Sales[Amount]) được tính toán trong ngữ cảnh đã được lọc bởi từng giá trị vùng địa lý.
Khác biệt giữa Row Context và Filter Context
Tiêu chí | Row Context | Filter Context |
Định nghĩa | Bối cảnh áp dụng theo từng dòng dữ liệu cụ thể | Bối cảnh áp dụng điều kiện lọc dữ liệu |
Cách tạo ra | Tạo bởi các hàm lặp như SUMX, FILTER, hoặc calculated column | Tạo bởi visual, slicer hoặc hàm như CALCULATE, ALL, FILTER |
Tác động | Xác định giá trị của cột trong một dòng | Giới hạn tập dữ liệu được xử lý |
Dùng phổ biến ở đâu? | Calculated Columns, hàm lặp row-by-row | Measures (hàm đo), Visual, báo cáo có lọc dữ liệu |
Có thể chuyển đổi không? | Có thể dùng CALCULATE để biến Row thành Filter Context | Không thể tự động chuyển đổi Filter thành Row Context |
Một sai lầm phổ biến là nghĩ rằng DAX hiểu rõ filter mà người dùng muốn áp dụng trong các hàm lặp. Trong thực tế, khi bạn viết công thức như SUMX, DAX chỉ biết mỗi dòng mà nó đang xử lý, nó không “tự hiểu” filter ở ngoài visual nếu không được truyền vào rõ ràng.
Sức mạnh thực sự của DAX đến khi bạn hiểu cách kết hợp Row và Filter Context một cách linh hoạt. Dưới đây là một ví dụ:
Sales of Product A = CALCULATE(
SUMX(Sales, Sales[Quantity] * Sales[UnitPrice]),
Products[ProductName] = “Product A”)
Sự phối hợp này là cốt lõi để tạo ra các biểu thức DAX có điều kiện, động, và phù hợp với ngữ cảnh phân tích sâu trong Power BI.
Hiểu rõ Row và Filter Context là kỹ năng bắt buộc với bất kỳ ai làm việc với Power BI. Mỗi loại mang một vai trò khác nhau nhưng lại liên kết chặt chẽ trong các biểu thức DAX. Việc nắm bắt và vận dụng đúng giúp bạn xây dựng mô hình dữ liệu mạnh mẽ, viết công thức tối ưu và đảm bảo báo cáo phản ánh chính xác dữ liệu thực tế.
ĐỌC THÊM:
Tối Ưu Hóa Cùng Bộ Giải Pháp Microsoft Power Platform
Sơ đồ luồng dữ liệu là gì? Các bước xây dựng
Hotline