Hello @Ozzy, I totally understand how the period over period calculations can be difficult, so I will do my best to help. Also, thank you for taking the time to put the data into an analysis in Arena, that makes it a lot easier for me to help you.
The first thing that I noticed is that your final_report_date is showing as a string field and not a datetime field. I’m not sure if that is the same in your actual analysis, but if it is, it will complicate some of these calculations. Another thing that I want to mention is that showing some things like WoW, MoM, etc. it a pivot table do not always work how you want. If you were displaying your data in weeks, you could show a WoW column with each week, but trying to show 1 WoW column at the end likely will not work.
Now, some things that might be worth playing around with to get your periodOverPeriod values would be sumOver and Lag functions.
sumOver is a great way to get a value by a partition and it should also allow you to compare your value for a specific week to the previous week value returned from Lag.
lastMonthValue = lag({report_metric}, [truncDate('MM', {final_report_date}) DESC], 1)
This should return your previous month value on a row containing the current month value. Then you could subtract it or divide it from the current month value that you calculate with sumOver.
thisMonthValue = sumOver({report_metric}, [truncDate('MM', {final_report_time})])
Those functions should allow you to aggregate them together. Then if you want to compare week values just change the truncDate function in the partition fields to truncDate('WK', {final_report_date})
.
Let me know if you have any follow-up questions or if you run into any issues implementing these functions and I can try to guide you further. Thank you!