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.9K Product Ideas
- 1.9K Ideas Exchange
- 1.6K Connect
- 1.3K Connectors
- 303 Workbench
- 6 Cloud Amplifier
- 9 Federated
- 3K Transform
- 105 SQL DataFlows
- 641 Datasets
- 2.2K Magic ETL
- 4K Visualize
- 2.5K Charting
- 771 Beast Mode
- 74 App Studio
- 43 Variables
- 719 Automate
- 185 Apps
- 463 APIs & Domo Developer
- 57 Workflows
- 14 DomoAI
- 40 Predict
- 17 Jupyter Workspaces
- 23 R & Python Tiles
- 402 Distribute
- 116 Domo Everywhere
- 277 Scheduled Reports
- 9 Software Integrations
- 135 Manage
- 132 Governance & Security
- 8 Domo Community Gallery
- 44 Product Releases
- 12 Domo University
- 5.4K Community Forums
- 40 Getting Started
- 30 Community Member Introductions
- 111 Community Announcements
- 4.8K Archive