## Beast Mode to show total for previous week and two weeks prior White Belt

## Beast Mode to show total for previous week and two weeks prior

I am trying to create a table that has a column that shows a total from the previous week and a column with a total from 2 weeks prior. The data crosses the new year, 2020 to 2021. When I create the calculation for 2 weeks prior, it yields an accurate result but when I try a similar calculation for the previous week, it is not accurate.

Here is the calculation I am using for the sum of visit 2 weeks prior:

Sum(CASE WHEN WEEK(DATE_SUB(Current_Date(), INTERVAL 2 WEEK)) = WEEK(`Visit Start Date`) AND YEAR(DATE_SUB(Current_Date(), INTERVAL 2 WEEK)) = YEAR(`Visit Start Date`) THEN 1 Else 0 End)

I tried to get the total for the previous week using the calculation below and it is not yielding the correct results.

Sum(CASE WHEN WEEK(DATE_SUB(Current_Date(), INTERVAL 1 WEEK)) = WEEK(`Visit Start Date`) AND YEAR(DATE_SUB(Current_Date(), INTERVAL 1 WEEK)) = YEAR(`Visit Start Date`) THEN 1 Else 0 End)

What calculations would be best for this scenario? Green Belt

You could try setting up your comparison using the YEARWEEK function instead of WEEK and YEAR separately. So your beast mode would look like this:

Sum(CASE WHEN YEARWEEK(DATE_SUB(Current_Date(), INTERVAL 2 WEEK)) = YEARWEEK(`Visit Start Date`) THEN 1 Else 0 End) Black Belt

Whenever I typically need to do some period over period comparisons I actually restructure my data so that I have a report date and a "comparison date" (the actual date the metric was recorded on) and calculate it as necessary. This allows you to have custom defined periods (like 2 weeks ago and a week ago).

You'd essentially use the report date in your graph but then have beast modes to determine which type of period to display (last week, 2 weeks ago etc.) and centralizes this logic so you have one place to maintain it rather than across multiple cards and beast modes.

**Did this solve your problem? Accept it as a solution!** White Belt

Thank you for your response. This worked to show 2 weeks prior but when I do that to only show the previous week, it just displays the total for 2020 data, not 2021. The previous week is 12/27/20 - 1/2/21. Black Belt

If you absolutely must use a beast mode you could utilize the DAYOFWEEK function to get the end of the prior week and then subtract the number of weeks you're interested in.  DAYOFWEEK returns values between 1 (Sunday) and 7 (Saturday). Subtracting that value for the number of days will return the end of last week

For example - 1 Week Ago / Last Week:

``````SUM(
CASE WHEN (`Date`) > DATE_SUB(CURRENT_DATE(), INTERVAL DAYOFWEEK(CURRENT_DATE()) + (1*7) DAY)
AND (`Date`) <= DATE_SUB(CURRENT_DATE(), INTERVAL DAYOFWEEK(CURRENT_DATE()) + (0*7) DAY)
THEN 1
ELSE 0
END)``````

2 Weeks Ago:

``````SUM(
CASE WHEN (`Date`) > DATE_SUB(CURRENT_DATE(), INTERVAL DAYOFWEEK(CURRENT_DATE()) + (2*7) DAY)
AND (`Date`) <= DATE_SUB(CURRENT_DATE(), INTERVAL DAYOFWEEK(CURRENT_DATE()) + (1*7) DAY)
THEN 1
ELSE 0
END)``````

To break it down for the week ago example: DATE_SUB(INTERVAL DAYOFWEEK(CURRENT_DATE()) + (0*7) DAY) says give me the Date of the Saturday before today. (0*7 here isn't needed but is to help illustrate the logic saying I don't want any weeks prior to this date)

(1*7) adds an extra week before that. (2*7) is two weeks prior.

**Did this solve your problem? Accept it as a solution!** Black Belt

Again, I'd highly recommend you configure an offset dimension to setup a week prior and 2 weeks prior custom offsets and structure your data as such.

@jaeW_at_Onyx did a great video explaining this whole process as well: https://www.youtube.com/watch?v=CDKNOmKClms