Forum Discussion
Filter depending on another filter
- Anonymous5 years ago
The problem you are facing is that Filter 1 propagates to clients and the invoices but stops there. It is not filtering activity because the there is no filter direction from Invoice to Activity. Are companies directly related to activities? If so, then you need to remodel the data. If not, then it is going to be difficult helping you without understanding the reports you need to develop. I can suggest a solution but it might ruin other reports for you. You need to be aware of the impact of this change before doing it. One solution is to change the filter direction of the relationship between Invoice and Activity to "Both". But again, as I told you, this might ruin other reports for you.
Another solution you might consider is to include the field of the Activity table you are using as a filter in the "Invoice" table through a Related() or Lookup() function. Then you can use the field from the Invoice activity for Filter2.
Anonymous
Here is a simple way. First the model in this example:
Create a measure (the table "Sales" is your fact table) :
Filter Other Slicer = COUNTROWS(RELATEDTABLE(Sales))
Add this measure to the slicer's filters (you want to select the corresponding values) in the filter pane and set the value to greater or equal to 1:
And this is the result. The selection in the "Channel" slicer filters the "Item" slicer :
- Anonymous5 years agoNot applicable
I love the solution but i do not understand how it works.
- PaulDBrown5 years agoCommunity Champion
Anonymous
The way this solution works is basically creating a measure to identify the rows being filtered by slicer 1.
As per Microsoft's documentation:"The RELATEDTETABLE function changes the context in which the data is filtered, and evaluates the expression in the new context that you specify".
When you wirte the expression RELATEDTABLE(Fact Table), it is creating a table of rows of the fact table which is in a relationship with the slicer. So if you filter value "A" in the slicer, it will return a table containg all the rows which have value "A". By wrapping it in COUNTROWS, you get a measure returning a value of 1 for each of these rows.
You can then use this measure as a filter for the second slicer, and since the RELATEDTABLE changes the context in which the data is filtered, the slicer values are filtered to show only the filtered rows from the fact table containing the equivalent values for the slicer. So the fact table, filtered by slicer 1, is now "filtering" (using COUNTROWS) slicer 2. Make sense?
BTW, you can use this measure to filter either slicer based on the selection made in one. So in my example, if I add this measure to both slicers, the selection on Channel slicer will filter the values in Item slicer; a selection in the item slicer will filter the values in Channel slicer.
If you need help to replicate this in your model, please provide a depiction of the model (the relevant dimension tables & the fact table they are related to)
- Syndicate_Admin5 years agoAdministrator
I love the solution, but I don't understand how it works.