Reputation: 11
I have created a DAX formula in which would provide me the cause for every Yes response. However, I noticed there was a potential to have multiple 'Yes' responses per row.
For example:
How can I have it where it pulls all the 'Yes' Responses, adds them in the Cause Column, and then parses the valves?
Cause =
IF(All_HAPI_Data[Cause_Edema]="Yes","Edema",
(IF(All_HAPI_Data[Cause_Equipment]="Yes", "Equipment",
(IF(All_HAPI_Data[Cause_Not_Propped]="Yes", "Not Propped",
(IF(All_HAPI_Data[Cause_Not_Turned]="Yes", "Not Turned",
(IF(All_HAPI_Data[Cause_Other]="Yes", "Other",
(IF(All_HAPI_Data[Cause_MASD_DD_IAD_ITD]="Yes", "MASD DD/IAD/ITD",
(IF(All_HAPI_Data[Cause_MASD_Erosion]="Yes", "MASD Erosion",
(IF(All_HAPI_Data[Cause_MARSI]="Yes", "MARSI",
(IF(All_HAPI_Data[Cause_Unstable]="Yes", "Unstable", "None Selected")))))))))))))))))
Upvotes: 1
Views: 473
Reputation: 40204
For a single value, I'd recommend using a SWITCH instead of a bunch of nested IF functions.
Cause =
SWITCH (
TRUE (),
All_HAPI_Data[Cause_Edema] = "Yes", "Edema",
All_HAPI_Data[Cause_Equipment] = "Yes", "Equipment",
All_HAPI_Data[Cause_Not_Propped] = "Yes", "Not Propped",
All_HAPI_Data[Cause_Not_Turned] = "Yes", "Not Turned",
All_HAPI_Data[Cause_Other] = "Yes", "Other",
All_HAPI_Data[Cause_MASD_DD_IAD_ITD] = "Yes", "MASD DD/IAD/ITD",
All_HAPI_Data[Cause_MASD_Erosion] = "Yes", "MASD Erosion",
All_HAPI_Data[Cause_MARSI] = "Yes", "MARSI",
All_HAPI_Data[Cause_Unstable] = "Yes", "Unstable",
"None Selected"
)
However, if you need to concatenate them, you can do this:
Cause =
VAR CauseList =
{
IF ( All_HAPI_Data[Cause_Edema] = "Yes", "Edema" ),
IF ( All_HAPI_Data[Cause_Equipment] = "Yes", "Equipment" ),
IF ( All_HAPI_Data[Cause_Not_Propped] = "Yes", "Not Propped" ),
IF ( All_HAPI_Data[Cause_Not_Turned] = "Yes", "Not Turned" ),
IF ( All_HAPI_Data[Cause_Other] = "Yes", "Other" ),
IF ( All_HAPI_Data[Cause_MASD_DD_IAD_ITD] = "Yes", "MASD DD/IAD/ITD" ),
IF ( All_HAPI_Data[Cause_MASD_Erosion] = "Yes", "MASD Erosion" ),
IF ( All_HAPI_Data[Cause_MARSI] = "Yes", "MARSI" ),
IF ( All_HAPI_Data[Cause_Unstable] = "Yes", "Unstable" )
}
VAR RemoveBlanks = FILTER ( CauseList, NOT ISBLANK ( [Value] ) )
RETURN
IF (
ISEMPTY ( RemoveBlanks ), "None Selected",
CONCATENATEX ( RemoveBlanks, [Value], ", " )
)
Side Note: In general, it's easier to work with unpivoted data in DAX. You could transform a table like
ID | Cause1 | Cause2 | Cause3 |
---|---|---|---|
1 | Yes | No | No |
2 | No | Yes | Yes |
Into
ID | Cause | YesNo |
---|---|---|
1 | Cause1 | Yes |
1 | Cause2 | No |
1 | Cuase3 | No |
2 | Cause1 | No |
2 | Cause2 | Yes |
2 | Cuase3 | Yes |
or more succinctly by filtering out No values entirely
ID | Cause |
---|---|
1 | Cause1 |
2 | Cause2 |
2 | Cause3 |
Either of these last two formats are much easier to write measures with.
Upvotes: 1