Running Total Beast Mode with Fixed Functionality

I’m working on a running total Beast Mode that tracks ticket sales by event. My current formula works fine:
SUM(SUM(tickets sold)) OVER (PARTITION BY EVENT ORDER BY DATE ASC)
However, these events reoccur yearly, and I want to compare ticket sales pacing to previous years while maintaining drill-down and filtering capabilities—hence, this must be done in Beast Mode, not ETL.
The goal is to track ticket sales pacing vs. the previous year on the same date (March 10, 2025 vs March 10 2024, vs March 10 2023). For example, in March, I want the view to default to March’s daily pacing without losing the running total before March. I've had success with the aforementioned beast mode but once I filter to the month I want to look at (I don't want to look at 365 days at a time) the running total restarts from the beginning of March.
Key requirements:
- Must be filterable by multiple dimensions
- Must be dynamic (ETL is not an option)
Any ideas on how to achieve this within Beast Mode?
Answers
-
I had a similar problem in which I wanted to track vacation and sick time accrual for our employees. I needed to show the balance as a running total without it losing any history and becoming inaccurate due to date range filtering. The solution that worked in this case was to change my leave transaction DataSet from row = individual transactions (draw-downs or accruals) to a DataSet that row = employee-bucket(sick or vacation)-month. In the DataFlow, I added the following Rank & Window tile:
This allowed me to just sum the balance by month on the card, and it wouldn't lose history when filtered because it was a running total in the DataFlow.
I recognize this might not solve your issue, but I am hoping it helps you brainstorm something that does.The other key here is I added a column "Month" that is the same exact thing as "Date". But, what this allows you to do is use the two to get the most recent row by a desired grouping.
(CASE
WHEN `Month` = MAX(MAX(`Date`) FIXED (REMOVE `Month`)) THEN 'Yes'
ELSE 'No'
END)Was this comment helpful? Click Agree or Like below.
Did this comment solve your problem? Accept it as the solution!0
Categories
- All Categories
- 1.9K Product Ideas
- 1.9K Ideas Exchange
- 1.6K Connect
- 1.3K Connectors
- 305 Workbench
- 6 Cloud Amplifier
- 9 Federated
- 3K Transform
- 107 SQL DataFlows
- 648 Datasets
- 2.2K Magic ETL
- 4K Visualize
- 2.5K Charting
- 775 Beast Mode
- 75 App Studio
- 43 Variables
- 734 Automate
- 186 Apps
- 471 APIs & Domo Developer
- 63 Workflows
- 14 DomoAI
- 40 Predict
- 17 Jupyter Workspaces
- 23 R & Python Tiles
- 403 Distribute
- 117 Domo Everywhere
- 277 Scheduled Reports
- 9 Software Integrations
- 137 Manage
- 134 Governance & Security
- 8 Domo Community Gallery
- 44 Product Releases
- 12 Domo University
- 5.4K Community Forums
- 40 Getting Started
- 30 Community Member Introductions
- 113 Community Announcements
- 4.8K Archive