"Being able to take all the data in the stream and merge it with previously collected data, then query that merged data is the sort of thing I need to be able to do."
Sorry for the shameless plug, but Striim does that with a SQL-like interface. Joining streams and previously collected, cached data is as easy as writing a join.
You can try it out here: http://www.striim.com