I had a similar use case and found that doing it in the script made sense for me for performance and flexibility reasons.
Performance - I was dealing with about 200 million records, so doing the calculations up front vs. doing calculations on the fly was the better route
Flexibility - Was able to use results in multiple objects in my dashboards without repeating expressions. Also was able to create buckets of days ex. 1-5 days, 6-10, etc. using Class() . So you can ask the question: How many orders are waiting 6-10 days to be processed.