Excel DAX - Bối cảnh đánh giá
Trong DAX, ngữ cảnh là một thuật ngữ quan trọng mà bạn nên biết khi viết công thức DAX. Còn được gọi làevaluation context, Ngữ cảnh DAX được sử dụng để xác định đánh giá của công thức DAX và kết quả tương ứng. Điều này có nghĩa là, kết quả của công thức DAX có thể thay đổi tùy theo ngữ cảnh. Bạn nên hiểu rõ cách sử dụng ngữ cảnh DAX cụ thể và kết quả có thể khác nhau như thế nào.
Ngữ cảnh đánh giá cho phép bạn thực hiện phân tích động, trong đó kết quả của công thức DAX có thể thay đổi để phản ánh hàng hiện tại hoặc lựa chọn ô và cả bất kỳ dữ liệu liên quan nào. Hiểu ngữ cảnh và sử dụng ngữ cảnh hiệu quả là rất quan trọng để xây dựng các công thức DAX mạnh mẽ, thực hiện phân tích dữ liệu động và khắc phục sự cố trong công thức DAX. Các ngữ cảnh đánh giá là cơ sở của tất cả các tính năng nâng cao của DAX mà bạn cần phải nắm vững để tạo các báo cáo phân tích dữ liệu phức tạp.
Khi bạn tiếp tục tham chiếu đến các hàm DAX để sử dụng có liên quan trong các công thức DAX, bạn cần tham khảo chương này về ngữ cảnh DAX để có được kết quả rõ ràng.
Các loại ngữ cảnh trong DAX
DAX hỗ trợ các bối cảnh đánh giá sau:
- Ngữ cảnh hàng
- Bối cảnh bộ lọc
Khi công thức DAX được đánh giá, tất cả các ngữ cảnh sẽ được tính đến và được áp dụng khi có liên quan. Các ngữ cảnh tồn tại cùng nhau và kết quả của công thức sẽ khác nhau dựa trên ngữ cảnh được sử dụng trong khi tính toán một giá trị. Ví dụ: khi bạn chọn các trường cho hàng, cột và bộ lọc trong PivotTable, tổng phụ được tính động dựa trên hàng và cột nào mà tổng / tổng phụ được liên kết với và các giá trị trong hàng và cột được xác định bởi bộ lọc đã sử dụng.
Ngữ cảnh hàng
Ngữ cảnh hàng có nghĩa là công thức DAX hoặc hàm DAX biết dòng nào của bảng mà nó đang tham chiếu tại bất kỳ thời điểm nào. Bạn có thể coi ngữ cảnh hàng là hàng hiện tại. Công thức sẽ được tính toán từng hàng với ngữ cảnh hàng.
Một số hàm DAX (ví dụ: hàm X, FILTER ()) và tất cả các cột được tính toán đều có ngữ cảnh hàng. Ví dụ: nếu bạn tạo cột được tính toán Năm với công thức DAX = YEAR ([Ngày]), các giá trị của cột được tính toán sẽ nhận được bằng cách áp dụng công thức DAX đã cho trên cột đã cho trong bảng, theo từng hàng.
Điều này có nghĩa là nếu bạn đã tạo một cột được tính toán, ngữ cảnh hàng bao gồm các giá trị trong mỗi hàng riêng lẻ và giá trị trong các cột có liên quan đến hàng hiện tại, như được xác định bởi công thức DAX được sử dụng. Mặc dù công thức DAX không chứa tham chiếu đến một hàng, DAX ngầm hiểu ngữ cảnh hàng trong khi tính toán các giá trị.
DAX tự động tạo ngữ cảnh hàng khi bạn xác định cột được tính toán và tất cả các giá trị được tính toán với công thức DAX được sử dụng sẽ xuất hiện trong cột được tính toán.
Ngược lại, khi bạn có một hàm DAX chẳng hạn như SUMX, các giá trị được tính theo từng hàng sẽ được cộng lại và chỉ kết quả cuối cùng mới được hiển thị. Nghĩa là, các giá trị trung gian bị loại bỏ.
Khi bạn có các bảng liên quan, ngữ cảnh hàng xác định hàng nào trong bảng liên quan được liên kết với hàng hiện tại. Tuy nhiên, ngữ cảnh hàng không tự động truyền qua các mối quan hệ. Bạn phải sử dụng các hàm DAX - LIÊN QUAN và CÓ LIÊN QUAN cho việc này.
Bối cảnh nhiều hàng
DAX có các chức năng của trình lặp như SUMX. Bạn có thể sử dụng các hàm này để lồng các ngữ cảnh hàng. Với điều này, theo chương trình, bạn có thể có một đệ quy qua một vòng lặp bên trong và một vòng lặp bên ngoài, nơi bạn có thể có nhiều hàng hiện tại và bối cảnh hàng hiện tại.
Ví dụ, bạn có thể sử dụng hàm DAX trước đó () để lưu trữ ngữ cảnh hàng từ thao tác trước thao tác hiện tại. Hàm này lưu trữ hai bộ ngữ cảnh trong bộ nhớ - một bộ ngữ cảnh biểu thị hàng hiện tại cho vòng lặp bên trong của công thức và một bộ ngữ cảnh khác đại diện cho hàng hiện tại cho vòng lặp bên ngoài của công thức. DAX tự động nạp các giá trị giữa hai vòng lặp để bạn có thể tạo các tổng hợp phức tạp.
Để có ví dụ, hãy tham khảo kịch bản - Tạo Công thức DAX để Xếp hạng Động các Giá trị trong chương Kịch bản - Xếp hạng và So sánh Giá trị.
Bối cảnh bộ lọc
Ngữ cảnh bộ lọc đề cập đến bất kỳ bộ lọc nào được áp dụng cho Mô hình dữ liệu trong DAX. Bối cảnh bộ lọc được tạo bởi PivotTable và cũng bởi các hàm DAX.
Bối cảnh bộ lọc do PivotTable tạo
Ngữ cảnh bộ lọc được tạo bởi PivotTable là bộ lọc tự nhiên được áp dụng bởi các lựa chọn được thực hiện trên các trường PivotTable từ sau:
- Rows
- Columns
- Filters
- Slicers
Bối cảnh bộ lọc được tạo bởi PivotTable, lọc các bảng bên dưới trong Mô hình Dữ liệu. Nếu các bảng có liên quan với nhau, thì các bộ lọc chảy xuống từ bảng tra cứu đến bảng dữ liệu. Điều đó có nghĩa là, bạn có thể lọc các bảng dữ liệu dựa trên kết quả từ các bảng tra cứu. Sự lan truyền bộ lọc không xảy ra theo chiều ngược lại. Tuy nhiên, bạn có thể sử dụng công thức DAX để lọc bảng tra cứu dựa trên kết quả từ bảng dữ liệu.
Bối cảnh bộ lọc được tạo bởi các hàm DAX
Bạn có thể sử dụng các hàm Bộ lọc DAX để xác định các trường được tính toán và các cột được tính toán, chứa các biểu thức bộ lọc kiểm soát các giá trị được sử dụng bởi công thức DAX. Các trường được tính toán và cột được tính toán này sau đó trở thành một phần của danh sách trường PivotTable và bạn có thể thêm chúng vào PivotTable. Bạn cũng có thể xóa có chọn lọc các bộ lọc trên các cột cụ thể bằng các chức năng Bộ lọc DAX này. Một ví dụ về hàm Bộ lọc DAX mạnh mẽ để tạo Ngữ cảnh bộ lọc là CALCULATE (). Để biết ví dụ, hãy tham khảo chương Kịch bản - Thực hiện các phép tính phức tạp.
Lọc ngữ cảnh như một bổ sung cho ngữ cảnh hàng
Ngữ cảnh hàng không tự động tạo ngữ cảnh bộ lọc. Bạn có thể đạt được điều tương tự với các công thức DAX có chứa các chức năng Bộ lọc DAX.