Chào mọi người,
Dạo gần đây mình có làm một báo cáo Power BI khá lớn và gặp một vấn đề nhỏ là làm sao để người dùng có thể dễ dàng lọc dữ liệu theo các khoảng thời gian khác nhau (tuần, tháng, quý) mà không cần phải tạo từng slicer riêng lẻ. Sau một hồi tìm tòi thì mình đã tìm ra cách làm khá hay, muốn chia sẻ lại cho anh em nào đang gặp tình huống tương tự.
Cách này sẽ giúp tạo ra một slicer duy nhất, cho phép người dùng chọn lọc theo tuần, tháng hoặc quý một cách linh hoạt.
Các bước thực hiện:
- Đầu tiên, bạn cần có một bảng Calendar (Lịch) trong Power BI. Nếu chưa có, bạn có thể tạo bằng DAX hoặc Power Query. Bảng này cần có các cột như Date, WeekOfYear, Month, Quarter, Year.
- Tạo một bảng mới (hoặc calculated table) để chứa các tùy chọn lọc thời gian. Ví dụ:
TimeFilterOptions = DATATABLE ( "FilterType", STRING, { { "Tuần" }, { "Tháng" }, { "Quý" } } ) - Tạo một slicer từ cột
FilterTypetrong bảngTimeFilterOptions. - Tiếp theo, bạn cần tạo một measure để xác định giá trị lọc dựa trên lựa chọn của slicer. Ví dụ:
SelectedFilter = SELECTEDVALUE(TimeFilterOptions[FilterType]) - Cuối cùng, áp dụng logic lọc vào các biểu đồ hoặc bảng của bạn. Bạn có thể tạo các measure điều kiện dựa trên
SelectedFilter. Ví dụ, nếu muốn lọc theo tuần:SalesThisWeek = IF( [SelectedFilter] = "Tuần", CALCULATE( [Total Sales], FILTER( 'Calendar', 'Calendar'[WeekOfYear] = MAX('Calendar'[WeekOfYear]) ) ), BLANK() )Bạn sẽ cần điều chỉnh logic này cho tháng và quý tương ứng.
Cách này tuy hơi thủ công một chút nhưng mang lại trải nghiệm rất tốt cho người dùng cuối. Hy vọng chia sẻ này hữu ích cho mọi người!