Row Context vs Filter Context trong Power BI

06/06/2025   |   Tran Van Dao

Row Context vs Filter Context trong Power BI: Phân biệt và Ứng dụng DAX hiệu quả 

Phân biệt và Ứng dụng trong Power BI 

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 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

Row Context vs Filter Context: Phân biệt và Ứng dụng trong Power BI

Context trong DAX nghĩa là gì?

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: 

  • Row – bối cảnh dòng 
  • Filter – bối cảnh lọc 

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

Định nghĩa Row vs Filter Context

Row Context là gì? 

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: 

  • CALCULATE 
  • SUMX, AVERAGEX, FILTER, ADDCOLUMNS, v.v. 
  • Cột được tính toán (Calculated Columns) 

🔎 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 là gì? 

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ừ: 

  • Biểu đồ hoặc bảng trong báo cáo Power BI 
  • Các slicer hoặc filter trong giao diện người dùng 
  • Công thức DAX sử dụng CALCULATE, FILTER, ALL, REMOVEFILTERS,… 

🔎 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 chính giữa Row và Filter Context 

Khác biệt giữa Row Context và Filter Context

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. 

Ứng dụng kết hợp Row và Filter Context trong Power BI 

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”) 

  • SUMX tạo ra Row Context để tính từng dòng Sales 
  • CALCULATE áp dụng Filter Context để chỉ lọc dòng có 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. 

Kết luận 

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

Tìm hiểu về quy trình phát triển phần mềm

So sánh Giải pháp AI Automation, AI Workflow và AI Agent

Hotline

0833 052 299

Đối tác

BHK