This solution is a little more complex than just doing a CY, LY, YoY, etc without including the actual periods in your visual, but is achievable. You can use a table calculation to look up the value X rows before or after using LEAD() or LAG(). Then you can do math between those two fields (CY and LY) to get your period over period.
First off, CY is just the actual metric - you don’t need a calculated field for that one. Im going to call it ‘Metric’ for this example.
LY would look like:
lag(sum(Metric), [Date ASC], 52)
YoY would be:
sum(Metric) - LY
Now the issue with using Table Calculations is they require the other rows to be in the visual (or at least the query) to be able to reference them. This means you are probably seeing a whole bunch of blank LY and YoY values in the rows of your first year.
We can ‘hide’ these rather than ‘filter’ them out of the query by writing one more calc that is another Table Calculation, and adding the filter on that. This works because filters placed on Table Calculations happen all the way at the end of the pipeline, after the query has already been run. Therefore we are not really filtering the data asked for in the query, rather purely filtering the display in the visual (hence why I call it a ‘hide’).
Make another calc called ‘Rank Filter’
rank([min(Date) DESC])
The result of this is just going to be a number from 1 to N, with 1 being the most recent week. When you add a filter on this field (for instance <=52) it will ‘hide’ all the older weeks and just leave the weeks from the current year.
Note: My data goes up to Dec 2020, so Rank=1 is the week of Dec 27, 2020.
See this screenshot of the final result. Does that address your question?
Note: You do not need to include the Rank Filter field in the visual, just showing it here for demo purposes.
Note: You can sort the visual however you want. I have left it with the default sort (old to new), but you can sort it so most recent week is at the top.