This time we’re going bigger than ever. Fabric, Power BI, SQL, AI and more. We're covering it all. You won't want to miss it.
Learn moreLevel up your Power BI skills this month - build one visual each week and tell better stories with data! Get started
Dear all, I would like to ask you how to calculate stock if the previous row is negative value.
For example :
First photo (on the left) shows my example values. I would like to create a new measure [Stock] which is calculating stock for a year - if the volume left is < 0 in previous row , then the rest is being calculated in the next row, as the example on the 2nd photo shows.
More strict example :
I bought 60 pairs of shoes for 2019. I sold 70 of them, so total volume would be 60-70=-10. I know that I have to reorder next 10 pairs of shoes , I buy additional 30 pairs. My stock in 2nd order is 30-10=20. This is the same as example below.
In those pictures, I am buying some products measured in MWh. I bought 82 MWh on 1. January and sold 500 MWh to clients to clients. I decided to order on 5. January much more, so I bought 8760 MWh. I know that I owed 418 MWh to my customers, so my stock left is 8342.
How to calculate this stock ? Volume left is a measure which is calculated like this :
Volume Left = SUM(Hedge[Volume Hedge [MWh]]])-SUM(Sales[Sales Volume [MWh]]])
where Sales Volume is basically my sales from another table.
Solved! Go to Solution.
Okay, I found a solution, maybe it'll help someone :
VolumeStock =
CALCULATE (
[Volume Left];
FILTER (
ALL ( Hedge );
'Hedge'[Hedge Year] = MAX ( 'Hedge'[Hedge Year] )
&& Hedge[Hedge Price [zł]]] <= MAX ( Hedge[Hedge Price [zł]]] )
)
)
and then another measure :
Volume Stock = IF([VolumeStock]<0;0;[VolumeStock])
Thank you for your answer.
Apparently, it sums wrong rows - it sums from the volume left from first row of each group, instead of every single from one group until its positive (basing on the article you sent).
VolumeStock =
IF (
MIN ( Hedge[Hedge Year] ) <= CALCULATE ( MAX ( Hedge[Hedge Year] ); ALL ( Hedge ) );
CALCULATE([Volume Left];FILTER(ALL(Hedge[Hedge Year]);(Hedge[Hedge Year])<=MAX(Hedge[Hedge Year]))))
Okay, I found a solution, maybe it'll help someone :
VolumeStock =
CALCULATE (
[Volume Left];
FILTER (
ALL ( Hedge );
'Hedge'[Hedge Year] = MAX ( 'Hedge'[Hedge Year] )
&& Hedge[Hedge Price [zł]]] <= MAX ( Hedge[Hedge Price [zł]]] )
)
)
and then another measure :
Volume Stock = IF([VolumeStock]<0;0;[VolumeStock])
Check out the April 2026 Power BI update to learn about new features.
Sign up to receive a private message when registration opens and key events begin.
If you have recently started exploring Fabric, we'd love to hear how it's going. Your feedback can help with product improvements.
| User | Count |
|---|---|
| 36 | |
| 29 | |
| 29 | |
| 21 | |
| 18 |
| User | Count |
|---|---|
| 71 | |
| 45 | |
| 33 | |
| 24 | |
| 23 |