Forum Discussion
Reverse Selection in Visuals (reverse slicer)
- 8 years ago
OK amnadeem1991, I believe I have it.. What I did was duplicate my disconnected table CategoryExcept as CategoryExcept1. This should also be a completely disconnected table (not connected to CategoryExcept or ExceptCategories in my model.
Then, create your second slicer based upon CategoryExcept, your original disconnected table. Edit interactions to not have this slicer filter the table that you have that you created with the original "Measures to Show". Now, create the following measure:
Measures to Show 1 = VAR mytable1 = EXCEPT(ALL(CategoryExcept[Category]),VALUES(CategoryExcept[Category])) VAR mytable = EXCEPT(mytable1,VALUES(ExceptCategories[Category])) RETURN IF( ISFILTERED(ExceptCategories[Category]), IF(HASONEVALUE(CategoryExcept1[Category]), SWITCH(VALUES(CategoryExcept1[Category]), "Consultancy",IF(CONTAINS(mytable,[Category],"Consultancy"),[ConsultancySum],BLANK()), "Fruit",IF(CONTAINS(mytable,[Category],"Fruit"),[FruitSum],BLANK()), "Hardware",IF(CONTAINS(mytable,[Category],"Hardware"),[HardwareSum],BLANK()), "Juices",IF(CONTAINS(mytable,[Category],"Juices"),[JuicesSum],BLANK()), "Office Supplies",IF(CONTAINS(mytable,[Category],"Office Supplies"),[OfficeSuppliesSum],BLANK()), "PPE",IF(CONTAINS(mytable,[Category],"PPE"),[PPESum],BLANK()), "Software",IF(CONTAINS(mytable,[Category],"Software"),[SoftwareSum],BLANK()), BLANK() )) )You should notice that this is exactly the same as the original "Measures to Show" measure (uses the same measures you previously created) except for the first two VAR lines and the references to CategoryExcept1 instead of CategoryExcept. Effectively, what those two VAR lines are doing are taking all of your category values, excluding the values selected in your first slicer and then excluding the values you selected in your second slicer. Create a table visualization with the Category from CategoryExcept1 and this new "Measures to Show 1" and you should have what you are looking for. In theory, you could essentially continue this technique ad infinitum.
Greg_Deckler Great stuff, it really worked... Thanks a lot. However, either the solution is workable for 1 time selection of categories, or I am not able to make it usefull for more than 1 tables/slicers. I have uploaded the latest Excel and .pbix file on following dropbox link: https://www.dropbox.com/sh/omel37fmyevwfzd/AACmcZ227rD80ua2Rq2tqJPua?dl=0.
I followed your syntax, created table (1) that simply shows overall categories. Then I created slicer (1) and table (2). When I select any categories (like, Office Supplies and PPE) from Slicer (1), the table (2) shows rest of the categories (all except Office Supplies and PPE) - That's great, and fulfills the fisrt part of requirement.... However, next to it, I need to have another slicer (2) and table (3). Once "Office Supplies and PPE" are selected from Slicer (1), the Table (2) and Slicer (2) both should show left-over categories (all except Office Supplies and PPE). Then, out of those left-over categories in Slicer (2), I need to select further categories (say, Consultancy and Hardware), then the table (3) should show only the categories selected in Slicer (2), and the table (4) should further drill down to show another list of overall balance categories (all except Office Supplies, PPE, Consultancy and Hardware). I hopw you understood the idea. Can you assist in reaching this schematic? Thank you. (If you wish to make changes in my .pbix file, please feel free to do so and share the updated file). Please also see the attached pictures to get better idea.
I'll see if I can find some time to take a look at this. This just seems like a ton of work to get to something that is done incredibily easily by just using select all and then unselecting the things you don't want. At that point, what you are asking for is absolutely trivial and will work without any code what-so-ever. I'm not getting the business case where selecting an item from a slicer is so vastly different than unselecting a value from a slicer.
- Greg_Deckler8 years agoCommunity Champion
OK amnadeem1991, I believe I have it.. What I did was duplicate my disconnected table CategoryExcept as CategoryExcept1. This should also be a completely disconnected table (not connected to CategoryExcept or ExceptCategories in my model.
Then, create your second slicer based upon CategoryExcept, your original disconnected table. Edit interactions to not have this slicer filter the table that you have that you created with the original "Measures to Show". Now, create the following measure:
Measures to Show 1 = VAR mytable1 = EXCEPT(ALL(CategoryExcept[Category]),VALUES(CategoryExcept[Category])) VAR mytable = EXCEPT(mytable1,VALUES(ExceptCategories[Category])) RETURN IF( ISFILTERED(ExceptCategories[Category]), IF(HASONEVALUE(CategoryExcept1[Category]), SWITCH(VALUES(CategoryExcept1[Category]), "Consultancy",IF(CONTAINS(mytable,[Category],"Consultancy"),[ConsultancySum],BLANK()), "Fruit",IF(CONTAINS(mytable,[Category],"Fruit"),[FruitSum],BLANK()), "Hardware",IF(CONTAINS(mytable,[Category],"Hardware"),[HardwareSum],BLANK()), "Juices",IF(CONTAINS(mytable,[Category],"Juices"),[JuicesSum],BLANK()), "Office Supplies",IF(CONTAINS(mytable,[Category],"Office Supplies"),[OfficeSuppliesSum],BLANK()), "PPE",IF(CONTAINS(mytable,[Category],"PPE"),[PPESum],BLANK()), "Software",IF(CONTAINS(mytable,[Category],"Software"),[SoftwareSum],BLANK()), BLANK() )) )You should notice that this is exactly the same as the original "Measures to Show" measure (uses the same measures you previously created) except for the first two VAR lines and the references to CategoryExcept1 instead of CategoryExcept. Effectively, what those two VAR lines are doing are taking all of your category values, excluding the values selected in your first slicer and then excluding the values you selected in your second slicer. Create a table visualization with the Category from CategoryExcept1 and this new "Measures to Show 1" and you should have what you are looking for. In theory, you could essentially continue this technique ad infinitum.
- Anonymous8 years agoNot applicable
HI Greg_Deckler,
This approach is nice but it will work only for limited records. As in this case, categories are near about 10. What if records increases to 100. Then how am I supposed to create query for all of them? I have same requirement of reverse filtering where records are 'users' and slicer is 'date'.
Here is my query : https://community.powerbi.com/t5/Desktop/Non-Filtered-Data/m-p/482048#M14791
Thanks,
Piyush