Best Of
Re: How is remove duplicate actually work?
RANK & WINDOW + Filter will initially output the same number of rows that came in.
If Window Functions are not necessary, and you just need a SELECT DISTINCT equivalent, REMOVE DUPLICATES is OK except it keeps all your columns, so a good alternative (but equally slow to process) would be a GROUP BY with a Min / Max or a rowCount.
Technically I would expect GROUP BY to be marginally slower than REMOVE DUPLICATES because it's a true blocking function (i cannot know the results until i've processed all the rows) whereas REMOVE DUPLICATES could be a pass through function insofar as once I know a value is unique I can pass it onward through the ETL pipeline.
If performance is not as important as documenting the thought process, then choose the right tool for the job.
RANK WINDOW +FILTER if you're looking for first / last value.
GROUP BY for dimensional datasets or aggregations
REMOVE DUPLICATES if you're feeling lazy / need performance ;)
Re: Making dashboards load faster
That's quite a lot of cards on a single dashboard which typically makes it hard to tell a data story with that many. I'd recommend breaking them out into separate dashboards. Other things you can look into would be
- The number of beast modes stored on the dataset used or not as they're all processed when the card is loaded
- The number of dataset views being pulled in as each view is generated dynamically when the card is loaded
- The amount of data you're pulling into each card, the less data the faster it'll load.
Re: Making dashboards load faster
From my experience, there are several things that can have an impact with load speeds.
- Number of datasets being used on the page.
- Number of PDP policies applied to those datasets.
- Number of beastmode calculations being used in the visuals.
I would agree with @GrantSmith though. What is the use case for having so many cards on a single dashboard? I find it obnoxious to scroll through a dashboard with more than ~15 cards to find what I'm looking for. I can't imagine trying to sift through 100+ on a single dashboard.
IMO - you want to limit the data being presented in a dashboard to answering a single business question. Ultimately, I think breaking this dashboard up will be your best bet in terms of improving load time.
Re: Text Summary Number
You shouldn't have to do a lot of concatenating. In the value property, set that to currency.
In the general properties, choose Abbreviate Values.
This should make your value show $496M.
Re: Text Summary Number
I would suggest using the Dynamic Textbox card to display this type of information as it doesn't put the underline in it. You can see this thread where someone asked the same question: https://dojo.domo.com/discussion/53732/summary-number-format-in-notebook-card
Hope this helps.
New Descrition format
Hello all,
We use to format our descriptions with some information and was formated in a easy to read format, but in this new version was all tranformed in a 1 row, no spaces, bunch of data.
we went from this.-
to this.-
is there any way to apply formating to this new feature?
Re: First Ever Virtual Community Awards Ceremony
Major kudos to @Anna Yardley @zcameron and Richard Carey for putting on a great awards ceremony! That was a lot of fun and a great way to interact others virtually. Thank you!
DP22 - Using Beast Mode to Build Data Storytelling - Sales Pacing Graph
This post is part of a series of beast modes I presented on during my “Using Beast Mode to Build Data Storytelling” Domopalooza 2022 session. If you find this post helpful please make sure to give it a like or an awesome below.
Use Case:
We needed a way to display and estimate in real time how well our sales were pacing for the current month to allow stakeholders to quickly make informed decisions. To do this we created a sales pacing graph to determine the current month’s running total and where sales are projected to be at the end of the month.
Beast Modes:
Running Total
SUM(SUM(`Daily Sales`)) OVER (PARTITION BY LAST_DAY(`Order Date`) ORDER BY `Order Date`)
Run Rate:
SUM(SUM(`Daily Sales`)) OVER (PARTITION BY LAST_DAY(`Order Date`) ORDER BY `Order Date`) / DAYOFMONTH(`Order Date`) * DAYOFMONTH(LAST_DAY(`Order Date`))
Beast Mode Breakdown:
Running Total
SUM(SUM(`Daily Sales`)) OVER (PARTITION BY LAST_DAY(`Order Date`) ORDER BY `Order Date`)
OVER denotes a window function. Window functions in beast modes are a feature switch. Talk with your CSM to get this enabled.
Window functions allow us to calculate an aggregation across the partition or entire dataset and return that value as a single value within each row.
PARTITION BY LAST_DAY(`Order Date`)
PARTITION BY Defines the bucket we want to aggregate over
Can exclude to aggregate over the entire dataset.
LAST_DAY returns the last day in a month. This is a way to group by each month. It’s an alternative to (PARTITION BY YEAR(`Order Date`), MONTH(`Order Date`))
ORDER BY `Order Date`
Defines the order in which to calculate the running total.
If excluded it will be the grand total within your partition.
SUM(SUM(`Daily Sales`))
Normal SQL is a single aggregation however Domo can potentially do aggregation twice. First when the data is initially loaded into the card. Another time when you have selected aggregation on another field on the card.
Because a window function returns a single value for each row we need to tell Domo how to aggregate the data (again) when the card does aggregation.
Run Rate
SUM(SUM(`Daily Sales`)) OVER (PARTITION BY LAST_DAY(`Order Date`) ORDER BY `Order Date`) / DAYOFMONTH(`Order Date`) * DAYOFMONTH(LAST_DAY(`Order Date`))
SUM(SUM(`Daily Sales`)) OVER (PARTITION BY LAST_DAY(`Order Date`) ORDER BY `Order Date`)
This is the Running Total beast mode from above. We want to get the month's total at the date given.
/ DAYOFMONTH(`Order Date`)
Divide by the day number of the order date (DAYOFMONTH) to get the average amount per day. In other words the number of days that have elapsed in the current month as of the Order Date
* DAYOFMONTH(LAST_DAY(`Order Date`))
LAST_DAY returns the last date in the given month. DAYOFMONTH will tell us the day number of the last day of that month. In other words, the number of days in the given month. Multiplying our average we just calculated will give us an estimate for the end of the month as of the Order Date value.
Final Result:
Re: First Ever Virtual Community Awards Ceremony
Loved this event! Thank you so much for putting on something super fun. Would love to see this every year and a deep dive into that escape room.
Dojo award ceremony for the win this year🤩
Ashleigh
Re: Do end users need a license to view Domo apps?
Yes, if they're interacting with the app you'd likely need a license. You may also be able to utilize Domo Embed / Domo Everywhere to embed the visualizations within a website which would go based on impressions and not need a Domo license. I'd talk with your CSM about your use case and what the best solution might be.








