The ultimate Fabric, Power BI, SQL, and AI community-led learning event. Save €200 with code FABCOMM.
Get registeredEnhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends September 15. Request your voucher.
Hi,
I would like to seek for help in creating recursive inventory stock logic.
Currently this is the example table we have.
Product | Country | Year/Month | Initial Stock | Stock on hand | intransit | demand | Balance |
A | ABC | 2022/10 | 0 | 100 | 50 | 30 | 120 |
A | ABC | 2022/11 | 120 | 30 | 50 | 30 | 170 |
A | ABC | 2022/12 | 170 | 30 | 50 | 30 | 220 |
We would like to create 2 recursive dax
1. Balance = initial stock + stock on hand + intransit - demand
2. Initial stock = (last month's) Balance + stock on hand + intransit - demand
The known data in the table are
1. Initial stock of 2022/10 : 0 (as the starting point)
2. Stock on hand, intransit, demand, product, country in all periods
Thanks for your help.
Solved! Go to Solution.
Hi,
please check the below picture and the attached pbix file.
Balance measure: =
CALCULATE (
SUMX ( Data, Data[Stock on hand] + Data[Intransit] - Data[Demand] ),
FILTER ( ALL ( Data ), Data[Date] <= MAX ( Data[Date] ) ),
VALUES ( Data[Country] ),
VALUES ( Data[Product] )
)
Initial stock measure: =
VAR _previousdate =
MAXX (
FILTER (
ALL ( Data ),
Data[Product] = MAX ( Data[Product] )
&& Data[Country] = MAX ( Data[Country] )
&& Data[Date] < MAX ( Data[Date] )
),
Data[Date]
)
RETURN
IF (
SELECTEDVALUE ( Data[Date] ) = DATE ( 2022, 10, 1 ),
0,
CALCULATE (
[Balance measure:],
FILTER ( ALL ( Data ), Data[Date] = _previousdate ),
VALUES ( Data[Country] ),
VALUES ( Data[Product] )
)
)
Thanks. It is very helpful.
Hi,
please check the below picture and the attached pbix file.
Balance measure: =
CALCULATE (
SUMX ( Data, Data[Stock on hand] + Data[Intransit] - Data[Demand] ),
FILTER ( ALL ( Data ), Data[Date] <= MAX ( Data[Date] ) ),
VALUES ( Data[Country] ),
VALUES ( Data[Product] )
)
Initial stock measure: =
VAR _previousdate =
MAXX (
FILTER (
ALL ( Data ),
Data[Product] = MAX ( Data[Product] )
&& Data[Country] = MAX ( Data[Country] )
&& Data[Date] < MAX ( Data[Date] )
),
Data[Date]
)
RETURN
IF (
SELECTEDVALUE ( Data[Date] ) = DATE ( 2022, 10, 1 ),
0,
CALCULATE (
[Balance measure:],
FILTER ( ALL ( Data ), Data[Date] = _previousdate ),
VALUES ( Data[Country] ),
VALUES ( Data[Product] )
)
)
User | Count |
---|---|
15 | |
12 | |
8 | |
7 | |
7 |
User | Count |
---|---|
24 | |
20 | |
12 | |
9 | |
7 |