Bỏ qua để đến nội dung

Filter context vs Row context

Ngữ cảnh tính toán (evaluation context) là khái niệm khó nhất nhưng quan trọng nhất của DAX. Cùng một measure cho kết quả khác nhau tùy ngữ cảnh — hiểu điều này là ranh giới giữa “dùng được” và “thật sự giỏi” DAX.

  • tập hợp bộ lọc đang áp lên model tại điểm tính: từ visual (hàng/cột), slicer, filter pane, và CALCULATE.
  • Quyết định measure “nhìn thấy” dữ liệu nào.

Ví dụ: measure Total Sales = SUM(Sales[Amount]) đặt trong bảng có cột “Năm”:

  • Ở hàng 2024 → filter context = Year=2024 → chỉ tính doanh thu 2024.
  • Ở hàng 2025 → filter context = Year=2025.
  • Ở dòng Total → không lọc năm → tính tất cả.

→ Measure tự thích nghi theo nơi nó hiển thị, nhờ filter context.

  • Là khái niệm “hàng hiện tại” — tồn tại trong calculated column và bên trong iterators (SUMX…).
  • Cho phép biểu thức tham chiếu giá trị của từng hàng.
-- Row context: SUMX duyệt từng hàng Sales
Total = SUMX ( Sales, Sales[Quantity] * Sales[Price] )

Tại mỗi hàng, Sales[Quantity]Sales[Price] là giá trị của hàng đó.

Filter contextRow context
”Câu hỏi”Đang lọc dữ liệu nào?Đang ở hàng nào?
Có ở đâuMeasure, visual, CALCULATECalculated column, iterators
Tự cộng dồn?Có (lọc kết hợp)Không tự thành filter
  • Row context KHÔNG tự động lọc model. Để biến “hàng hiện tại” thành bộ lọc, cần CALCULATE — gọi là context transition.
  • Đây là lý do gọi measure bên trong iterator thường cần hiểu CALCULATE ngầm.
Chia sẻ: