Forum Discussion
Compare cumulative data between years
- 9 years ago
Hi ilana105,
How do you set the Axis level, you have year and month field in your source data, you select the month as axis level, the year as legend level, right? If it is, you’d better add filter in measure to cumulative sum for each year, rather than all data. The TOTALYTD Function evaluates the year-to-date value of the expression in the current context. So it return the total sum for each year.
I try to reproduce your scenario as follows.
Create month and year calculated columns.Year = YEAR(Sales[DATE]) Year = YEAR(Sales[DATE])
Create measure using the formula below. The values function will return a table including one year.cumulative = CALCULATE(SUM(Sales[SALE]),FILTER(ALL(Sales),Sales[DATE]<=MAX(Sales[DATE])),VALUES(Sales[Year]))
Create the line chart, you will get expected result same to using TOTALYTD function like the following screenshot.TotalYTD = TOTALYTD(SUM(Sales[SALE]),Sales[DATE])
If you have any other issue, please feel free to ask.
Best Regards,
Angelia
You need to add one more condition to your calculate:
Calculate(
...
, year(db[finaldate]) = max(year(final date))
)
To restart the sum for each year
Hth,
Frank
Hello BetterCallFrank
I have tried to add that new condition but I get the following error:
The MAX function only accepts a column reference as an argument.
Thank you very much
- BetterCallFrank9 years agoResolver IVHi ilana,
Sorry it's the other way around:
Year(final date) = year(max(final date))
If it's not working please let me know- ilana1059 years agoHelper I
Hello BetterCallFrank
I have tried it but it is not working. Please find attached the formula and the graph
cumulativeImpressions = CALCULATE ( SUM (database[impressions] ); FILTER(ALL(database); database[finaldate] <= MAX(database[finaldate]) && year( database[finaldate]) = year(MAX(database[finaldate])) ) )Thank you very much
- v-huizhn-msft9 years agoMicrosoft Employee
Hi ilana105,
How do you set the Axis level, you have year and month field in your source data, you select the month as axis level, the year as legend level, right? If it is, you’d better add filter in measure to cumulative sum for each year, rather than all data. The TOTALYTD Function evaluates the year-to-date value of the expression in the current context. So it return the total sum for each year.
I try to reproduce your scenario as follows.
Create month and year calculated columns.Year = YEAR(Sales[DATE]) Year = YEAR(Sales[DATE])
Create measure using the formula below. The values function will return a table including one year.cumulative = CALCULATE(SUM(Sales[SALE]),FILTER(ALL(Sales),Sales[DATE]<=MAX(Sales[DATE])),VALUES(Sales[Year]))
Create the line chart, you will get expected result same to using TOTALYTD function like the following screenshot.TotalYTD = TOTALYTD(SUM(Sales[SALE]),Sales[DATE])
If you have any other issue, please feel free to ask.
Best Regards,
Angelia