Beast Mode Help: Two layers of division
I've got a calculation I am trying to perform with a beast mode formula, that I can't get to work.
The calculation is (Number of Lines / Hours Active) / Standard
I'm trying to protect against divide by zero in the two layers of the formula. The first item in the order of operation is the (Number of Lines / Hours Active), then the result of that calculation is / Standard
Here is the beast mode I attempted, but is not working. I know this case is checking for NULL, do I need to check for zero as well?
CASE
WHEN IFNULL(SUM(`RCV Standard  Dynamic`),0)=0
THEN 0
ELSE
(CASE
WHEN IFNULL(SUM(`RCV Time Active`),0)=0
THEN 0
ELSE
(SUM(`RCV Number of Lines`)/SUM(`RCV Time Active`))/`RCV Standard  Dynamic`
END)
END
Best Answer

Another option is to do a nested CASE statement to account for the divide by zero in both divisors:
CASE
WHEN IFNULL(`Standard`,0) = 0 THEN 0
ELSE
(CASE
WHEN IFNULL(`Hours Active`,0) = 0 THEN 0
ELSE (IFNULL(Number of Lines,0) / IFNULL(Hours Active,0))
END) / IFNULL(`Standard`,0)END
If I have answered your question, please click "Yes" on my comment's option.
1
Answers

Hi.
Please try using nullif and ifnull.
Original(Number of Lines / Hours Active) / Standard
Standard = 0 > null
(Number of Lines / Hours Active) / nullif(Standard,0)
0 or null > 0
ifnull((Number of Lines / Hours Active) / nullif(Standard,0),0)
3 
I've tried a few times without success to change my existing Beast Mode to include what you've suggested and I cannot get it to work. Can you show me the completed Beast Mode instead of just those suggested lines please?
0 
Hi @swagner,
If I correctly understood your problem... Have you tried using just nullif? Divisions by 0 do raise an error but division by null equals null (This is what I systematically use), so in your case, I would go with :
(Number of Lines / NULLIF(Hours Active,0)) / NULLIF(Standard,0)
This way no divisor will ever be zero.
In the end, you can always revert to zero if the result is null (I do not agree with this approach as a division by zero tends to an infinite number, not a zero! But some people follow this)
IFNULL((Number of Lines / NULLIF(Hours Active,0)) / NULLIF(Standard,0),0)
Hope this helps.
Ricardo Granada
MajorDomo@Lusiaves
**If the post solves your problem, mark it by clicking on "Accept as Solution"
**You can say "Thank you" by clicking the thumbs up in the post that helped you.3 
Another option is to do a nested CASE statement to account for the divide by zero in both divisors:
CASE
WHEN IFNULL(`Standard`,0) = 0 THEN 0
ELSE
(CASE
WHEN IFNULL(`Hours Active`,0) = 0 THEN 0
ELSE (IFNULL(Number of Lines,0) / IFNULL(Hours Active,0))
END) / IFNULL(`Standard`,0)END
If I have answered your question, please click "Yes" on my comment's option.
1 
I forgot to nullif to "Hours Active".
Original
(Number of Lines / Hours Active) / StandardStandard = 0 > null
(Number of Lines / nullif(Hours Active,0)) / nullif(Standard,0)
or
(sum(Number of Lines) / nullif(sum(Hours Active),0)) / nullif(sum(Standard),0)0 or null > 0
ifnull((Number of Lines / nullif(Hours Active,0)) / nullif(Standard,0),0)
or
ifnull((sum(Number of Lines) / nullif(sum(Hours Active),0)) / nullif(sum(Standard),0),0)1
Categories
 All Categories
 1.8K Product Ideas
 1.8K Ideas Exchange
 1.5K Connect
 1.2K Connectors
 296 Workbench
 6 Cloud Amplifier
 8 Federated
 2.9K Transform
 99 SQL DataFlows
 614 Datasets
 2.2K Magic ETL
 3.8K Visualize
 2.5K Charting
 727 Beast Mode
 53 App Studio
 40 Variables
 677 Automate
 173 Apps
 451 APIs & Domo Developer
 45 Workflows
 8 DomoAI
 34 Predict
 14 Jupyter Workspaces
 20 R & Python Tiles
 394 Distribute
 113 Domo Everywhere
 275 Scheduled Reports
 6 Software Integrations
 121 Manage
 118 Governance & Security
 Domo Community Gallery
 32 Product Releases
 10 Domo University
 5.4K Community Forums
 40 Getting Started
 30 Community Member Introductions
 108 Community Announcements
 4.8K Archive