Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
7 years ago
Solved

Add column to matrix visual

Hello,

 

I am working with data like this:

 

DivisionDivisionNumberTypeAmount
P1Available100
M2Available400
V3Requested200
P1Available300
P4Allocated800
M5Allocated200
P1Available100
V3Requested300
V2Allocated600

 

Out of this table I created a matrix visual:

https://imgur.com/a/KjgFOsc

 

Now I would like to add a column to that matrix which sums up the two columns "Available" and "Requested" for each row.

 

Is that possible? If not, how could I mainpulate the data before making the visual (I think I would need to add calculated rows to solve this but that is not possible, right?).

 

Thanks in advance.

  • Hi Anonymous

     

    This might be a bit of an unnecessarily intricate solution, certainly compared to Zubair_Muhammad's, but you could try:

     

    1. Create a new, table DisplayTable with one column with the values of your Type column plus one for the additional column "Available+Requested". Create a relationship between DisplayTable[Type] and Table1[Type] (Table1 is your current table)

    2. Place DisplayTable[Type] in the columns of your matrix visual (the rows are the same as you have now)

    3. Create this measure:

    Measure =
    SWITCH (
        TRUE (),
        SELECTEDVALUE ( DisplayTable[Type] ) IN ALL ( Table1[Type] ), SUM ( Table1[Amount] ),
        CALCULATE (
            SUM ( Table1[Amount] ),
            Table1[Type] IN { "Available", "Requested" }
        )
    )

    4. Place the measure in values of your matrix visual

     

                     

  • AlB's avatar
    AlB
    7 years ago

    Anonymous

    Most likely nothing wrong :smileyhappy: I hadn't tested it.

    Try this small change:

     

    Measure =
    SWITCH (
        TRUE (),
        SELECTEDVALUE ( DisplayTable[Type] ) IN ALL ( Table1[Type] ), SUM ( Table1[Amount] ),
        CALCULATE (
            SUM ( Table1[Amount] ),
            DisplayTable[Type] IN { "Available", "Requested" }
        )
    )

     

7 Replies

  • AlB's avatar
    AlB
    Community Champion

    Hi Anonymous

     

    This might be a bit of an unnecessarily intricate solution, certainly compared to Zubair_Muhammad's, but you could try:

     

    1. Create a new, table DisplayTable with one column with the values of your Type column plus one for the additional column "Available+Requested". Create a relationship between DisplayTable[Type] and Table1[Type] (Table1 is your current table)

    2. Place DisplayTable[Type] in the columns of your matrix visual (the rows are the same as you have now)

    3. Create this measure:

    Measure =
    SWITCH (
        TRUE (),
        SELECTEDVALUE ( DisplayTable[Type] ) IN ALL ( Table1[Type] ), SUM ( Table1[Amount] ),
        CALCULATE (
            SUM ( Table1[Amount] ),
            Table1[Type] IN { "Available", "Requested" }
        )
    )

    4. Place the measure in values of your matrix visual

     

                     

      • AlB's avatar
        AlB
        Community Champion

        Anonymous

        Most likely nothing wrong :smileyhappy: I hadn't tested it.

        Try this small change:

         

        Measure =
        SWITCH (
            TRUE (),
            SELECTEDVALUE ( DisplayTable[Type] ) IN ALL ( Table1[Type] ), SUM ( Table1[Amount] ),
            CALCULATE (
                SUM ( Table1[Amount] ),
                DisplayTable[Type] IN { "Available", "Requested" }
            )
        )

         

  • Zubair_Muhammad's avatar
    Zubair_Muhammad
    Community Champion

    Anonymous

     

    You can add a MEASURE but i think it will repeat for each Column in the Matrix....

     

    Measure =
    CALCULATE ( SUM ( Table1[Amount] ), [Type] = "Available" )
        + CALCULATE ( SUM ( Table1[Amount] ), [Type] = "Requested" )
    

    Another way could be to use Power Query

     

    First pivot the "Type" Column...Then you can add the "Available" and "requested" Columns
    Not unpivot again

     

    Check this article as well
    http://www.excelnaccess.com/adding-calculated-row-calculated-items-using-power-query/

  • Anonymous's avatar
    Anonymous
    Not applicable

    AlB

    It worked, thanks so much!

     

    Is there any possibility to add two more columns based on the column we just calculated?

    First one should be: Allocated - (Available+Requested)

    Second one: (Available+Requested) / Allocated * 100

    • AlB's avatar
      AlB
      Community Champion

      Anonymous

      Yes, we can do it by following the same logic but the more columns you add, the less sense it makes to do it this way and the more with one different measure for each calculation. The code is getting overly long now, I would think.

       

      You'd need to add the new column names to the DisplayTable. I've used the exact copy of how you've described the operations. You can update that if you want with something shorter but then you'd have to update the corresponding comparisons in the code as well. The new DisplayTable would now look like:

       

      Type

      Available
      Requested
      Allocated
      Available+Requested
      Allocated - (Available+Requested)

      (Available+Requested) / Allocated * 100

       

      and we need to make some changes in the measure:

       

      Measure 2 = 
      VAR _CurrentColumn = SELECTEDVALUE ( DisplayTable[Type] )
      RETURN
          SWITCH (
              TRUE ();
              _CurrentColumn IN ALL ( Table1[Type] ); SUM ( Table1[Amount] );
              _CurrentColumn = "Available+Requested";
      CALCULATE ( SUM ( Table1[Amount] ); DisplayTable[Type] IN { "Available"; "Requested" } ); _CurrentColumn = "Allocated - (Available+Requested)";
      CALCULATE ( SUM ( Table1[Amount] ); DisplayTable[Type] = "Allocated" ) - CALCULATE ( SUM ( Table1[Amount] ); DisplayTable[Type] IN { "Available"; "Requested" } ); _CurrentColumn = "(Available+Requested) / Allocated * 100"; 100*DIVIDE ( CALCULATE ( SUM ( Table1[Amount] ); DisplayTable[Type] IN { "Available"; "Requested" } ); CALCULATE ( SUM ( Table1[Amount] ); DisplayTable[Type] = "Allocated" ) ) )

      I've interpreted  (Available+Requested) / Allocated * 100 to be

      100*( (Available+Requested) / Allocated) 

      If this is not the case you can update the code with the correct calculation

       

       

      Code formatted with  

      • Anonymous's avatar
        Anonymous
        Not applicable

        AlB

        Wow, thanks again, this works absolutely fine.

        I don't need any other columns, so there is nothing to complain about.

        I really appreciate your help, thank you! :smileyhappy: