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

Be one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now

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
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

Dec Fabric Community Survey

We want your feedback!

Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.

ArunFabCon

Microsoft Fabric Community Conference 2025

Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.

December 2024

A Year in Review - December 2024

Find out what content was popular in the Fabric community during 2024.