Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
Anonymous
Not applicable

If Condition for Text not Working

Hey, I have a [Status] Column where I'm trying to consolidate the 7 different types into either Open or Closed. I've tried multiple IF statements, but PBI doesn't seem to be reading my data correctly. 

 

For example, the following are the status types...

-(Blank)

-Assigned

-Closed with Feedback

-Pending Expert

-Retired

-Submission Declined

-Work in Progress

 

Retired, Submission Declined, and Closed with Feedback all need to be grouped into status Classification: Closed. All the others need to be grouped: Open. 

 

My intial formula to test just one did not work: IF(Table1[Status] = "Retired", "Closed", Table1[Status]).

The new row just mirrors the old row. So somehow this is a false statement, I just don't know how to fix it. 

 

Any help would be appreciated. 

2 ACCEPTED SOLUTIONS
Anonymous
Not applicable

Such things should be done in Power Query (M), not in DAX. Use the right tool for the job. On top of that, M code would be very simple. No messing around with context and context transition.

DAX is a Data Analysis eXpressions language, not data mash-up language. M is.

Best
D.

View solution in original post

Anonymous
Not applicable

Hi there.

Again, this is not the way to do it. First, you should create an auxiliary table that will hold all the mappings from status to classification. Then, in PQ, you left outer join the target table to the mappings table and get the column you need.

This procedure makes sure you don't have to go back to the M code when you need to change a mapping or add a new one. All you have to do is manage the mappings which can be done in the source through SQL (if your data comes from a relational database).

Best
D.

View solution in original post

7 REPLIES 7
ayushqralgroup
Frequent Visitor

You can use IF in conjunction with OR logical operator as shown below:

 

Create a new column:

Final Status = IF( Table1[Status] = "Retired" ||Table1[Status] ="Submission Declined" || Table1[Status] ="Closed with Feedback", "Closed","Open") @Anonymous 

 

Hope this helps!

Anonymous
Not applicable

I would try to accomplish this with a measure using a switch statement such as:
status = switch([status],

Retired, "Closed"

Submission Declined, "Closed"

Closed with Feedback, "Closed"

assigned,"Open"

etc...

)
     

Anonymous
Not applicable

So I tested this out for a few of the status...

 

switch(Table1[Status],"Retired", "Closed", "Submission Declined", "Closed", "Assigned", "Open"). 
 
This resulted the entire column going to blank. Did I type this in incorrectly or do I have to fill out all of the 7 status for it to work?
 
Anonymous
Not applicable

Such things should be done in Power Query (M), not in DAX. Use the right tool for the job. On top of that, M code would be very simple. No messing around with context and context transition.

DAX is a Data Analysis eXpressions language, not data mash-up language. M is.

Best
D.
Anonymous
Not applicable


@Anonymous wrote:
Such things should be done in Power Query (M), not in DAX. Use the right tool for the job. On top of that, M code would be very simple. No messing around with context and context transition.

DAX is a Data Analysis eXpressions language, not data mash-up language. M is.

Best
D.

@Anonymous Thanks for pointing this out. I was not aware of the two langauges. 

I was able to use the Replace Value function on the Column inside the Advanced Editor and now it works. 

 

#"Replaced Value" = Table.ReplaceValue(#"Duplicated Column","Work In Progress","Open",Replacer.ReplaceText,{"Status - Copy"}),
#"Replaced Value1" = Table.ReplaceValue(#"Replaced Value","Pending Expert","Open",Replacer.ReplaceText,{"Status - Copy"}),
#"Replaced Value2" = Table.ReplaceValue(#"Replaced Value1","Assigned","Open",Replacer.ReplaceText,{"Status - Copy"}),
#"Replaced Value3" = Table.ReplaceValue(#"Replaced Value2","Pending Submitter Information","Open",Replacer.ReplaceText,{"Status - Copy"}), ..... etc

Anonymous
Not applicable

Hi there.

Again, this is not the way to do it. First, you should create an auxiliary table that will hold all the mappings from status to classification. Then, in PQ, you left outer join the target table to the mappings table and get the column you need.

This procedure makes sure you don't have to go back to the M code when you need to change a mapping or add a new one. All you have to do is manage the mappings which can be done in the source through SQL (if your data comes from a relational database).

Best
D.

Anonymous
Not applicable

If you wanted to stick with an IF statement it would have to be nested such as:

IF([status] = "retired","Closed",(IF([status] = "Submission Declined","Closed",(IF([status] ="assigned","open",(IF etc.. )))

but that could get long and messy which is why i recomend the switch statement above

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors