Reply
Regular Visitor
Posts: 15
Registered: ‎12-13-2018
Accepted Solution

Compare Plan and actual data

Hello All,

 

I want to see the differences between Plan and Actual. I got the 2 tables form excel below. How do I make a table what I would like to see below?

 

20190117_173653.png

 

 

Thanks in advance.

 


Accepted Solutions
AlB Super Contributor
Super Contributor
Posts: 1,166
Registered: ‎11-12-2018

Re: Compare Plan and actual data

[ Edited ]

Hi @bluetronics

 

Although I believe it would be more convenient to do this in the query editor (M), you can also try creating a new calculated table with DAX:

 

TestTable =
VAR _BaseTable =
    DISTINCT (
        UNION (
            SUMMARIZECOLUMNS ( Actual[Customer]; Actual[Product] );
            SUMMARIZECOLUMNS ( Plan[Customer]; Plan[Product] )
        )
    )
RETURN
    ADDCOLUMNS (
        _BaseTable;
        "Difference"; LOOKUPVALUE (
            Actual[Qty];
            Actual[Customer]; [Customer];
            Actual[Product]; [Product]
        )
            - LOOKUPVALUE ( Plan[Qty]; Plan[Customer]; [Customer]; Plan[Product]; [Product] )
    )

 

Code formatted with   www.daxformatter.com

View solution in original post

Regular Visitor
Posts: 15
Registered: ‎12-13-2018

Re: Compare Plan and actual data

HI @ AIB,

Your instruction was great to work in general but I got an issue with "A table of multiple values was supplied where a single value was expected."  when I apply to big data. And I found it why but I don't know how to clear the issue. Can you help me agin?

I can see the error message when there are differnt lookupvalue. Do you happen to know how to do if I want to sum of Qty for the same customer and product.

 

20190119_014109.png

Regards,

 

View solution in original post

AlB Super Contributor
Super Contributor
Posts: 1,166
Registered: ‎11-12-2018

Re: Compare Plan and actual data

@bluetronics

 

NewTable = 
VAR _BaseTable =
    DISTINCT (
        UNION (
            SUMMARIZECOLUMNS ( Actual[Customer]; Actual[Product] );
            SUMMARIZECOLUMNS ( Plan[Customer]; Plan[Product] )
        )
    )
RETURN
    ADDCOLUMNS (
        _BaseTable;
        "Difference"; 
        VAR _CurrentCustomer=[Customer]
        VAR _CurrentProduct=[Product] 
        RETURN 
           CALCULATE(SUM(Actual[Qty]); Actual[Customer]=_CurrentCustomer; Actual[Product]=_CurrentProduct)
           - CALCULATE(SUM(Plan[Qty]); Plan[Customer]=_CurrentCustomer; Plan[Product]=_CurrentProduct)
    )

View solution in original post

AlB Super Contributor
Super Contributor
Posts: 1,166
Registered: ‎11-12-2018

Re: Compare Plan and actual data

@bluetronics

Or actually we could have another version with nested two ADDCOLUMNS to make the code a bit less verbose and avoid some recalculations which I'm guessing would be faster although I cannot be positive about it

 

NewTableExtended_v2 = 
VAR _BaseTable =
    DISTINCT (
        UNION (
            SUMMARIZECOLUMNS ( Actual[Customer]; Actual[Product] );
            SUMMARIZECOLUMNS ( Plan[Customer]; Plan[Product] )
        )
    )
RETURN
    ADDCOLUMNS (
        ADDCOLUMNS (
            _BaseTable;
            "Plan-Qty";
            VAR _CurrentCustomer = [Customer]
            VAR _CurrentProduct = [Product]
            VAR _CurrentPlan =
                CALCULATE (
                    SUM ( Plan[Qty] );
                    Plan[Customer] = _CurrentCustomer;
                    Plan[Product] = _CurrentProduct
                )
            RETURN
                _CurrentPlan;
            "Actual-Qty";
            VAR _CurrentCustomer = [Customer]
            VAR _CurrentProduct = [Product]
            VAR _CurrentActual =
                CALCULATE (
                    SUM ( Actual[Qty] );
                    Actual[Customer] = _CurrentCustomer;
                    Actual[Product] = _CurrentProduct
                )
            RETURN
                _CurrentActual
        );
        "Diff. Qty"; [Actual-Qty] - [Plan-Qty]
    )

Code formatted with   www.daxformatter.com

View solution in original post


All Replies
AlB Super Contributor
Super Contributor
Posts: 1,166
Registered: ‎11-12-2018

Re: Compare Plan and actual data

[ Edited ]

Hi @bluetronics

 

Although I believe it would be more convenient to do this in the query editor (M), you can also try creating a new calculated table with DAX:

 

TestTable =
VAR _BaseTable =
    DISTINCT (
        UNION (
            SUMMARIZECOLUMNS ( Actual[Customer]; Actual[Product] );
            SUMMARIZECOLUMNS ( Plan[Customer]; Plan[Product] )
        )
    )
RETURN
    ADDCOLUMNS (
        _BaseTable;
        "Difference"; LOOKUPVALUE (
            Actual[Qty];
            Actual[Customer]; [Customer];
            Actual[Product]; [Product]
        )
            - LOOKUPVALUE ( Plan[Qty]; Plan[Customer]; [Customer]; Plan[Product]; [Product] )
    )

 

Code formatted with   www.daxformatter.com

Highlighted
Regular Visitor
Posts: 15
Registered: ‎12-13-2018

Re: Compare Plan and actual data

HI @AIB,

Thanks a lot! it works excactly what I would like to see.

Best Regards,

SH Lee

Regular Visitor
Posts: 15
Registered: ‎12-13-2018

Re: Compare Plan and actual data

HI @ AIB,

Your instruction was great to work in general but I got an issue with "A table of multiple values was supplied where a single value was expected."  when I apply to big data. And I found it why but I don't know how to clear the issue. Can you help me agin?

I can see the error message when there are differnt lookupvalue. Do you happen to know how to do if I want to sum of Qty for the same customer and product.

 

20190119_014109.png

Regards,

 

AlB Super Contributor
Super Contributor
Posts: 1,166
Registered: ‎11-12-2018

Re: Compare Plan and actual data

@bluetronics

 

NewTable = 
VAR _BaseTable =
    DISTINCT (
        UNION (
            SUMMARIZECOLUMNS ( Actual[Customer]; Actual[Product] );
            SUMMARIZECOLUMNS ( Plan[Customer]; Plan[Product] )
        )
    )
RETURN
    ADDCOLUMNS (
        _BaseTable;
        "Difference"; 
        VAR _CurrentCustomer=[Customer]
        VAR _CurrentProduct=[Product] 
        RETURN 
           CALCULATE(SUM(Actual[Qty]); Actual[Customer]=_CurrentCustomer; Actual[Product]=_CurrentProduct)
           - CALCULATE(SUM(Plan[Qty]); Plan[Customer]=_CurrentCustomer; Plan[Product]=_CurrentProduct)
    )
Regular Visitor
Posts: 15
Registered: ‎12-13-2018

Re: Compare Plan and actual data

Super!! Thank you. :-)

 

Super User
Posts: 3,927
Registered: ‎01-14-2017

Re: Compare Plan and actual data

Hi,

 

You may download my PBI file from here.

 

Hope this helps.

 

Untitled.png

Regular Visitor
Posts: 15
Registered: ‎12-13-2018

Re: Compare Plan and actual data

Hi @AlB and @Ashish_Mathur

Can you tell me how to show data additionally? 

 

20190119_155231.png 

Best Regards,

 

Super User
Posts: 3,927
Registered: ‎01-14-2017

Re: Compare Plan and actual data

Hi,

 

In the Query Editor, you simply need to delete the last "Remove columns" step.

Regular Visitor
Posts: 15
Registered: ‎12-13-2018

Re: Compare Plan and actual data

Hi @Ashish_Mathur,

I would like to know how to work with DAX.  Thanks.