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

Microsoft is giving away 50,000 FREE Microsoft Certification exam vouchers. Get Fabric certified for FREE! Learn more

Reply
FormworkFan
Helper I
Helper I

Calculating a Forecast value

I have a Dim Table of Sorts for 2025 revenue goals. This table has 3 columns (Division, Sales Region & 2025 Goal).

 

I'm using this to compare my YTD Sales with Total Goals for 2025.  I would to now set a monthly or evenly daily Goal Target.

 

I have a 2nd Dim Table for that defines the perecentage of total goal I'm expected based on the current day of the year. ( 1 to 365).

 

Day 1 (Jan 1) expected percentage of goal is about 0.0%

Day 182 (Jun 30) expected perdentage of goal is about 50% 

Day 365 (31-Dec) is 100% of goal.

 

Please note this I'm accountly for some seasonality, so the increase each day is not the same.

 

I'm using my Total Sales to plot a colum chart to compare Montly Sales vs Monthly Sales from the Previous year.

 

I'd like to incorporate ethier a 3rd Bar for the expect Forecast number for each month or a line.  I kind of now I have to multiple by percentage figure by the Goal value, but I can't figure out the DAX to get this working.

 

Any comment or thougths would be helpful.

 

 

 

5 REPLIES 5
v-bmanikante
Community Support
Community Support

Hello @FormworkFan ,

 

Could you please try the below mentioned DAX Measures:


Expected Goal (Projected) =
SUMX(
Goals,
Goals[2025 Goal] * MAX('TargetIndex'[% of Target])
)

 


Expected Goal (Monthly) =
VAR StartDate = DATE(YEAR(MAX('Calendar'[Date])), MONTH(MAX('Calendar'[Date])), 1)
VAR EndDate = EOMONTH(StartDate, 0)
VAR PriorEnd = EOMONTH(StartDate, -1)

VAR EndPct =
CALCULATE(
MAX('TargetIndex'[% of Target]),
FILTER(ALL('Calendar'), 'Calendar'[Date] = EndDate)
)

VAR StartPct =
CALCULATE(
MAX('TargetIndex'[% of Target]),
FILTER(ALL('Calendar'), 'Calendar'[Date] = PriorEnd)
)

RETURN
SUMX(
Goals,
Goals[2025 Goal] * (EndPct - StartPct)
)

 

 

If this post helps, then please consider Accepting as solution to help the other members find it more quickly, don't forget to give a "Kudos" – I’d truly appreciate it!

Regards,
B Manikanteswara Reddy

ryan_mayu
Super User
Super User

could you pls provide some sample data and expected output?





Did I answer your question? Mark my post as a solution!

Proud to be a Super User!




Here are expamples of the two DIM tables I mentioned.  What I would like to do is have the expected Forecast amount for any day of the year and plot this against the YTD Sales. I'd also like to make sure the plot projects into the remaning of the year.

 

As an example,  for the month of June (end of month), the total goal that should be show would be: 

 

(0.49117*$3,300.00) = $1,620.86, but the amount that shoudl be shown for June only woudl be

 

(0.49117 - 0.3810)*$3,300 = $363.56

 

The Filters will need to work so, if I only selecte "Toys" in Canada and Mexico, this value would be

($100+$75) * (0.49117 - 0.3810) = $19.25 for the month of June

 

I hope this info is helpful

 

 

FormworkFan_1-1744806304372.png

 

FormworkFan_2-1744806330482.png

 

FormworkFan_3-1744806708260.png

 

 

Hi @FormworkFan,

 

Thank you for reaching to Microsoft Fabric community forum.

@ryan_mayu Thank you for your support

 

To move forward and help you accurately calculate and visualize forecast, could you please clarify a couple of things:

>How are the two tables connected in your model?
Are they both linked through a calendar table or something else?

>Can you let us know where your actual sales amount data is coming from?

Regards,

B Manikanteswara Reddy

My Sales Table are coming from a Salesforce Report. Both the Sales Table and Target Index Table is connected to my calendar table.  Both have a Many to one relationship to the Calendar Table.

 

The Table withe the Values of the 2025 goals are in a Goals Table that are connect to 2 other DIM Tables for the Divisons and Region. Many to 1.

Helpful resources

Announcements
Notebook Gallery Carousel1

NEW! Community Notebooks Gallery

Explore and share Fabric Notebooks to boost Power BI insights in the new community notebooks gallery.

April2025 Carousel

Fabric Community Update - April 2025

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

"); $(".slidesjs-pagination" ).prependTo(".pagination_sec"); $(".slidesjs-pagination" ).append("
"); $(".slidesjs-play.slidesjs-navigation").appendTo(".playpause_sec"); $(".slidesjs-stop.slidesjs-navigation").appendTo(".playpause_sec"); $(".slidesjs-pagination" ).append(""); $(".slidesjs-pagination" ).append(""); } catch(e){ } /* End: This code is added by iTalent as part of iTrack COMPL-455 */ $(".slidesjs-previous.slidesjs-navigation").attr('tabindex', '0'); $(".slidesjs-next.slidesjs-navigation").attr('tabindex', '0'); /* start: This code is added by iTalent as part of iTrack 1859082 */ $('.slidesjs-play.slidesjs-navigation').attr('id','playtitle'); $('.slidesjs-stop.slidesjs-navigation').attr('id','stoptitle'); $('.slidesjs-play.slidesjs-navigation').attr('role','tab'); $('.slidesjs-stop.slidesjs-navigation').attr('role','tab'); $('.slidesjs-play.slidesjs-navigation').attr('aria-describedby','tip1'); $('.slidesjs-stop.slidesjs-navigation').attr('aria-describedby','tip2'); /* End: This code is added by iTalent as part of iTrack 1859082 */ }); $(document).ready(function() { if($("#slides .item").length < 2 ) { /* Fixing Single Slide click issue (commented following code)*/ // $(".item").css("left","0px"); $(".item.slidesjs-slide").attr('style', 'left:0px !important'); $(".slidesjs-stop.slidesjs-navigation").trigger('click'); $(".slidesjs-previous").css("display", "none"); $(".slidesjs-next").css("display", "none"); } var items_length = $(".item.slidesjs-slide").length; $(".slidesjs-pagination-item > button").attr("aria-setsize",items_length); $(".slidesjs-next, .slidesjs-pagination-item button").attr("tabindex","-1"); $(".slidesjs-pagination-item button").attr("role", "tab"); $(".slidesjs-previous").attr("tabindex","-1"); $(".slidesjs-next").attr("aria-hidden","true"); $(".slidesjs-previous").attr("aria-hidden","true"); $(".slidesjs-next").attr("aria-label","Next"); $(".slidesjs-previous").attr("aria-label","Previous"); //$(".slidesjs-stop.slidesjs-navigation").attr("role","button"); //$(".slidesjs-play.slidesjs-navigation").attr("role","button"); $(".slidesjs-pagination").attr("role","tablist").attr("aria-busy","true"); $("li.slidesjs-pagination-item").attr("role","list"); $(".item.slidesjs-slide").attr("tabindex","-1"); $(".item.slidesjs-slide").attr("aria-label","item"); /*$(".slidesjs-stop.slidesjs-navigation").on('click', function() { var itemNumber = parseInt($('.slidesjs-pagination-item > a.active').attr('data-slidesjs-item')); $($('.item.slidesjs-slide')[itemNumber]).find('.c-call-to-action').attr('tabindex', '0'); });*/ $(".slidesjs-stop.slidesjs-navigation, .slidesjs-pagination-item > button").on('click keydown', function() { $.each($('.item.slidesjs-slide'),function(i,el){ $(el).find('.c-call-to-action').attr('tabindex', '-1'); }); var itemNumber = parseInt($('.slidesjs-pagination-item > button.active').attr('data-slidesjs-item')); $($('.item.slidesjs-slide')[itemNumber]).find('.c-call-to-action').attr('tabindex', '0'); }); $(".slidesjs-play.slidesjs-navigation").on('click', function() { $.each($('.item.slidesjs-slide'),function(i,el){ $(el).find('.c-call-to-action').attr('tabindex', '-1'); }); }); $(".slidesjs-pagination-item button").keyup(function(e){ var keyCode = e.keyCode || e.which; if (keyCode == 9) { e.preventDefault(); $(".slidesjs-stop.slidesjs-navigation").trigger('click').blur(); $("button.active").focus(); } }); $(".slidesjs-play").on("click",function (event) { if (event.handleObj.type === "click") { $(".slidesjs-stop").focus(); } else if(event.handleObj.type === "keydown"){ if (event.which === 13 && $(event.target).hasClass("slidesjs-play")) { $(".slidesjs-stop").focus(); } } }); $(".slidesjs-stop").on("click",function (event) { if (event.handleObj.type === "click") { $(".slidesjs-play").focus(); } else if(event.handleObj.type === "keydown"){ if (event.which === 13 && $(event.target).hasClass("slidesjs-stop")) { $(".slidesjs-play").focus(); } } }); $(".slidesjs-pagination-item").keydown(function(e){ switch (e.which){ case 37: //left arrow key $(".slidesjs-previous.slidesjs-navigation").trigger('click'); e.preventDefault(); break; case 39: //right arrow key $(".slidesjs-next.slidesjs-navigation").trigger('click'); e.preventDefault(); break; default: return; } $(".slidesjs-pagination-item button.active").focus(); }); }); // Start This code is added by iTalent as part of iTrack 1859082 $(document).ready(function(){ $("#tip1").attr("aria-hidden","true").addClass("hidden"); $("#tip2").attr("aria-hidden","true").addClass("hidden"); $(".slidesjs-stop.slidesjs-navigation, .slidesjs-play.slidesjs-navigation").attr('title', ''); $("a#playtitle").focus(function(){ $("#tip1").attr("aria-hidden","false").removeClass("hidden"); }); $("a#playtitle").mouseover(function(){ $("#tip1").attr("aria-hidden","false").removeClass("hidden"); }); $("a#playtitle").blur(function(){ $("#tip1").attr("aria-hidden","true").addClass("hidden"); }); $("a#playtitle").mouseleave(function(){ $("#tip1").attr("aria-hidden","true").addClass("hidden"); }); $("a#play").keydown(function(ev){ if (ev.which ==27) { $("#tip1").attr("aria-hidden","true").addClass("hidden"); ev.preventDefault(); return false; } }); $("a#stoptitle").focus(function(){ $("#tip2").attr("aria-hidden","false").removeClass("hidden"); }); $("a#stoptitle").mouseover(function(){ $("#tip2").attr("aria-hidden","false").removeClass("hidden"); }); $("a#stoptitle").blur(function(){ $("#tip2").attr("aria-hidden","true").addClass("hidden"); }); $("a#stoptitle").mouseleave(function(){ $("#tip2").attr("aria-hidden","true").addClass("hidden"); }); $("a#stoptitle").keydown(function(ev){ if (ev.which ==27) { $("#tip2").attr("aria-hidden","true").addClass("hidden"); ev.preventDefault(); return false; } }); }); // End This code is added by iTalent as part of iTrack 1859082
Top Solution Authors