Forum Discussion

SirBI's avatar
SirBI
Frequent Visitor
5 years ago
Solved

Measures with Total

I have the above chart. I have a KPI light (conditional formatted column, bottom of page) 

 

       COLOR_IND_FORMAT =
        SWITCH(
        TRUE(),
        Daily[Check type] = "SAM" && Daily[PRCNT_DIFF] >=16, "RED",
       Daily[Check type] = "SAM" && Daily[PRCNT_DIFF] >=11 && AutoDialerDaily[PRCNT_DIFF] <=15 , "YELLOW",
        Daily[Check type] = "SAM" && Daily[PRCNT_DIFF] <=10, "GREEN",
       "BLACK")

 

 I want my "TOTAL" to have it's own set of conditions for the [PRCNT_DIFF], is that possible?

 

Percentage change =
VAR __BASELINE_VALUE = SUM('Daily'[PREV_CNT])
VAR __VALUE_TO_COMPARE = SUM('Daily'[CURR_CNT])
RETURN
    IF(
        NOT ISBLANK(__VALUE_TO_COMPARE),
        DIVIDE(__VALUE_TO_COMPARE - __BASELINE_VALUE, __BASELINE_VALUE)
    )
  • I'm not sure which are columns and which are measures (the convention is that column include the table and measures do not), but it would look something like this.

     

    COLOR_IND_FORMAT =
    VAR statecount =
        COUNTROWS ( DISTINCT ( Daily[State] ) )
    VAR checktype =
        MIN ( Daily[Check type] ) //assumes this is a column
    VAR prcntdiff = [PRCNT_DIFF] //assumes this is a measure. calculated as a variable to improve performance
    VAR __BASELINE_VALUE =
        SUM ( 'Daily'[PREV_CNT] )
    VAR __VALUE_TO_COMPARE =
        SUM ( 'Daily'[CURR_CNT] )
    VAR totalvalue =
        DIVIDE ( __VALUE_TO_COMPARE - __BASELINE_VALUE__BASELINE_VALUE )
    VAR result =
        SWITCH (
            TRUE (),
            statecount > 1
                && totalvalue > 50"Green",
            statecount > 1
                && totalvalue <= 50"Red",
            checktype = "SAM"
                && prcntdiff >= 16"RED",
            checktype = "SAM"
                && prcntdiff >= 11
                && AutoDialerDaily[PRCNT_DIFF] <= 15"YELLOW",
            //not sure if autodialer is a measure or column. if column, it will need to be aggregated
            checktype = "SAM"
                && prcntdiff <= 10"GREEN",
            "BLACK"
        )
    RETURN
        result
    //result made as a variable for easier troubleshooting

     

    Pat

     

5 Replies

  • mahoneypat's avatar
    mahoneypat
    Microsoft Employee

    You can use HASONEVALUE on your State column in your expression to check if the context is one of your rows or the total row and have different expression based on that.

     

    Pat

     

    • SirBI's avatar
      SirBI
      Frequent Visitor

      mahoneypat could you help me out with the syntax? I'm working on it but can't seem to get this correct. 

      • mahoneypat's avatar
        mahoneypat
        Microsoft Employee

        I'm not sure which are columns and which are measures (the convention is that column include the table and measures do not), but it would look something like this.

         

        COLOR_IND_FORMAT =
        VAR statecount =
            COUNTROWS ( DISTINCT ( Daily[State] ) )
        VAR checktype =
            MIN ( Daily[Check type] ) //assumes this is a column
        VAR prcntdiff = [PRCNT_DIFF] //assumes this is a measure. calculated as a variable to improve performance
        VAR __BASELINE_VALUE =
            SUM ( 'Daily'[PREV_CNT] )
        VAR __VALUE_TO_COMPARE =
            SUM ( 'Daily'[CURR_CNT] )
        VAR totalvalue =
            DIVIDE ( __VALUE_TO_COMPARE - __BASELINE_VALUE__BASELINE_VALUE )
        VAR result =
            SWITCH (
                TRUE (),
                statecount > 1
                    && totalvalue > 50"Green",
                statecount > 1
                    && totalvalue <= 50"Red",
                checktype = "SAM"
                    && prcntdiff >= 16"RED",
                checktype = "SAM"
                    && prcntdiff >= 11
                    && AutoDialerDaily[PRCNT_DIFF] <= 15"YELLOW",
                //not sure if autodialer is a measure or column. if column, it will need to be aggregated
                checktype = "SAM"
                    && prcntdiff <= 10"GREEN",
                "BLACK"
            )
        RETURN
            result
        //result made as a variable for easier troubleshooting

         

        Pat