Forum Discussion
Filter a table based on multiple selected values
purple_SP I hope this helps you. Thank You!
_Orders_BY_superhero_preference =
VAR SelectedOption =
SELECTEDVALUE ( SuperHeroes[name] )
VAR code =
SELECTEDVALUE ( SuperHeroes[code] )
VAR all_codes =
SELECTCOLUMNS ( SuperHeroes, "code", [code] )
RETURN
CALCULATE (
[_Orders],
FILTER (
OrderTable,
OrderTable[matched] = "Y"
&& OrderTable[order_number]
IN all_codes
&& SWITCH (
SelectedOption,
"Batman",
RELATED ( 'CustomerAttributes'[Fav_superHero] )
IN { "Batman", "Spiderman", "Superman" }
&& CONTAINSSTRING ( OrderTable[order_number], code ),
"Spiderman",
RELATED ( 'CustomerAttributes'[Fav_superHero] )
IN { "Batman", "Spiderman", "Superman" }
&& CONTAINSSTRING ( OrderTable[order_number], code ),
"Superman",
RELATED ( 'CustomerAttributes'[Fav_superHero] )
IN { "Batman", "Spiderman", "Superman" }
&& CONTAINSSTRING ( OrderTable[order_number], code )
)
)
)
- purple_SP2 years agoHelper I
Thanks for your reply Mahesh0016 .
It definitely helps. Would there be a way to account for cases where the different selected values require filtering different columns though?
For example say that the customer attribute table looked like this:
Customer id Favourite is Batman Favourite is Spiderman Favourite is Superman 123 1 2 4 456 6 1 9 789 9 6 1 And lets say I wanted to filter customers based on three segments:
-If selected superhero is Batman, filter all customers where "Favourite is Batman" = 1
-If selected superhero is Superman, filter all customers where "Favourite is Superman" = 1
-If selected superhero is Spiderman, filter all customers where "Favourite is Spiderman" = 1
At the moment I can modify my original code like so:
_Orders_BY_superhero_preference = VAR SelectedOption = SELECTEDVALUE(SuperHeroes[name]) VAR code = SELECTEDVALUE(SuperHeroes[code]) VAR all_codes = SELECTCOLUMNS(SuperHeroes,"code",[code]) RETURN CALCULATE([_Orders],FILTER(OrderTable, OrderTable[matched] = "Y" && OrderTable[order_number] IN all_codes && SWITCH( SelectedOption, "Batman", RELATED('CustomerAttributes'[Favourite_is_batman]) = 1 && CONTAINSSTRING(OrderTable[order_number],code), "Spiderman", RELATED('CustomerAttributes'[Favourite_is_Spiderman]) = 1 && CONTAINSSTRING(OrderTable[order_number],code), "Superman", RELATED('CustomerAttributes'[Favourite_is_Superman]) = 1 && CONTAINSSTRING(OrderTable[order_number],code) )))But this causes issues when two or more values are selected.
If I select Superman & Batman, is there a way to filter all customers where "Favourite is Batman" = 1 OR "Favourite is Superman" = 1?