Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
3 years ago
Solved

conditional formatting based on measurement not working

Having hard time trying to sort this out. I have  a conditional formatting based on a measure but I am getting an anything. 

 

SalesTble (table that contains the main data) 

Table ThresRefre (table that contains metric thresholds depending on region)

 

This is my dax code thus far:

 

sales_Threshold
    = CALCULATE (
        IF (
            SUM ( SalesTble[sales] ) >= MIN ( 'ThresRefre'[Upper] )
                && MIN ( ThresRefre[Metric] ) = "sales"
                && VALUES ( 'SalesTble'[Region] ) = MIN ( 'ThresRefre'[Region] ),
            "#5CB85C",
            IF (
                SUM ( SalesTble[sales] ) >= MIN ( 'ThresRefre'[Lower] )
                    && SUM ( SalesTble[sales] ) < MIN ( 'ThresRefre'[Upper] )
                    && MIN ( ThresRefre[Metric] ) = "sales"
                    && VALUES ( 'SalesTble'[Region] ) = MIN ( 'ThresRefre'[Region] ),
                "#F0AD4E",
                IF (
                    SUM ( SalesTble[sales] ) < MIN ( 'ThresRefre'[Lower] )
                        && MIN ( ThresRefre[Metric] ) = "sales"
                        && VALUES ( 'SalesTble'[Region] ) = MIN ( 'ThresRefre'[Region] ),
                    "#D9534F",
                    BLANK ()
                )
            )
        )
    )

 Thank you so much

  • Anonymous's avatar
    Anonymous
    3 years ago

    Hi Anonymous ,

     

    According to your screenshot, I couldn't find [Region] columns in 'SalesTble' and 'ThresRefre' tables. And I think there should be something wrong in your code.

    Firstly VALUES() will return a table based on 'SalesTble'[Region], however MIN() will return a single value based on 'ThresRefre' [Region], so '=' is not a good idea to compare these two conditions, try "in".

    sales_Threshold =
    VAR _SALES_UPPER =
        CALCULATE (
            MIN ( 'ThresRefre'[Upper] ),
            FILTER ( 'ThresRefre', ThresRefre[Metric] = "sales" )
        )
    VAR _SALES_LOWER =
        CALCULATE (
            MIN ( 'ThresRefre'[Lower] ),
            FILTER ( 'ThresRefre', ThresRefre[Metric] = "sales" )
        )
    RETURN
        CALCULATE (
            IF (
                SUM ( SalesTble[sales] ) >= _SALES_UPPER
                    && MIN ( ThresRefre[Metric] ) = "sales"
                    && MIN ( 'ThresRefre'[Region] ) IN VALUES ( 'SalesTble'[Region] ),
                "#5CB85C",
                IF (
                    SUM ( SalesTble[sales] ) >= _SALES_LOWER
                        && SUM ( SalesTble[sales] ) < _SALES_UPPER
                        && MIN ( ThresRefre[Metric] ) = "sales"
                        && MIN ( 'ThresRefre'[Region] ) IN VALUES ( 'SalesTble'[Region] ),
                    "#F0AD4E",
                    IF (
                        SUM ( SalesTble[sales] ) < _SALES_LOWER
                            && MIN ( ThresRefre[Metric] ) = "sales"
                            && MIN ( 'ThresRefre'[Region] ) IN VALUES ( 'SalesTble'[Region] ),
                        "#D9534F",
                        BLANK ()
                    )
                )
            )
        )

    If this reply still couldn't help you solve your problem, please share a sample file with me and show me a screenshot with the result you want. This will make it easier for me to find the solution.

     

    Best Regards,
    Rico Zhou

     

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

     

1 Reply

  • Anonymous's avatar
    Anonymous
    Not applicable

    Hi Anonymous ,

     

    According to your screenshot, I couldn't find [Region] columns in 'SalesTble' and 'ThresRefre' tables. And I think there should be something wrong in your code.

    Firstly VALUES() will return a table based on 'SalesTble'[Region], however MIN() will return a single value based on 'ThresRefre' [Region], so '=' is not a good idea to compare these two conditions, try "in".

    sales_Threshold =
    VAR _SALES_UPPER =
        CALCULATE (
            MIN ( 'ThresRefre'[Upper] ),
            FILTER ( 'ThresRefre', ThresRefre[Metric] = "sales" )
        )
    VAR _SALES_LOWER =
        CALCULATE (
            MIN ( 'ThresRefre'[Lower] ),
            FILTER ( 'ThresRefre', ThresRefre[Metric] = "sales" )
        )
    RETURN
        CALCULATE (
            IF (
                SUM ( SalesTble[sales] ) >= _SALES_UPPER
                    && MIN ( ThresRefre[Metric] ) = "sales"
                    && MIN ( 'ThresRefre'[Region] ) IN VALUES ( 'SalesTble'[Region] ),
                "#5CB85C",
                IF (
                    SUM ( SalesTble[sales] ) >= _SALES_LOWER
                        && SUM ( SalesTble[sales] ) < _SALES_UPPER
                        && MIN ( ThresRefre[Metric] ) = "sales"
                        && MIN ( 'ThresRefre'[Region] ) IN VALUES ( 'SalesTble'[Region] ),
                    "#F0AD4E",
                    IF (
                        SUM ( SalesTble[sales] ) < _SALES_LOWER
                            && MIN ( ThresRefre[Metric] ) = "sales"
                            && MIN ( 'ThresRefre'[Region] ) IN VALUES ( 'SalesTble'[Region] ),
                        "#D9534F",
                        BLANK ()
                    )
                )
            )
        )

    If this reply still couldn't help you solve your problem, please share a sample file with me and show me a screenshot with the result you want. This will make it easier for me to find the solution.

     

    Best Regards,
    Rico Zhou

     

    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.