Is there a way to nest beast modes in another beast mode without exposing the full calculation

Looking for any advice suggestions on the following.

First, I wanted to ask, if I make a change to a saved beast mode, and another calculation is using that beast mode will that calculation automatically update?


I would like to nest multiple beast modes in a calculation and use a case statement to select which beast mode I want to use for a specific set of data. I have about 20 of these beast modes, so my calculation is getting VERY VERY long. In Tableau and other tools, the beast mode would simply show as a field name and would not expand out. Is there any way to do this. I cannot do the beast mode in the data flow as I need the calculations to be dynamic and to adjust to whatever filters the user uses.


Beast Mode 1 - CTR:

case when (sum(`Clicks`) / sum(`Impressions`)) < x then 0

 when (sum(`Clicks`) / sum(`Impressions`)) < y then 1

 when (sum(`Clicks`) / sum(`Impressions`)) < z then 2

 else 3 end

Beast mode 2 - Video View Rate:

case when (sum(`Video Views`) / sum(`Impressions`)) < x then 0

 when (sum(`Video Views`) / sum(`Impressions`)) < y then 1

 when (sum(`Video Views`) / sum(`Impressions`)) < z then 2

 else 3 end

I would love to just be able to use a beast mode that has just the field names:

case when objective = clicks then 'Beast Mode 1' else 'Beast Mode 2' end

But instead i see all of the calculations.


  • MarkSnodgrass
    MarkSnodgrass Portland, Oregon 🟤

    Unfortunately, the beast modes will expand out when you include them in another beast mode. I agree that it would be really helpful if they did not do this, as it would make the code a lot cleaner and more efficient.

    I'm not sure if it has been submitted in the Ideas Exchange section of the Dojo, but I will definitely vote it up if you posted it there.

  • GrantSmith
    GrantSmith Indiana 🔴

    Hi @JustinB

    You could abstract the core calculations in a dataset view and then use that as a field in your beast mode. It's not ideal and abstracts the logic to multiple places. I've been requesting beast modes behave like actual variables for a while now instead of inserting the entire formula.

  • JustinB
    JustinB ⚪️

    @GrantSmith Not sure that will work as the calculation will be at the level set in the view rather than dynamic and changing based on the chart/filter selections

  • jaeW_at_Onyx
    jaeW_at_Onyx Budapest / Portland, OR 🟤

    @MarkSnodgrass is correct there is no referential way to refer to pre-defined beast modes.

    @JustinB you generally should not nest aggregations inside a CASE statement.

    case when (sum(`Clicks`) / sum(`Impressions`)) < x then 0
     when (sum(`Clicks`) / sum(`Impressions`)) < y then 1
     when (sum(`Clicks`) / sum(`Impressions`)) < z then 2
     else 3 end

    Unless people think this through really carefully, it usually yields unexpected results. For that reason, Grant's recommendation to embed the math inside a DSV is a strong recommendation; however as you point out, then the data stops responding to filters b/c the DSV is rigid and doesn't give access to the underlying data to filter.

    It's kind of a rock and a hard place. And arguably the weakest feature of Domo's Analyzer engine.

  • I used to work with another application, and in this application it was possible to nest calculations, the problem is that depending on the levels that you will nest, the tool had to recalculate all the information, which had a negative impact on performance, I think this is the reason of which it is not possible in DOME to nest calculations.

    I dont think this will became an option