The ultimate Fabric, Power BI, SQL, and AI community-led learning event. Save €200 with code FABCOMM.
Get registeredCompete to become Power BI Data Viz World Champion! First round ends August 18th. Get started.
Hi Power BI community
I have a filter that can choose between three options called A,B and C
When I write this DAX code
Status = IF(SelectedValue(table[status]) = "A",1,0)
Then I get 1 if A is the selected value, but if A and B are selected or all options are selected then I get 0
I need to get the value 1 as long as A is one of the selected options regardless og what else I have selected.
All help is greatly appreciated.
Solved! Go to Solution.
SELECTEDVALUE by default always returns blank if more than one values are visible (two or emore selected, or none selected which is equivalent to all). To check whether A is in the selected values. try
-- Returns 1 if "A" is present in visible rows of 'table'[status] , otherwise returns 0
IF ( "A" IN VALUES ( 'table'[status] ), 1, 0 )
This will, of course, naturally return 0 if A is not among the selected values.
SELECTEDVALUE by default always returns blank if more than one values are visible (two or emore selected, or none selected which is equivalent to all). To check whether A is in the selected values. try
-- Returns 1 if "A" is present in visible rows of 'table'[status] , otherwise returns 0
IF ( "A" IN VALUES ( 'table'[status] ), 1, 0 )
This will, of course, naturally return 0 if A is not among the selected values.
Thanks @danextian it works as a charm and solved my problem write a way.
with a very short and elegant line of DAX.
Hey, @ThomasWeppler
selectedvalue always return blank if there's multuple values selected, however, you can modify the behavior with optional parameter:
IF(SELECTEDVALUE(table[status], "A") = "A",1,0)
@vojtechsima thanks for the answer, but if I just use
IF(SELECTEDVALUE(table[status], "A") = "A",1,0)
and the selected selectedvalues are "B" and "C" than I will still get a false positive.
@ThomasWeppler all right, get it now,
then use CONCATENATEX
IF(
CONTAINSSTRING( CONCATENATEX(VALUES(_table[status]), _table[status],""), "A"),
1,
0
)
but @danextian 's solution is better, cleaner and efficient.