[ https://issues.apache.org/jira/browse/FLINK-5386?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15826006#comment-15826006 ]
Fabian Hueske commented on FLINK-5386: -------------------------------------- Yes, that's what I would propose. {{GroupedTable}} has an optional window attribute (optional because you can also say {{tab.groupBy().select()}} which results in a grouped non-windowed aggregation). When we later add row windows (SQL OVER-style) to the Table API, we add a {{select()}} method to {{WindowedTable}}. I think there is one open question. How do we handle the case if {{WindowedTable.groupBy()}} does not reference a window alias. I see three options: 1. Fail and ask for a window alias 2. Accept and use the window defined in the {{WindowTable}} (this makes the window alias optional) 3. Accept and compute a non-windowed grouped aggregate I think failing might be the best approach (together with enforcing window aliases in {{window()}}). This would be the most explicit approach. The other two cases might result in behavior which is unexpected by users. What do you think [~sunjincheng121] and [~wshaox...@gmail.com]? > Refactoring Window Clause > ------------------------- > > Key: FLINK-5386 > URL: https://issues.apache.org/jira/browse/FLINK-5386 > Project: Flink > Issue Type: Sub-task > Components: Table API & SQL > Reporter: sunjincheng > Assignee: sunjincheng > > Similar to the SQL, window clause is defined "as" a symbol which is > explicitly used in groupby/over. We are proposing to refactor the way to > write groupby+window tableAPI as follows: > {code} > val windowedTable = table > .window(Slide over 10.milli every 5.milli as 'w1) > .window(Tumble over 5.milli as 'w2) > .groupBy('w1, 'key) > .select('string, 'int.count as 'count, 'w1.start) > .groupBy( 'w2, 'key) > .select('string, 'count.sum as sum2) > .window(Tumble over 5.milli as 'w3) > .groupBy( 'w3) // windowAll > .select('sum2, 'w3.start, 'w3.end) > {code} > In this way, we can remove both GroupWindowedTable and the window() method in > GroupedTable which makes the API a bit clean. In addition, for row-window, we > anyway need to define window clause as a symbol. This change will make the > API of window and row-window consistent, example for row-window: > {code} > .window(RowXXXWindow as ‘x, RowYYYWindow as ‘y) > .select(‘a, ‘b.count over ‘x as ‘xcnt, ‘c.count over ‘y as ‘ycnt, ‘x.start, > ‘x.end) > {code} > What do you think? [~fhueske] [~twalthr] -- This message was sent by Atlassian JIRA (v6.3.4#6332)