Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
4 years ago
Solved

Matrix visual with difference calculation from total row

I need to create a matrix visual that looks like the following:

TrainDay 6Day 7Day 8

Loc. A

208822042088
Loc. B150815082436
Total359637124524
Capacity400040004000
Difference-404-288524

(train load in tons, capacity is specific to Company A, I have different tables featuring different trains and capacities on a per company basis).

 

Source data features 2 different tables. One for the load that the train is carrying and one for the companies and their total capacity that follow a simple relationship with eachother:

CompanyTrainDayLoad
Company ALoc. A61392
Company ALoc. A6696
Company ALoc. B61508
Company BLoc. A6928
Company BLoc. A61044

 

CompanyCapacity
Company A4000
Company B4200

 

I have been able to create the matrix without the capacity and difference row. But I do need to display the capacity and the difference from the actual planning preferably within one table. Any other ideas are also welcome!

 

Thank you in advance!

  • Hi Anonymous ,

     

    Please create a new table.

     

    Table = 
    VAR newcapacity =
        CROSSJOIN ( Capacity, VALUES ( Train[Day] ) )
    VAR UnionTab =
        UNION (
            Train,
            SELECTCOLUMNS (
                newcapacity,
                "Company", [Company],
                "Train", "Capacity",
                "Day", [Day],
                "Load", [Capacity]
            )
        )
    RETURN
        ADDCOLUMNS (
            UnionTab,
            "Type", IF ( [Train] = "Capacity", "Capacity", "Train" )
        )

     

    Then create these measures.

     

    Load and Capacity = 
    CALCULATE ( SUM ( 'Table'[Load] ), 'Table'[Company] = "Company A" )
    TotalValue = 
    VAR diff =
        CALCULATE ( [Load and Capacity], 'Table'[Type] = "Train" )
            - CALCULATE ( [Load and Capacity], 'Table'[Type] = "Capacity" )
    RETURN
        IF ( ISFILTERED ( 'Table'[Type] ), [Load and Capacity], diff )

     

    If the problem is still not resolved, please provide detailed error information or the expected result you expect. Let me know immediately, looking forward to your reply.
    Best Regards,
    Winniz
    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

3 Replies

  • v-kkf-msft's avatar
    v-kkf-msft
    Community Support

    Hi Anonymous ,

     

    Please create a new table.

     

    Table = 
    VAR newcapacity =
        CROSSJOIN ( Capacity, VALUES ( Train[Day] ) )
    VAR UnionTab =
        UNION (
            Train,
            SELECTCOLUMNS (
                newcapacity,
                "Company", [Company],
                "Train", "Capacity",
                "Day", [Day],
                "Load", [Capacity]
            )
        )
    RETURN
        ADDCOLUMNS (
            UnionTab,
            "Type", IF ( [Train] = "Capacity", "Capacity", "Train" )
        )

     

    Then create these measures.

     

    Load and Capacity = 
    CALCULATE ( SUM ( 'Table'[Load] ), 'Table'[Company] = "Company A" )
    TotalValue = 
    VAR diff =
        CALCULATE ( [Load and Capacity], 'Table'[Type] = "Train" )
            - CALCULATE ( [Load and Capacity], 'Table'[Type] = "Capacity" )
    RETURN
        IF ( ISFILTERED ( 'Table'[Type] ), [Load and Capacity], diff )

     

    If the problem is still not resolved, please provide detailed error information or the expected result you expect. Let me know immediately, looking forward to your reply.
    Best Regards,
    Winniz
    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

    • Anonymous's avatar
      Anonymous
      Not applicable

      amitchandak Thank you for your reply.

       

      I watched both videos that suggest adding an Excel workbook to a Power BI app.

      Is that the only way to achieve this? I'd like to have the matrix within a report.