Trong quá trình phân tích dữ liệu với DAX, hai hàm FILTER và KEEPFILTERS đóng vai trò cực kỳ quan trọng. Hiểu rõ cách hoạt động và kết hợp của chúng là tiền đề để tối ưu hóa việc khai thác dữ liệu một cách tối ưu. FILTER giúp bạn tạo ra những bộ lọc tùy chỉnh trên một tập dữ liệu, mang lại sự linh hoạt cao và kiểm soát chi tiết hơn trong phép tính.
Hiểu Về Hàm FILTER
Cơ bản, hàm FILTER hoạt động bằng cách lọc ra những hàng dữ liệu đáp ứng một điều kiện nhất định. Nó cho phép người dùng duyệt qua từng hàng và chỉ giữ lại những giá trị nào phù hợp với tiêu chí đã thiết lập. Điều này trở nên vô cùng hữu dụng khi chúng ta cần thực hiện phân tích một phân khúc cụ thể của dữ liệu.
Hãy xét ví dụ khi làm việc với bảng Sales. Giả sử bạn chỉ muốn tính tổng doanh thu của sản phẩm A trong tháng Một:
CALCULATE(SUM(Sales[Revenue]), FILTER(Sales, Sales[Product] = "A" && Sales[Month] = 1))
Ví dụ trên áp dụng FILTER để chỉ chọn những hàng có Product là "A" và Month là "1", sau đó tính tổng doanh thu của các hàng được lọc.
Khám Phá Hàm KEEPFILTERS
Ngược lại với FILTER, hàm KEEPFILTERS không dùng để tạo ra bộ lọc mới, mà nó giúp duy trì các bộ lọc hiện có trước khi thêm một bộ lọc khác vào câu truy vấn. Đây là một công cụ mạnh mẽ để giữ nguyên bộ lọc ngữ cảnh đã tồn tại khi thêm điều kiện lọc mới.
Sự khác biệt này rất quan trọng khi bạn muốn tính toán một giá trị, nhưng vẫn muốn giữ lại các bộ lọc đã được áp dụng từ trước trong ngữ cảnh của dữ liệu.
Xem xét ví dụ tiếp theo, chúng ta áp dụng KEEPFILTERS:
CALCULATE(SUM(Sales[Revenue]), KEEPFILTERS(FILTER(Sales, Sales[Product] = "A")))
Chúng ta đang sử dụng FILTER để chỉ lọc sản phẩm "A", nhưng với KEEPFILTERS, chúng ta đảm bảo rằng bất kỳ bộ lọc nào trước đó, chẳng hạn như bộ lọc ngày tháng, sẽ không bị ghi đè.
Kết Hợp FILTER và KEEPFILTERS
Sử dụng hai hàm này cùng nhau mang lại tiềm năng lớn trong việc tùy biến truy vấn DAX. Bạn có thể vừa duy trì bộ lọc hiện có vừa gán thêm điều kiện mới một cách hiệu quả.
Nếu dữ liệu có thể có nhiều bộ lọc đã áp dụng, việc cẩn trọng trong việc sử dụng KEEPFILTERS sẽ giúp bạn tạo ra các phép toán mà không đánh mất ngữ cảnh quan trọng. Ví dụ, bạn có thể muốn duy trì bộ lọc về thị trường và chỉ thay đổi điều kiện sản phẩm mà thôi.
CALCULATE(SUM(Sales[Revenue]), KEEPFILTERS(FILTER(Sales, Sales[Market] = "Europe")), FILTER(Sales, Sales[Product] = "A"))
Ví dụ này biểu diễn cách duy trì bộ lọc cho thị trường "Europe" trong khi đồng thời lọc cho sản phẩm "A". Điều này rất hữu ích khi phân tích dự liệu tại nhiều chiều khác nhau mà không làm mất đi các điều kiện trọng yếu đã thiết lập trước đó.
Trong tổng hợp, việc hiểu và vận dụng hai hàm này nhuần nhuyễn giúp bạn kiểm soát và tối ưu hóa việc phân tích dữ liệu hơn rất nhiều. Điều này không chỉ giúp tránh các lỗi sai không mong muốn mà còn cải thiện hiệu suất phân tích trong dài hạn.