Excel DAX - Thực hiện các phép tính phức tạp
Công thức DAX có thể thực hiện các phép tính phức tạp liên quan đến tổng hợp tùy chỉnh, lọc và sử dụng các giá trị có điều kiện. Bạn có thể làm như sau với DAX -
- Tạo các phép tính tùy chỉnh cho PivotTable.
- Áp dụng bộ lọc cho công thức DAX.
- Xóa bộ lọc một cách chọn lọc để tạo tỷ lệ động.
- Sử dụng một giá trị từ một vòng lặp bên ngoài.
Tạo các tính toán tùy chỉnh cho PivotTable
Các hàm DAX CALCULATE và CALCULATETABLE rất mạnh mẽ và linh hoạt. Chúng hữu ích để xác định các trường được tính toán. Các hàm DAX này cho phép bạn thay đổi ngữ cảnh mà phép tính sẽ được thực hiện. Bạn cũng có thể tùy chỉnh kiểu tập hợp hoặc phép toán để thực hiện.
Hàm TÍNH TOÁN
TÍNH TOÁN (<biểu thức>, [<filter1>], [<filter2>]…)
Hàm CALCULATE đánh giá biểu thức đã cho trong ngữ cảnh được sửa đổi bởi không hoặc nhiều bộ lọc được chỉ định.
Nếu dữ liệu của bạn đã được lọc, hàm CALCULATE sẽ thay đổi ngữ cảnh mà dữ liệu được lọc và đánh giá biểu thức trong ngữ cảnh mới mà bạn chỉ định bởi bộ lọc. Điều đó có nghĩa là, mọi bộ lọc hiện có trên cột được chỉ định sẽ bị xóa và bộ lọc được sử dụng trong đối số bộ lọc được áp dụng thay thế.
Thí dụ
Giả sử bạn muốn hiển thị phần trăm số huy chương được lọc theo tên Quốc gia. Tính toán của bạn sẽ nhận được giá trị phần trăm ghi đè bộ lọc mà bạn áp dụng cho Quốc gia trong PivotTable.
Xác định trường được tính toán - Phần trăm Tổng số huy chương như được hiển thị trong ảnh chụp màn hình sau.
Với công thức DAX này, tất cả các hàng trong bảng Kết quả được tính đến trong hàm CALCULATE với bộ lọc chứa hàm ALL. Bằng cách này, bạn có tổng số ở mẫu số.
PivotTable của bạn sẽ được hiển thị trong ảnh chụp màn hình sau.
Trong ảnh chụp màn hình ở trên, Quốc gia được lọc thành Hoa Kỳ và 18 giá trị hàng đầu được hiển thị trong PivotTable. Tiếp theo, bạn có thể lọc động các giá trị trong PivotTable. Tuy nhiên, các tính toán sẽ chính xác theo công thức DAX tùy chỉnh mà bạn đã sử dụng.
Hàm CALCULATETABLE nhận một bảng giá trị và thực hiện hành động tương tự như của hàm CALCULATE.
Lọc dữ liệu trong công thức
Bạn có thể tạo bộ lọc trong công thức DAX, để chọn giá trị từ dữ liệu nguồn để sử dụng trong tính toán. Bạn có thể thực hiện việc này bằng cách xác định biểu thức bộ lọc và sử dụng biểu thức đó cùng với bảng là đầu vào cho công thức DAX.
Biểu thức bộ lọc cho phép bạn lấy một tập hợp con của dữ liệu nguồn. Bộ lọc được áp dụng động mỗi khi bạn cập nhật kết quả của công thức DAX, tùy thuộc vào ngữ cảnh hiện tại của dữ liệu của bạn và bạn có thể yên tâm về kết quả chính xác và mong đợi.
Biểu thức bộ lọc thường chứa hàm lọc DAX chỉ trả về các hàng đã chọn của bảng, sau đó có thể được sử dụng làm đối số cho một hàm DAX khác mà bạn đang sử dụng để tổng hợp dữ liệu.
Thí dụ
Ảnh chụp màn hình sau đây cho thấy định nghĩa của một trường được tính toán chỉ tính số huy chương cho các môn thể thao mùa hè.
Với trường được tính toán này, PivotTable trông như được hiển thị trong ảnh chụp màn hình sau.
Như bạn có thể quan sát, các giá trị trong PivotTable ở phía bên phải với trường được tính toán mới khớp với các giá trị trong PivotTable ở phía bên trái với bộ lọc trên trường Phần được áp dụng rõ ràng.
Note - Các hàm giá trị và bộ lọc DAX trả về một bảng, nhưng không bao giờ trả lại bảng hoặc các hàng trực tiếp vào Mô hình Dữ liệu và do đó luôn được nhúng trong một hàm DAX khác.
Để biết chi tiết về các hàm DAX này, hãy tham khảo chương - Các hàm bộ lọc DAX.
Tự động thêm và xóa bộ lọc
Công thức DAX mà bạn sử dụng trong PivotTable có thể bị ảnh hưởng bởi ngữ cảnh PivotTable. Tuy nhiên, bạn có thể thay đổi ngữ cảnh một cách chọn lọc bằng cách thêm hoặc bớt các bộ lọc. Bạn có thể sử dụng các hàm DAX ALL và ALLEXCEPT để chọn động các hàng không phân biệt ngữ cảnh PivotTable.
Ngoài ra, bạn có thể sử dụng các hàm DAX DISTINCT và VALUES để trả về các giá trị riêng biệt.
Sử dụng giá trị từ vòng lặp bên ngoài
Bạn có thể sử dụng một giá trị từ vòng lặp trước đó để tạo một tập hợp các phép tính liên quan với hàm DAX EARLIER. Hàm DAX này hỗ trợ tối đa hai cấp vòng lặp lồng nhau.