Forum Discussion

Ykankam's avatar
Ykankam
Helper I
2 years ago
Solved

IF Statement

Hi All,

I have an IF Statement that is working fine. See below

GoldenBatch =
IF (
    [thaw_onTime] = "Y"
        && [proA_onTime] = "Y"
        && [BDS_onTime] = "Y"
        && [harvest_onTime] = "Y"
        && [%RFT_RFT] = "Y"
        && [titer_inFull] = "Y"
        && [yield_inFull] = "Y"
        && [deviation_RFT] = "Y",
    "Golden Batch",
    "Miss"
)

I want to modify condition in order to have three outputs all under one column i.e 
 "Golden Batch", "Miss", "In Progress". 
This is what I want to do
GoldenBatch =
IF (
    [thaw_onTime] = "Y"
        && [proA_onTime] = "Y"
        && [BDS_onTime] = "Y"
        && [harvest_onTime] = "Y"
        && [%RFT_RFT] = "Y"
        && [titer_inFull] = "Y"
        && [yield_inFull] = "Y"
        && [deviation_RFT] = "Y",
    "Golden Batch"
)
||
GoldenBatch =
IF (
    [thaw_onTime] = "N"
        && [proA_onTime] = "N"
        && [BDS_onTime] = "N"
        && [harvest_onTime] = "N"
        && [%RFT_RFT] = "N"
        && [titer_inFull] = "N"
        && [yield_inFull] = "N"
        && [deviation_RFT] = "N",
    "Miss",
||


IF(
[thaw_onTime] = BLANK()
|| [proA_onTime] = BLANK()
|| [BDS_onTime] = BLANK()
|| [harvest_onTime] = BLANK()
|| [%RFT_RFT] = BLANK()
|| [titer_inFull] = BLANK()
|| [yield_inFull] = BLANK()
|| [deviation_RFT] = BLANK(),
"In Progess"
)

What is the best way to write the DAX for the if statement to have more than 3 output variables
  • I actually found solution to this. 
    1. Either to use nested IF statements

    2. Use the switch function

     

    Nested IF statement will make it hard to read, thus the SWITCH function works. See solution below

    GoldenBatch =
    SWITCH (
        TRUE (),
        [thaw_onTime] = "Y"
            && [proA_onTime] = "Y"
            && [BDS_onTime] = "Y"
            && [harvest_onTime] = "Y"
            && [%RFT_RFT] = "Y"
            && [titer_inFull] = "Y"
            && [yield_inFull] = "Y"
            && [deviation_RFT] = "Y", "Golden Batch",
        [thaw_onTime] = "N"
            || [proA_onTime] = "N"
            || [BDS_onTime] = "N"
            || [harvest_onTime] = "N"
            || [%RFT_RFT] = "N"
            || [titer_inFull] = "N"
            || [yield_inFull] = "N"
            || [deviation_RFT] = "N", "Miss",
        [thaw_onTime] = BLANK ()
            || [proA_onTime] = BLANK ()
            || [BDS_onTime] = BLANK ()
            || [harvest_onTime] = BLANK ()
            || [%RFT_RFT] = BLANK ()
            || [titer_inFull] = BLANK ()
            || [yield_inFull] = BLANK ()
            || [deviation_RFT] = BLANK (), "In Progress"
    )

1 Reply

  • I actually found solution to this. 
    1. Either to use nested IF statements

    2. Use the switch function

     

    Nested IF statement will make it hard to read, thus the SWITCH function works. See solution below

    GoldenBatch =
    SWITCH (
        TRUE (),
        [thaw_onTime] = "Y"
            && [proA_onTime] = "Y"
            && [BDS_onTime] = "Y"
            && [harvest_onTime] = "Y"
            && [%RFT_RFT] = "Y"
            && [titer_inFull] = "Y"
            && [yield_inFull] = "Y"
            && [deviation_RFT] = "Y", "Golden Batch",
        [thaw_onTime] = "N"
            || [proA_onTime] = "N"
            || [BDS_onTime] = "N"
            || [harvest_onTime] = "N"
            || [%RFT_RFT] = "N"
            || [titer_inFull] = "N"
            || [yield_inFull] = "N"
            || [deviation_RFT] = "N", "Miss",
        [thaw_onTime] = BLANK ()
            || [proA_onTime] = BLANK ()
            || [BDS_onTime] = BLANK ()
            || [harvest_onTime] = BLANK ()
            || [%RFT_RFT] = BLANK ()
            || [titer_inFull] = BLANK ()
            || [yield_inFull] = BLANK ()
            || [deviation_RFT] = BLANK (), "In Progress"
    )