Forum Discussion
Filter depending on another filter
Hi everyone,
How can I have a filter which is dependant from another filter ?
Example :
FIlter 1 = Companies
Filter 2 = Activities
If I choose one company in Filter 1, I would like to have only activities from the selected company.
Is it possible? How to do so?
Have a nice day.
- 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.
10 Replies
- AnonymousNot applicable
Hi Anonymous ,
By default, the filters will filter each other. So the behavior you are looking for should be there by default. If it is not working, then it must be one of 2:
1- The interactions of Filter 1 are not set properly. For that, you can click on Filter 1 -> Format -> Edit Interactions -> make sure it filters the second filter.
2- The data model doesn't have correct relationships between the tables containing Companies and Activities. For that, you need to create a relationship in the model and make sure it has the correct direction.
- AnonymousNot applicable
I tried to make a relation between the 2 tables BUT it is a little bit more complicated.
PowerBI let me know that it is "already connected" by another relation.
In fact :
Company -> Client -> Invoice <- Activity
How can I do better?
- AnonymousNot applicable
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.
- PaulDBrownCommunity Champion
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 :
- AnonymousNot applicable
I love the solution but i do not understand how it works.
- PaulDBrownCommunity 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_AdminAdministrator
I love the solution, but I don't understand how it works.
- AnonymousNot applicable
thanks Anonymous