Need help to show total of last 18 months for each month for last 12 months

Hi Experts,

I need to display a chart for the total number of patients for the last 18 months for each month for the last 12 months. I need help in figuring out this visualization through beast mode since I do not where to start.

I am new to domo and beast modes and will appreciate you all helping me out here.

Thank you :)

Vy

Answers

  • GrantSmith
    GrantSmith Indiana 🥷
    edited December 2021

    Hi @user012068

    What format is your data in? Is it already aggregated on a monthly basis or is it daily?


    You'll want to make sure your data is aggregated on a monthly basis and you can then utilize the LAG window function to pull the values for the past 18 months for each month.

    LAG(SUM(`patient_count`), 0) OVER (PARTITION BY YEAR(`Date`), MONTH(`Date`) ORDER BY YEAR(`Date`), MONTH(`Date`)) +
    
    LAG(SUM(`patient_count`), 1) OVER (PARTITION BY YEAR(`Date`), MONTH(`Date`) ORDER BY YEAR(`Date`), MONTH(`Date`)) +
    
    LAG(SUM(`patient_count`), 2) OVER (PARTITION BY YEAR(`Date`), MONTH(`Date`) ORDER BY YEAR(`Date`), MONTH(`Date`)) +
    
    LAG(SUM(`patient_count`), 3) OVER (PARTITION BY YEAR(`Date`), MONTH(`Date`) ORDER BY YEAR(`Date`), MONTH(`Date`)) +
    
    LAG(SUM(`patient_count`), 4) OVER (PARTITION BY YEAR(`Date`), MONTH(`Date`) ORDER BY YEAR(`Date`), MONTH(`Date`)) +
    
    LAG(SUM(`patient_count`), 5) OVER (PARTITION BY YEAR(`Date`), MONTH(`Date`) ORDER BY YEAR(`Date`), MONTH(`Date`)) +
    
    LAG(SUM(`patient_count`), 6) OVER (PARTITION BY YEAR(`Date`), MONTH(`Date`) ORDER BY YEAR(`Date`), MONTH(`Date`)) +
    
    LAG(SUM(`patient_count`), 7) OVER (PARTITION BY YEAR(`Date`), MONTH(`Date`) ORDER BY YEAR(`Date`), MONTH(`Date`)) +
    
    LAG(SUM(`patient_count`), 8) OVER (PARTITION BY YEAR(`Date`), MONTH(`Date`) ORDER BY YEAR(`Date`), MONTH(`Date`)) +
    
    LAG(SUM(`patient_count`), 9) OVER (PARTITION BY YEAR(`Date`), MONTH(`Date`) ORDER BY YEAR(`Date`), MONTH(`Date`)) +
    
    LAG(SUM(`patient_count`), 10) OVER (PARTITION BY YEAR(`Date`), MONTH(`Date`) ORDER BY YEAR(`Date`), MONTH(`Date`)) +
    
    LAG(SUM(`patient_count`), 11) OVER (PARTITION BY YEAR(`Date`), MONTH(`Date`) ORDER BY YEAR(`Date`), MONTH(`Date`)) +
    
    LAG(SUM(`patient_count`), 12) OVER (PARTITION BY YEAR(`Date`), MONTH(`Date`) ORDER BY YEAR(`Date`), MONTH(`Date`)) +
    
    LAG(SUM(`patient_count`), 13) OVER (PARTITION BY YEAR(`Date`), MONTH(`Date`) ORDER BY YEAR(`Date`), MONTH(`Date`)) +
    
    LAG(SUM(`patient_count`), 14) OVER (PARTITION BY YEAR(`Date`), MONTH(`Date`) ORDER BY YEAR(`Date`), MONTH(`Date`)) +
    
    LAG(SUM(`patient_count`), 15) OVER (PARTITION BY YEAR(`Date`), MONTH(`Date`) ORDER BY YEAR(`Date`), MONTH(`Date`)) +
    
    LAG(SUM(`patient_count`), 16) OVER (PARTITION BY YEAR(`Date`), MONTH(`Date`) ORDER BY YEAR(`Date`), MONTH(`Date`)) +
    
    LAG(SUM(`patient_count`), 17) OVER (PARTITION BY YEAR(`Date`), MONTH(`Date`) ORDER BY YEAR(`Date`), MONTH(`Date`))
    


    Window functions is a feature switch and you'll need to talk with your CSM to get it enabled. I've done a writeup previously about lag window functions here: Domo IDEAs Conference - Beast Modes - Rolling Averages


    Alternatively you could do this in a Magic ETL with a Rank & Window tile to simplify the card.



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

    **Did this solve your problem? Accept it as a solution!**
  • MarkSnodgrass
    MarkSnodgrass Portland, Oregon 🥷

    If your dataset is showing totals for each day, you can do this in Magic ETL with just a few tiles. It would look something like this:

    Use the formula tile to create a year column and month column

    Use the group by tile to get totals for each month:

    Use the Rank & Window tile create an 18-month total calculation by using the SUM and 18 preceding and sorting by year and month

    This should get you what you want.

    **Make sure to <3 any users posts that helped you.
    **Please mark as accepted the ones who solved your issue.