Hello,
There has been some effort some time ago to implement the functionality what you want (not just for windows) to apply multiple aggregations at once, and at some point it will be in there (unfortunately its not high on the priority list at the moment).
There are different ways of achieving this:
1. Just take your windowed data stream and apply all your transformations on it. If you are using some standard policy like count or time, or any tumbling eviction policy, this should in fact be very efficient. In case of these policies data will not be replicated over the network as we reuse the discretizers and we also do local prereduces.
2. The most efficient way of doing this would be of course to write a simple reduce function that does the intended behaviour. For the basic aggregation types, this is a trivial task.
3. You could of course project the datastream to different fields and apply windowing and transformations on them, but this has a large runtime overhead of having to replicate window discretization operators. I would only do this if you have some user defined trigger and eviction policy.
I hope this helped.
Cheers,
Gyula