You would define the Metric field as a dimension for your report. The order of the metrics would either be load order or manually define with an if(). If you are using Tableau this is a little different, but there are specific posts on how to do that in the community.
The columns should be done using set analysis and the week function that you can define as starting any day that you like. You can search for set analysis in the help section and in the community. The week function explanation in the help section should be enough. You can also refer to other columns either by the column(x) function or using the column label. This will help you calculate the differences.
If the conditional text color is simple (eg. negative is red and postive is green), you can define it in the Visual Cues tab in the properties window of straight or pivot table. If you want to reproduce something like in Tableau where it is a range of colors you could use the colorMix() function defined in the Text Color property of the expression that you can modify by clicking on the plus next to the expression.
I've tried to break down the process without getting too specific because there are other posts in the community that attack each point more specifically. If you get caught up with any specific issue and can't find the solution, please tell us.
Instead of max(OrderDate) you can use today() and the -1 means last week. The previous week is -2 and I don't know how you calculate the last week last year, but it might be -53. There is also a quarterstart() and a quarterend() function. The functions return complete dates so it is not necessary to also to compare the year.