Reply
Highlighted
Regular Visitor
Posts: 16
Registered: ‎04-25-2018
Accepted Solution

DAX to Calculate Opening and Closing Stock including Previous Period's Records

Hy all

Greetings and thanks in advance.

I have a large data table in Data Model in excel 2016. This table is in SQL Server and is connected to Data Model in excel with Power Query. It has millions of rows. I have created pivot table report on it.

I need to calculate opening and closing stock for selected period (date, month or year). The sample of data is as given below. I am showing just a few columns and records in sapmle.

 

Untitled.png

 

I have added 3 measures in the Pivot table fields.

1-Movement=calculate(sum('Table'[Qty]), 'Table'[In/Out]="In")

-calculate(sum('Table'[Qty]), 'Table'[In/Out]="Out")

It is working fine.

2-Opening Stock=calculate ( [Movement],

filter

 (all ('Table'[Date] ),

'Table'[Date]<max('Table'[Date] )))

3-Closing Stock=calculate ( [Movement],

filter

 (all ('Table'[Date] ),

'Table'[Date]<=max('Table'[Date] )))

There is a problem in the results of measure No. 2 and 3.

The result is ok if pivot table is viewed for all periods without filtering. But when I filter period (Date, Month or Year)  in pivot table, then result is not correct. It does not bring forward the closing stock of previous period.

Please suggest me some change in dax formula or some new formula for opening and closing stock calculation including previous period's data.

I will be very gratefull for any help.
The Pivot table I created is as given below.
Untitled2.pngUntitled3.png




Accepted Solutions
Community Support Team
Posts: 2,242
Registered: ‎03-15-2018

Re: DAX to Calculate Opening and Closing Stock including Previous Period's Records

Hi

I modify two measures above with these:

 

Opening Stock =
CALCULATE (
    [Movement],
    FILTER (
        ALLEXCEPT ( Table1, Table1[Iteam Name] ),
        'Table1'[Date] < MAX ( 'Table1'[Date] )
    )
)

 

 

Closing Stock =
CALCULATE (
    [Movement],
    FILTER (
        ALLEXCEPT ( Table1, Table1[Iteam Name] ),
        'Table1'[Date] <= MAX ( 'Table1'[Date] )
    )
)

Finally, I get this result.

 

4.png

5.png

 

Best Regards

Maggie

View solution in original post


All Replies
Community Support Team
Posts: 2,242
Registered: ‎03-15-2018

Re: DAX to Calculate Opening and Closing Stock including Previous Period's Records

Hi

I modify two measures above with these:

 

Opening Stock =
CALCULATE (
    [Movement],
    FILTER (
        ALLEXCEPT ( Table1, Table1[Iteam Name] ),
        'Table1'[Date] < MAX ( 'Table1'[Date] )
    )
)

 

 

Closing Stock =
CALCULATE (
    [Movement],
    FILTER (
        ALLEXCEPT ( Table1, Table1[Iteam Name] ),
        'Table1'[Date] <= MAX ( 'Table1'[Date] )
    )
)

Finally, I get this result.

 

4.png

5.png

 

Best Regards

Maggie