Forum Discussion

carloscabreraq's avatar
7 years ago
Solved

Add calculated item to a Matrix

Hello, i am using a matrix to group my data like this. the last 3 columns are measures. I want to add calculates items(yellow rows) and get a result like this.   How can i do it?  t...
  • v-juanli-msft's avatar
    7 years ago

    Hi carloscabreraq

    There is no direct way in Power BI to achieve this requirment.

    Here is a workaround

     

    1.Create a new table with the same structure as your "transaccion" table,

    This is to say, the new table has the same numbers of columns and the same column names, but only keep two rows and let the cells filled with 0 except the [tipo] column.

    I create this table using Excel:

    Copy the whole "transaccion" table, then paste in the Excel, 

    delete all rows from this table in Excel, but keep the column header,

    fill "e","f" in the [tipo] column as above, fill 0 in other cells (only create two rows)

     

    2. import created table above into Power BI, the append this table to "transaccion" table in Power Query

    Open Queries editor,

    in "transaccion" table, select Home->"Append", 

    then Close&&Apply, go to Report view

     

    3. create measures based on the three measures

    Last Month1 =
    VAR sub_e =
        CALCULATE ( [Last Month], FILTER ( ALL ( transaccion ), [tipo] = "d" ) )
            - CALCULATE ( [Last Month], FILTER ( ALL ( transaccion ), [tipo] = "c" ) )
    VAR sub_f =
        CALCULATE ( [Last Month], FILTER ( ALL ( transaccion ), [tipo] = "a" ) )
            + sub_e
    RETURN
        SWITCH ( MAX ( [tipo] ), "e", sub_e, "f", sub_f, [Last Month] )
    

    Last MTD1 =
    VAR sub_e =
        CALCULATE ( [Last MTD], FILTER ( ALL ( transaccion ), [tipo] = "d" ) )
            - CALCULATE ( [Last MTD], FILTER ( ALL ( transaccion ), [tipo] = "c" ) )
    VAR sub_f =
        CALCULATE ( [Last MTD], FILTER ( ALL ( transaccion ), [tipo] = "a" ) )
            + sub_e
    RETURN
        SWITCH ( MAX ( [tipo] ), "e", sub_e, "f", sub_f, [Last MTD] )
    
    
    MTD1 =
    VAR sub_e =
        CALCULATE ( [MTD], FILTER ( ALL ( transaccion ), [tipo] = "d" ) )
            - CALCULATE ( [MTD], FILTER ( ALL ( transaccion ), [tipo] = "c" ) )
    VAR sub_f =
        CALCULATE ( [MTD], FILTER ( ALL ( transaccion ), [tipo] = "a" ) )
            + sub_e
    RETURN
        SWITCH ( MAX ( [tipo] ), "e", sub_e, "f", sub_f, [MTD] )
    

     

    Best Regards

    Maggie

     

     

  • v-juanli-msft's avatar
    v-juanli-msft
    7 years ago

    Hi carloscabreraq

    To let this measure work with slicer, change "ALL"to "ALLSELECTED".

     

    Best Regrads

    Maggie