Forum Discussion
Variances between columns
- Anonymous8 years ago
Ok so that tells me that for each ForecastMonth, the First and Last Date are coming back with the same date. On the brightside, that suggests that the formula overall is working. Its now a matter of understanding why, on a row by row context, we are only seeing a single Submission Month date.
First thing i've noted is that your 'Filter' statements aren't required within the calculate statement. So your code can be updated to simply be:
Revenue Variance = Var StartDate = FIRSTDATE('DPLImportPBI'[Submission Month])
Var EndDate = LastDate ('DPLImportPBI'[Submission Month])
Var FirstForecast = CALCULATE(
sum('DPLImportPBI'[Forecast Revenue]),
'DPLImportPBI'[SubmissionType] = "Rolling Forecast",
'DPLImportPBI'[Submission Month] = startdate
)
Var LastForecast = CALCULATE(
sum('DPLImportPBI'[Forecast Revenue]),
'DPLImportPBI'[SubmissionType] = "Rolling Forecast",
'DPLImportPBI'[Submission Month] = EndDate
)
return LastForecast - FirstForecastNow this code does assume that the all of your forecasts that you want to group will have the same date when we make the 'Submission Month' comparion. Typically my solution to line dates up is to force all of the dates to become the 1st of that month/year using DATE(YEAR([Column], Month[Column], 1). You have mentioned that your submissions can be early, so you might need to solve what you do if your submission dates fall in the previous month. One solution might be to take the submission date and add a certain number of days (lets say 5 days), before resolving the date to the first. This means that anything submitted in the last few days is pushed into the new month, prior to us resolving our date change to become the First.
One approach to doing this might be: Create a new column called "Submission Month Group" which is equal to 'Submission Month' + 5 days, then converted to the first. We could then use that new column in our formula above. If your Submission Month is already a calculated column, you could incorporate that idea in that existing Submission Month formula.
Still returning zeros as the variances
- Anonymous8 years agoNot applicable
For trouble shooting purposes, create a new measure with the same code that instead of having "LastForecast - FirstForecast" change it to "LastForecast". Put that measure into your visuals and see what numbers come up. Now measure that part to "FirstForecast", also do a similar check with 'StartDate' and 'EndDate'
Are you getting some numbers or are you getting 0? Are the Start and End Dates coming up with the correct values?
If 0:
Check the values in column 'SubmissionType', are the values exactly "Rolling Forecast", including that capitalization and no extra spaces?
- Anonymous8 years agoNot applicable
Yep was already testing in that way
both FirstForecast and LastForecast are producing the same numbers (hence the zeros).
Here is a copy of the visualisation with the return just being the LastForecast. Note in the submission filter in this example i have selected July 2017 and November 2017
- Anonymous8 years agoNot applicable
Sorry yhat last visual was the zeros I was referring to... Here is with just returning LastForecast
- Anonymous8 years agoNot applicable
Ok so that tells me that for each ForecastMonth, the First and Last Date are coming back with the same date. On the brightside, that suggests that the formula overall is working. Its now a matter of understanding why, on a row by row context, we are only seeing a single Submission Month date.
- Anonymous8 years agoNot applicable
Think i got it working... just re typed the LASTDATE function and it worked. Must of been a typo somewhere
- Anonymous8 years agoNot applicable
Can I ask another related question. I now have the measures working but due to the set up the variances measure I am having to put these measures on a separate visual to the forecasts (see screenshot)
You can see I have a matrix displaying my July and October forecast submissions and I have a second visual doing the variance between the 2 forecasts (per per solution given for revenue I just replicated for EBIT and Margin %). This vall works fine but ideally I would be better on one visual. Can you think of a possible way?
- Anonymous8 years agoNot applicable
I feel like you can by using ALLSELECTED and potentially using another variable to remember the forecast month row context which i'm expecting will be lost when ALLSELECTED is used.
To make use of ALLSELECTED, it would look something like:
LastForecast = CALCULATE( sum('DPLImportPBI'[Forecast Revenue]), ALLSELECTED('DPLImportPBI'), 'DPLImportPBI'[SubmissionType] = "Rolling Forecast", 'DPLImportPBI'[Submission Month] = EndDate )I'm expecting if you use the above as is, your forecast month row context could be lost. If thats the case, just add a new variable in your formula with LASTDATE and that column, then put it into the calculate formula as another filter condition along with the 3 in the above.
- Anonymous8 years agoNot applicable
Sorry this doesn't achieve what I'm looking for and maybe I didn't explain correctly.
For started the ALLSELECTED option pulls in all revenuve for all forecasts and I definitley do not want that.
The main issue I have it that the matrix visual has a 2 tiered colum heading. It has July 2017 and November 2017 (becasue these are the 2 submission months I have chosen in my slicer. Below these are the column headers for my measues (RF Revenue, RF EBIT & RF Margin).
When I add the varaince measures it tries to give a variance for the July forecast and also a varaince for the November forecast. I do not want this... I want one varaince comparing the 2 forecast. This works perfectly ok as a seperate visual but not if I try and add it to the existing visual
- Anonymous8 years agoNot applicable
ALLSELECTED is likely the avenue you'll need to persist with, but it won't be enough on its own. As you have correctly pointed out, it will strip extra context away. You can first record this context into additional variables and add back into your calculate statement. It will just simply take some trial and error for you to get right.
Really comes down to the choice of whether the 2 visuals are going to be enough or whether you wish to spend the time and effort in adding additional complexity in order to squeeze it into the single visual. Its a bit hard to solve from afar so its one of those problems you will need to pick up and run with.