Forum Discussion
Filter a report by year dynamically
I have a set of data that is 2014-2017, but I only want to display 2015-2017 in my Matrix. The reason I have 2014 data in the data set is the 2015-2017 calculates year over year changes, so 2014 is needed so something shows up for the 2015 YOY calc.
In my Matrix though, 2014 is showing and the YOY rows are blank, because 2013 doesn't exist.
I know i can change the filter manually, but then I have to remember to change that every Jan 1.
I don't want to limit my Calendar table as that will exclude 2014 records completely.
Any ideas how to do this? it would be great if I could drop a variable in the Report Filter section but that doesn't work. Tried it already. Only accepts constants.
I think I found a solution. My Calendar table came from Power Query, so...
- Added a custom field called "Reportable Year"
- Gave it the formula =if Date.Year(DateTime.LocalNow()) - [Year] < 3 then true else false
- Put the "Reportable Year" value in the report page filter
- Checked "True"
This seems to be working with no ill effects. Kind of a hack, but not a ugly one. It shows all of 2017-2015, and the 2014 data is still being used and calculated in some of the "vs prior year" calculations in the 2015 data, so it seems to be replicating if I had hardcoded in the filter Year => 2015.
8 Replies
- AnonymousNot applicable
Can you get the Min(Year) from the fact table (this would be 2014 in your case), and then do a filter on the matrix where year <> Min(Year)?
- edhansCommunity Champion
Anonymous wrote:Can you get the Min(Year) from the fact table (this would be 2014 in your case), and then do a filter on the matrix where year <> Min(Year)?
I could, but I need to drag the year to the Rows section, and that is the data that needs to be filtered. Maybe I can create a measure in the Calendar table that is equal to the year unless it is Min(year) and then reports nothing and put that on the Row instead of the Year field. I suspect that will give me some weird blank though. I'll have to play with it.
- edhansCommunity Champion
Ugh. Here is my solution, and I do not like it. Seems like a hack.
- Create a new column in my Calendar table that if the year is the same as the min(year) report null, otherwise pull the year.
- Use the newly defined Report YEar column in the Matrix
- Filter the view to not show blanks in the Report Year row.
So, this works, and will work automatically, but it seems like an ugly hack and I'd love a more elegant solution via DAX if possible.