Forum Discussion

jankonas's avatar
jankonas
Advocate I
1 year ago
Solved

Strange DAX evaluation context

Hi community,

 

I have been trying to figure it out for a while but with no success.

 

I have an easy table where one IA has many types and I want to calculate only one type based on numbers. In this example, this IA has 134 RD (Rodinný dům (home house)) and 0 BD (apartment building). I compare both number and in this case it works fine. The result is Rodinný dům (home house)

This is the measure:

However, when I changed the measure to more and equeal, it will stop working properly (cross join is applied and context is lost)

The same, when I replace blank with a value.

How is it possible that with a little change I can lose the full context and cross join is applied? IA is from DIM_IA and Type (objekt type) from DIM_ROP.

 

Below I am attaching all measures. Here I am adding +0, otherwise the row in the table disappared because the row has no value. Other IA can have both numbers but mostly one of them doesn't exist.

Thank you,

Jan

 

  • johnt75's avatar
    johnt75
    1 year ago

    I think you can combine the >= with a check for NOT ISBLANK()

    Type calculated =
    IF ( NOT ISBLANK ( [RD] ) && [RD] >= [BD], "Rodinny dum" )
    

4 Replies

  • When you change the condition to >= the extra row which appears shows blank for both [RD] and [BD]. As blank = blank [Type calculated] returns the value, rather than returning blank as it did when you had the condition as >.

    • jankonas's avatar
      jankonas
      Advocate I

      Thank you johnt75, it makes sense. Do you think there is a dax expression which would work in this case? I found out that I can use a visual calculation and hide both the columns BD and RD by slicing them. I believie this is not so clean solution as this is only a small pattern that I am showing. I just wonder, if dax can handle this by not comparing blank values?

      • johnt75's avatar
        johnt75
        Super User

        I think you can combine the >= with a check for NOT ISBLANK()

        Type calculated =
        IF ( NOT ISBLANK ( [RD] ) && [RD] >= [BD], "Rodinny dum" )