BeastMode Help: Days Remaining in Quarter

Reply
Highlighted
Black Belt

BeastMode Help: Days Remaining in Quarter

I've got a beastmode I am trying to create that will calculate the days remaining in a quarter. 

 

  • If the quarter is already over I want to show a value of 0 (not a negative number).  
  • If the quarter hasn't started I want to show 91 (that's the number of days in a quarter)

Any help would be appreciated.  Also if this is better handled in ETL I can go that way as well.

 

This is the concept I am working with (not currently working, and does not include the):

 

 

Case 

when

DATEDIFF(CURDATE(),
case 
    when `Count Quarter`='Q1' then DATE(3/31/2020) 
    when `Count Quarter`='Q2' then DATE(6/30/2020)
    when `Count Quarter`='Q3' then DATE(9/30/2020) 
    when `Count Quarter`='Q4' then DATE(12/31/2020)
  else 0
end
  )>91 then 91 
  
  when

DATEDIFF(CURDATE(),
case 
    when `Count Quarter`='Q1' then DATE(3/31/2020) 
    when `Count Quarter`='Q2' then DATE(6/30/2020)
    when `Count Quarter`='Q3' then DATE(9/30/2020) 
    when `Count Quarter`='Q4' then DATE(12/31/2020)
  else 0
end
  )<0 then 0
  
  else
  
DATEDIFF(CURDATE(),
case 
    when `Count Quarter`='Q1' then DATE(3/31/2020) 
    when `Count Quarter`='Q2' then DATE(6/30/2020)
    when `Count Quarter`='Q3' then DATE(9/30/2020) 
    when `Count Quarter`='Q4' then DATE(12/31/2020)
  else 0
end
  )
  end

 

 


Accepted Solutions
Highlighted
Black Belt

If I were you, I would create a Date Dimension that has one row per day, and includes, 'End Of Quarter' as a date.  Then JOIN that dataset to your transactions using a FUSION.

 

Then in Beast mode you can calculate datediff(ActivityDate, EndofQuarter)  You could wrap all that in a CASE statement to calculate if Activity Date is less than Start of Current Quarter ( 

  SELECT  MAKEDATE(YEAR(CURDATE()), 1) + INTERVAL QUARTER(CURDATE()) QUARTER 
                                       - INTERVAL    1 QUARTER 

)

 

https://stackoverflow.com/questions/11884618/how-do-i-get-the-first-date-of-a-quarter-in-mysql

 

Hope that helps!


Jae Wilson
Check out my Domo Training YouTube Channel

**Say "Thanks" by clicking the heart in the post that helped you.
**Please mark the post that solves your problem by clicking on "Accept as Solution"

View solution in original post


All Replies
Highlighted
Black Belt

If I were you, I would create a Date Dimension that has one row per day, and includes, 'End Of Quarter' as a date.  Then JOIN that dataset to your transactions using a FUSION.

 

Then in Beast mode you can calculate datediff(ActivityDate, EndofQuarter)  You could wrap all that in a CASE statement to calculate if Activity Date is less than Start of Current Quarter ( 

  SELECT  MAKEDATE(YEAR(CURDATE()), 1) + INTERVAL QUARTER(CURDATE()) QUARTER 
                                       - INTERVAL    1 QUARTER 

)

 

https://stackoverflow.com/questions/11884618/how-do-i-get-the-first-date-of-a-quarter-in-mysql

 

Hope that helps!


Jae Wilson
Check out my Domo Training YouTube Channel

**Say "Thanks" by clicking the heart in the post that helped you.
**Please mark the post that solves your problem by clicking on "Accept as Solution"

View solution in original post

Highlighted
Black Belt

Thanks @jaeW_at_Onyx - YOU ROCK!

Announcements
Stand out in the Dojo: Choose your own recognizable username and add a unique profile photo in your profile settings.