Hi Julian,

Even though this is a general question across all the streaming aggregates
which utilize GROUP BY clause and a monotonic timestamp field for
specifying the window, but I am going to stick to most basic example (which
is from Calcite Streaming document).

SELECT STREAM FLOOR(rowtime TO HOUR) AS rowtime,
  productId,
  COUNT(*) AS c,
  SUM(units) AS units
FROM Orders
GROUP BY FLOOR(rowtime TO HOUR), productId;

I was trying to implement an aggregate operator which handles tumbling
windows via the monotonic field in GROUP By clause in addition to the
general aggregations. I went in this path because I thought integrating
windowing aspects (at least for tumbling and hopping) into aggregate
operator will be easier than trying to extract the window spec from the
query plan for a query like above. But I hit a wall when trying to figure
out trigger condition for emitting aggregate results. I was initially
planning to detect new values for FLOOR(rowtime TO HOUR) and emit current
aggregate results for previous groups (I was thinking to keep old groups
around until we clean them up after a timeout). But when trying to
implement this I figured out that I don’t know how to check which GROUP BY
field is monotonic so that I only detect new values for the monotonic
field/fields, not for the all the other fields. I think this is not a
problem for tables because we have the whole input before computation and
we wait till we are done with the input before emitting the results.

With regards to above can you please clarify following things:

- Is the method I described above for handling streaming aggregates make
sense at all?
- Is there a way that I can figure out which fields/expressions in
LogicalAggregate are monotonic?
- Or can we write a rule to annotate or add extra metadata to
LogicalAggregate so that we can get monotonic fields in the GROUP By clause

Thanks in advance
Milinda


-- 
Milinda Pathirage

PhD Student | Research Assistant
School of Informatics and Computing | Data to Insight Center
Indiana University

twitter: milindalakmal
skype: milinda.pathirage
blog: http://milinda.pathirage.org

Reply via email to