Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
6 years ago
Solved

DAX Help With Nested If

Hello 

I hope a kind soul may be able to help me out.  I am trying to convert the attached Cognos case statement into a DAX statement, in a caclulated column.  I have been trying for a whole using a mix of if(and and if(isblank and so on but simply cannot get my head around it and hence can't get it written to produce the correct result.  

Any DAX heroes suggest a statement that might work pretty please?

 

  • Something like this?

    Switch ( true ( )

    , [field1] = blank() && [field2] = blank() , "double oops"

    , [field1] = blank() , "type-1 oops"

    , [field2] = blank(), "type-2 oops"

    , "Undefined"

    )

6 Replies

  • Anonymous's avatar
    Anonymous
    Not applicable
    Use Switch statement in DAX. It will solve your problem.
  • Nathaniel_C's avatar
    Nathaniel_C
    Community Champion

    Hi Anonymous ,

    Try using a SWITCH() Switch is a link to explanation, and there are a lot of videos out there as well.

    SWITCH([Month],
                   1,"January",
                   2,"February",
                    "Some other month"
                   )

    Takes a group of nested ifs and turns it into a readable function. The function stops at the first one that is true.  I always think of it as a penny dropped into a pond, and if there is nothing to stop it (nothing true) then you get the value at the bottom.
    Let me know if you have any questions.

    If this solves your issues, please mark it as the solution, so that others can find it easily. Kudos are nice too.
    Nathaniel

    • Anonymous's avatar
      Anonymous
      Not applicable

      Nathaniel_C wrote:

      Hi Anonymous ,

      Try using a SWITCH() Switch is a link to explanation, and there are a lot of videos out there as well.

      SWITCH([Month],
                     1,"January",
                     2,"February",
                      "Some other month"
                     )

      Takes a group of nested ifs and turns it into a readable function. The function stops at the first one that is true.  I always think of it as a penny dropped into a pond, and if there is nothing to stop it (nothing true) then you get the value at the bottom.
      Let me know if you have any questions.

      If this solves your issues, please mark it as the solution, so that others can find it easily. Kudos are nice too.
      Nathaniel


      Hey Nathaniel


      Thanks for your reply - I've been having a play with 'Switch' since you kindly replied but am still struggling.  I think it is the mixture of the AND conditions mixed with me trying to compare where there are potentially blank values that are throwing me.  Also as I am calling different fields in the expression - do I need to nest the switch?  I'm very confused :(

      • DouweMeer's avatar
        DouweMeer
        Impactful Individual

        Something like this?

        Switch ( true ( )

        , [field1] = blank() && [field2] = blank() , "double oops"

        , [field1] = blank() , "type-1 oops"

        , [field2] = blank(), "type-2 oops"

        , "Undefined"

        )

  • Anonymous's avatar
    Anonymous
    Not applicable

    Or if you want to stay with if please see below. I didn't do exactly the same to yours but used all logical tests you need. Just replace it with your values.

    Play with it as it works, just tested it.

     

    fix = if(max(stores[Store name]) = "Aberfeldy", "Aberfeldy store",
    if(max(stores[Store name]) = "Abergele", "store",
    if(and(max(stores[Store name]) = "Abertillery",max(stores[Store number]) = 173),"warehouse",0)))
     
    daniel