Beastmode Including exceptions to % calculation
Hi,
I'm trying to calculate % right first time to remove exceptions ie where some "discrepancies" are right first time (RFT) and other classed as not RFT. However, I wish to include the data points from those which are deemed RFT in the overall calculation.
This calculation works but doesn't allow me to exclude certain datapoints:
1-
COUNT (DISTINCT CASE
WHEN `HOLD_NAME` IN ('Incomplete Info' ,'PO – INVOICE HOLD', 'PENDING PO OVERRIDE' , 'CREDIT HOLD- INVOICE HOLD','CCCL Info Incomplete')
OR HOLD_NAME
like '%Discrepancy%'
OR `RETURNCODE` is not null
THEN `Study Number` END) / COUNT(DISTINCT `Study Number`)
Examples being Discrepancy 121901 / 121325 and 121275 are all RFT but all other discrepancies are wrong.
Is it possible to do this in the same beastmode?
If I filter them out it reduces the overall number and skews the final %.
I tried the below but it returned a 0% RFT which isn''t right.
1-
COUNT (DISTINCT CASE
WHEN `HOLD_NAME`<>'Discrepancy 121901'
OR `HOLD_NAME`<> 'Discrepancy 121275'
OR `HOLD_NAME`<> 'Discrepancy 121325'
OR `HOLD_NAME`<> 'Discrepancy 121566'
OR `HOLD_NAME` IN ('Incomplete Info' ,'PO – INVOICE HOLD', 'PENDING PO OVERRIDE' , 'CREDIT HOLD- INVOICE HOLD','CCCL Info Incomplete')
OR `HOLD_NAME`like '%Discrepancy%'
OR `RETURNCODE` is not null
THEN `Study Number` END) / COUNT(DISTINCT `Study Number`)
Best Answer
-
@Katie_Forrest_2022 Your second beast mode is returning 0% because you are using a combination of OR and <> in you case statement, which is logically true for every row in your dataset. So for example, Discrepancy 121901 is not Discrepancy 121275, so it meets the criteria of your second exception.
I generally prefer to use additional WHEN... THEN... clauses in case statements over OR operators because it allows you to be much more surgical about classifying rows. It's also helpful that WHEN... THEN... clauses are evaluated top to bottom, whereas the order does not matter with criteria separated by OR operators.
I'd suggest structuring your beast mode like this:
count(distinct case when `HOLD_NAME` in ('Discrepancy 121901','Discrepancy 121275', 'Discrepancy 121325','Discrepancy 121566') then `Study Number` when `HOLD_NAME` not in ('Incomplete Info' ,'PO – INVOICE HOLD', 'PENDING PO OVERRIDE' , 'CREDIT HOLD- INVOICE HOLD','CCCL Info Incomplete') and `HOLD_NAME` not like '%Discrepancy%' and `RETURNCODE` is not null then `Study Number` end) / count(distinct `Study Number`)
2
Answers
-
@Katie_Forrest_2022 Your second beast mode is returning 0% because you are using a combination of OR and <> in you case statement, which is logically true for every row in your dataset. So for example, Discrepancy 121901 is not Discrepancy 121275, so it meets the criteria of your second exception.
I generally prefer to use additional WHEN... THEN... clauses in case statements over OR operators because it allows you to be much more surgical about classifying rows. It's also helpful that WHEN... THEN... clauses are evaluated top to bottom, whereas the order does not matter with criteria separated by OR operators.
I'd suggest structuring your beast mode like this:
count(distinct case when `HOLD_NAME` in ('Discrepancy 121901','Discrepancy 121275', 'Discrepancy 121325','Discrepancy 121566') then `Study Number` when `HOLD_NAME` not in ('Incomplete Info' ,'PO – INVOICE HOLD', 'PENDING PO OVERRIDE' , 'CREDIT HOLD- INVOICE HOLD','CCCL Info Incomplete') and `HOLD_NAME` not like '%Discrepancy%' and `RETURNCODE` is not null then `Study Number` end) / count(distinct `Study Number`)
2 -
Thanks for a super speedy and workable solution!!!
0
Categories
- 10.6K All Categories
- 8 Connect
- 918 Connectors
- 250 Workbench
- 477 Transform
- 1.8K Magic ETL
- 69 SQL DataFlows
- 478 Datasets
- 218 Visualize
- 260 Beast Mode
- 2.1K Charting
- 12 Variables
- 19 Automate
- 356 APIs & Domo Developer
- 89 Apps
- 3 Workflows
- 20 Predict
- 5 Jupyter Workspaces
- 15 R & Python Tiles
- 249 Distribute
- 65 Domo Everywhere
- 243 Scheduled Reports
- 21 Manage
- 42 Governance & Security
- 191 Product Ideas
- 1.2K Ideas Exchange
- 11 Community Forums
- 27 Getting Started
- 14 Community Member Introductions
- 55 Community News
- 4.5K Archive