How to count occurrences across multiple columns
I want to count the number of times a value occurs in two different columns
my dataset is set up in a way that an order will always have two IDs in the same row. The IDs can repeat in the same column or be in another column, but they will never be in the same row.
In the example below, the number of occurrences for "1" should be 3.
Is this possible to accomplish using Beastmode?
Best Answer
-
Personally, I would use MagicETL to unpivot the data to be this structure:
Order | ID # | ID
111 | ID 1 | 1
111 | ID 2 | 7
112 | ID 1 | 2
112 | ID 2 | 6
That would make counting the IDs trivial in the card, and you can pivot by ID # to get the same table.
If you can't use MagicETL, then depending on the structure of your IDs, I think you could concat your two ID columns and check if ID1 is contained within that concatenated column.
sum(
case
when concat(ID1, '-', ID2) like concat('%', ID1, '%') then 1 else 0
end
)
But the danger of this approach is if you have IDs that are contained within other IDs. (Like if you have both an ID of 1 and ID of 11). If that's the case, you'd want to do something like padding your IDs with zeros to prevent this before concatenating them.
Please 💡/💖/👍/😊 this post if you read it and found it helpful.
Please accept the answer if it solved your problem.
0
Answers
-
SUM(
CASE WHEN ID1 = 1 THEN 1 ELSE 0 END +
CASE WHEN ID2 = 1 THEN 1 ELSE 0 END
)** Was this post helpful? Click Agree or Like below. **
** Did this solve your problem? Accept it as a solution! **0 -
I can see how that would work if I only had a few IDs, but if I was working with a few thousand IDs is there a way to do this that runs all the IDs without having to do the above for each one?
0 -
Personally, I would use MagicETL to unpivot the data to be this structure:
Order | ID # | ID
111 | ID 1 | 1
111 | ID 2 | 7
112 | ID 1 | 2
112 | ID 2 | 6
That would make counting the IDs trivial in the card, and you can pivot by ID # to get the same table.
If you can't use MagicETL, then depending on the structure of your IDs, I think you could concat your two ID columns and check if ID1 is contained within that concatenated column.
sum(
case
when concat(ID1, '-', ID2) like concat('%', ID1, '%') then 1 else 0
end
)
But the danger of this approach is if you have IDs that are contained within other IDs. (Like if you have both an ID of 1 and ID of 11). If that's the case, you'd want to do something like padding your IDs with zeros to prevent this before concatenating them.
Please 💡/💖/👍/😊 this post if you read it and found it helpful.
Please accept the answer if it solved your problem.
0
Categories
- All Categories
- 1.8K Product Ideas
- 1.8K Ideas Exchange
- 1.6K Connect
- 1.2K Connectors
- 300 Workbench
- 6 Cloud Amplifier
- 9 Federated
- 2.9K Transform
- 102 SQL DataFlows
- 626 Datasets
- 2.2K Magic ETL
- 3.9K Visualize
- 2.5K Charting
- 754 Beast Mode
- 61 App Studio
- 41 Variables
- 693 Automate
- 178 Apps
- 456 APIs & Domo Developer
- 49 Workflows
- 10 DomoAI
- 38 Predict
- 16 Jupyter Workspaces
- 22 R & Python Tiles
- 398 Distribute
- 115 Domo Everywhere
- 276 Scheduled Reports
- 7 Software Integrations
- 130 Manage
- 127 Governance & Security
- 8 Domo Community Gallery
- 38 Product Releases
- 11 Domo University
- 5.4K Community Forums
- 40 Getting Started
- 30 Community Member Introductions
- 110 Community Announcements
- 4.8K Archive