Forum Discussion
Baseline Stock
- 1 year ago
Hi Anonymous ,
Thanks for reaching out to the Microsoft fabric community forum.
I have modified the Logic for bottom 30 "Stock_quanitiy
Here is the updated DAXBaseline_Stock_Last12M_Bottom30_v3 =VAR CurrentDate = SELECTEDVALUE('CalendarTable'[Date])
-- Define 12-month windowVAR Last12Months =DATESINPERIOD('CalendarTable'[Date],CurrentDate,-12,MONTH)
-- Filter data in the 12-month period where stock > 0VAR StockData =FILTER (COOP_Store_Inventory,COOP_Store_Inventory[Date_from] IN Last12Months &&COOP_Store_Inventory[Stock_quantity] > 0)
-- Group by Date, Store, EAN → calculate total stock per day-location-productVAR DailySums =ADDCOLUMNS (SUMMARIZE (StockData,COOP_Store_Inventory[Date_from],COOP_Store_Inventory[Store],COOP_Store_Inventory[Retailer_EAN]),"TotalStock", CALCULATE(SUM(COOP_Store_Inventory[Stock_quantity])))
-- Take 30 days with lowest stockVAR Bottom30 =TOPN (30,DailySums,[TotalStock],ASC)
-- Average the lowest 30 daily totalsVAR AvgBaseline =AVERAGEX(Bottom30, [TotalStock])
RETURNAvgBaseline
Note: Visual-level filters are not required
If this post helped resolve your issue, please consider giving it Kudos and marking it as the Accepted Solution. This not only acknowledges the support provided but also helps other community members find relevant solutions more easily.
We appreciate your engagement and thank you for being an active part of the community.
Best regards,
LakshmiNarayana. - Anonymous1 year ago
Hi v-lgarikapat & DataNinja777, sorry for not geeting back to you! some other project came up but now I got some time and I think I solved it, not 100% but very close.
I had to make a rank on Stock Qty on all dates:CurrentRank =VAR CurrentValue = [Stock Qty]RETURNIF(ISBLANK(CurrentValue) || CurrentValue = 0,BLANK(), -- Return blank if the current value is blank or zeroRANKX(FILTER(ALL(CalendarTable[Dato]), -- Rank based on all unique DatesNOT(ISBLANK([Stock Qty])) && [Stock Qty] > 0 -- Exclude blank and zero values),[Stock Qty], -- Use your existing "Stock" measure for the ranking, -- No value for ties, defaults to the next rankASC, -- Ranking in ascending order (lowest stock gets rank 1)DENSE -- Use DENSE to avoid gaps in ranking))
Then I did the rank and date to get the 30 bottom days and last step was to make an average:Baseline Stock =VAR Bottom30Days =TOPN(30, -- Get the bottom 30 daysFILTER(ALL(CalendarTable), -- Consider all datesNOT(ISBLANK([Stock Qty])) && [Stock Qty] > 0 -- Exclude blanks and zeros),[CurrentRank], -- Order by CurrentRankASC -- Get the lowest ranks)RETURNAVERAGEX(Bottom30Days, -- Iterate over the bottom 30 days[Stock Qty] -- Calculate the average of Total_Stock_Per_Day)
It now gives me one value and I will use this as the baseline for the stocks.Thanks for your support!
Hi Anonymous ,
If your question has been answered, kindly mark the appropriate response as the Accepted Solution. This small step goes a long way in helping others with similar issues.
We appreciate your collaboration and support!
Best regards,
LakshmiNarayana
Hi Anonymous ,
As we haven't heard back from you, we are closing this thread. If you are still experiencing the same issue, we kindly request you to create a new thread we’ll be happy to assist you further.
Thank you for your patience and support.
If our response was helpful, please mark it as Accepted as Solution and consider giving a Kudos. Feel free to reach out if you need any further assistance.
Best Regards,
Lakshmi Narayana