Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
cottrera
Post Prodigy
Post Prodigy

DAX create forecast based on historical data

Hi 

 

I have a facts table with 4 columns job ref, completed date, Contactor and Spend.  The completed dates start Apr 2021 and will eventually end 30th Mar 2022 (our financial year) 

 

Facts Table

Job RefCompleted DateContractorSpend
15411401/10/2021SCP£1,695
13663102/09/2021DLO£539
18538803/10/2021DLO£1,005
17928704/08/2021SCP£994
20810804/08/2021DLO£677
20376606/07/2021DLO£452
19796407/07/2021DLO£306
20772608/06/2021SCP£1,849
14736509/05/2021SCP£1,667
13948110/04/2021SCP£1,807
15221910/04/2021SCP£1,665
13359810/04/2021SCP£448

 

I would like to create a forcast DAX measure for all incomplete or partially completed months. Although today is 11th October I would not include October into the forcast as October is not yet fininshed. I would also like the DAX forcast measure to be based on all previously completed months of our financial year. So in this example if would be Apr, May, Jun, Jul, Aug and Sept = 6 months of historical data. Then on 1st November we will have a completed October month so the forcast measure would then need to look at 7 months of data and so on.

 

My final Matrix will look something like this

StatusMonthDLOSCP
ActualApr£104£75,317
ActualMay£2,238£63,778
ActualJun£13,876£57,768
ActualJul£9,248£47,897
ActualAug£11,501£30,356
ActualSep£9,677£5,500
ForecastOct£7,774£46,769
ForecastNov£7,774£46,769
ForecastDec£7,774£46,769
ForecastJan£7,774£46,769
ForecastFeb£7,774£46,769
ForecastMar£7,774£46,769

 

Hopefully I have explained this ok.

 

thank you

 

Richard

3 REPLIES 3
cottrera
Post Prodigy
Post Prodigy

Hi 
Just wondering if there an update to my response.  best regards Richard

cottrera
Post Prodigy
Post Prodigy

Hi Amitchandak thank you for your quick response. 

The DAX funtion provided required a small amount of editing to sort of work However it provide the total amount. Where as I need the average for the 6 months.  Also I require it to be dynamic , so that once October 2021 month has past. The -6 changes to -7 and once November 2021 has past the -7 changes to -8.

 

Code provided

new DLO = if( max('Date'[Date]) <=eomonth(today(),-1), [DLO] CALCULATE([DLO],DATESINPERIOD('Date'[Date ],eomonth(today(),-1),-6,MONTH)) )

 

My amended code

Last 6 month spend = if( max('Date'[Date]) <=eomonth(today(),-1), CALCULATE([Spend],DATESINPERIOD('Date'[Date],eomonth(today(),-1),-6,MONTH)) )
 
To get the Avg I did the following 
Avg Spend last 6 months =
VAR TotalspednLast6Months = if( max('Date'[Date]) <=eomonth(today(),-1), CALCULATE([£Spend], DATESINPERIOD('Date'[Date],eomonth(today(),-1),-6,MONTH)) )

VAR Months = 6
VAR Results =DIVIDE(TotalspednLast6Months,Months)
RETURN
Results

Also I need to show this measure next to the actual spend table / graph so that it shows as a forcast after the actuals.
 
Here is an example of how I plan to display the results
MonthSpendRIchardsComments
Apr28183Actual Spend
May31523Actual Spend
Jun4096Actual Spend
Jul43831Actual Spend
Aug33873Actual Spend
Sep27275Actual Spend
Oct28130Forcast spend = Average last 6 months
Nov28130Forcast spend = Average last 6 months
Dec28130Forcast spend = Average last 6 months
Jan28130Forcast spend = Average last 6 months
Feb28130Forcast spend = Average last 6 months
Mar28130Forcast spend = Average last 6 months
   
   
MonthSpendRIchardsComments
Apr28183Actual Spend
May31523Actual Spend
Jun4096Actual Spend
Jul43831Actual Spend
Aug33873Actual Spend
Sep27275Actual Spend
Oct41231Actual Spend
Nov30002Forcast spend = Average last 7 months
Dec30002Forcast spend = Average last 7 months
Jan30002Forcast spend = Average last 7 months
Feb30002Forcast spend = Average last 7 months
Mar30002Forcast spend = Average last 7 months

 

Many thanks

Richard

amitchandak
Super User
Super User

@cottrera , Assuming month is coming from a date table

 

new DLO = if( max('Date'[Date]) <=eomonth(today(),-1), [DLO] CALCULATE([DLO],DATESINPERIOD('Date'[Date ],eomonth(today(),-1),-6,MONTH)) )

 

To get the best of the time intelligence function. Make sure you have a date calendar and it has been marked as the date in model view. Also, join it with the date column of your fact/s. Refer :radacad sqlbi My Video Series Appreciate your Kudos.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors