Period Over Period Calculation Challenges

I am trying to calculate the difference between periods for a specific metric and am running into some trouble. (As you can see from the screenshot below, the Beast Mode calculation I am using doesn't seem to be working.)


To generate the column totals, I am using this beast mode successfully for each desired date comparison: (example for current below)

CASE when `Period Type`='Current' then `Shipped CoGS`end


However, when trying to calculate the difference between these periods, the formula is validated but doesn't work:

((CASE when `Period Type`='Current' then `Shipped CoGS`end) - (CASE when `Period Type`= 'Last Month' then `Shipped CoGS` end)) / (CASE when `Period Type`='Last Month' then `Shipped CoGS`end) 


What am I missing?

Tagged:

Comments

  • @RocketMichael Is your dataset organized at day grain like your table? Or are you doing the aggregation in your card? If it's in your card, you're going to need to throw SUM around all your case when statements:

    (SUM(CASE when `Period Type`='Current' then `Shipped CoGS`end) - SUM(CASE when `Period Type`= 'Last Month' then `Shipped CoGS` end)) / SUM(CASE when `Period Type`='Last Month' then `Shipped CoGS`end) 

    **Was this post helpful? Click Agree or Like below**

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

  • @RocketMichael

    (
    (CASE when `Period Type`='Current' then `Shipped CoGS`end) - 
    (CASE when `Period Type`= 'Last Month' then `Shipped CoGS` end)
    ) / (CASE when `Period Type`='Last Month' then `Shipped CoGS`end) 
    

    you are calculating your beast mode at the row level. in other words, take one row in isolation and then apply your beast mode to it.

    you Period Type for one row cannot be both 'Current' AND 'Last Month' at the same time. therefore it is IMPOSSIBLE for one row to return a result.

    you have to apply your beast mode to an aggregate (which is exactly what @RobSomers ) is demonstrating.

    (
    SUM(CASE when `Period Type`='Current' then `Shipped CoGS`end) -
    SUM(CASE when `Period Type`= 'Last Month' then `Shipped CoGS` end)
    ) / SUM(CASE when `Period Type`='Last Month' then `Shipped CoGS`end) 
    


    "across all rows take the sum of shipped cogs when period type is current."

    "across all rows take the sum of shipped cogs when period type is last month" etc.

    Jae Wilson
    Check out my 🎥 Domo Training YouTube Channel 👨‍💻

    **Say "Thanks" by clicking the ❤️ in the post that helped you.
    **Please mark the post that solves your problem by clicking on "Accept as Solution"
  • That did it @RobSomers ! Thank you for your help on this. 😀

  • Thank you @jaeW_at_Onyx for breaking that down for me!