Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
4 years ago
Solved

Help with Month over month in specific format

I have report I need to build but layout requested is to have month over month aggregated over 3 month period.   How could i do this in PBI?   With matrix, the groupings and subtotals automatically g...
  • v-yalanwu-msft's avatar
    4 years ago

    Hi, Anonymous ;

    Base on my understand , you could have two ways to achieve it, as follows:

    Method1:

    1. create a Auxiliary table(Table2)

    Table2 = 
    var _a= SUMMARIZE('Table','Table'[cate],'Table'[date],"month",FORMAT('Table'[date],"Mmm"))
    var _b=SUMMARIZE('Table','Table'[cate],"1",BLANK(),"month","MOM%")
    return UNION(_a,_b)

    2.create a measure2, 

    Measure 2 =
    VAR _PER=CALCULATE(SUM('Table'[value]),FILTER(ALLEXCEPT('Table','Table'[client]) ,[cate]=MAX('Table2'[cate])))/CALCULATE(SUM('Table'[value]),ALL('Table2'))
    VAR _B= IF(MAX('Table2'[month])="MOM%",FORMAT(_PER,"0%"), CALCULATE(SUM('Table'[value]),FILTER('Table',[cate]=MAX('Table2'[cate])&&[date]=MAX('Table2'[date]))))
    RETURN IF(ISFILTERED('Table2'[month]), _B,SUM('Table'[value]))

    The final output is shown below:

    Method2:

    1. add three rows in power query .

    2.create a measure1

    Measure1 =
    VAR _mom =
        CALCULATE (
            SUM ( 'another'[value] ),
            ALLEXCEPT ( 'another', 'another'[client], 'another'[cate] ))
    RETURN
        IF (
            ISFILTERED ( 'another'[date] ),
            IF (
                MAX ( 'another'[date] ) = "MOM%",
                FORMAT (_mom/ CALCULATE ( SUM ( 'another'[value] ),ALLEXCEPT ( 'another', 'another'[client] )),"0%"),
                SUM ( 'another'[value] )),
            _mom)

    The final output is shown below:

    if not right, can you share me simple file after removing the sensitive information?

    Best Regards,
    Community Support Team_ Yalan Wu
    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.