Period Over Period Calculation Challenges

Options

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

  • RobSomers
    Options

    @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!**

  • jaeW_at_Onyx
    Options

    @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"
  • RocketMichael
    Options

    That did it @RobSomers ! Thank you for your help on this. 😀

  • RocketMichael
    Options

    Thank you @jaeW_at_Onyx for breaking that down for me!