So I think my solution was probably inspired somewhat by my gantt chart module. I was trying to visualise the problem and realised I could actually turn the problem into a spatial one and then use Alteryx's spatial tools to solve it.
So here it is:
Imagine a rectangle for each task sitting on a time line (like a gantt chart but with all the tasks on one row).
If we make the length of the rectangles proportional to the length of the tasks, then we can say the area of the rectangles represents the time taken for that task.
Now imagine another rectangle on the same time line representing the entire reporting period. The area of this rectangle (in green below) represents the total time available.
Now if we cut the smaller task rectangles from the large reporting period rectangle, then the area remaining of the larger rectangle is the unused time.
With the spatial tools of Alteryx, cutting one set of polygons from another is easy. So that's what I did:
You can download the module here:
I think you'll agree a rather unique way of using the spatial capabilities of Alteryx in a way they were never designed for.
So where does that leave my Occam's razor? Well Ned has already sent me his solution and I have to say it doesn't involve any spatial tools and if I'd manage to think about the generate rows in the right way it would have been a quicker solution to implement than mine. My module does run more quickly (0.9 seconds against 2.0 seconds on my machine) but the report only gets run once a month in the middle of the night so speed isn't really a necessity...
You can download Ned's solution here:
I think this one is a simpler solution than mine and for somebody opening the module to make changes in the future somewhat less daunting. So, without the necessity of a fast runtime, by applying Occam's razor I think Ned's is the better solution.
However having said that I hope that my solution has been interesting and might inspire some future spatial solutions to non-spatial problems.
Post a Comment