{"action":"opened","issue":{"url":"https://api.github.com/repos/esnet/pond/issues/7","labels_url":"https://api.github.com/repos/esnet/pond/issues/7/labels{/name}","comments_url":"https://api.github.com/repos/esnet/pond/issues/7/comments","events_url":"https://api.github.com/repos/esnet/pond/issues/7/events","html_url":"https://github.com/esnet/pond/issues/7","id":120408584,"number":7,"title":"Support groupings in processing code","user":{"login":"pjm17971","id":1288813,"avatar_url":"https://avatars.githubusercontent.com/u/1288813?v=3","gravatar_id":"","url":"https://api.github.com/users/pjm17971","html_url":"https://github.com/pjm17971","followers_url":"https://api.github.com/users/pjm17971/followers","following_url":"https://api.github.com/users/pjm17971/following{/other_user}","gists_url":"https://api.github.com/users/pjm17971/gists{/gist_id}","starred_url":"https://api.github.com/users/pjm17971/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pjm17971/subscriptions","organizations_url":"https://api.github.com/users/pjm17971/orgs","repos_url":"https://api.github.com/users/pjm17971/repos","events_url":"https://api.github.com/users/pjm17971/events{/privacy}","received_events_url":"https://api.github.com/users/pjm17971/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/esnet/pond/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2015-12-04T14:08:11Z","updated_at":"2015-12-04T14:08:11Z","closed_at":null,"body":"The processing code currently supports aggregation, binning and collections. An event stream is passed between these and are processed irrespective of the event content/source. It's up to the code feeding the event stream to manage a larger collection of incoming events into separate aggregators etc.\r\n\r\nA solution to this is to implement a Grouper. The grouper would take a stream of events and classify them based on column name, a list of column names, or a function. Classification would be a string, essentially a key, that would be stored on the event itself. (Since we're talking about immutable objects here, an incoming Event would result in a different Event with the key added (though the internal data reference would be shared)). At any rate that Event could then be fed into an Aggregator and be bucketed with Events that had the same key, and so on down the processing pipeline."}}