[ https://issues.apache.org/jira/browse/FLINK-5386?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15825660#comment-15825660 ]
Fabian Hueske commented on FLINK-5386: -------------------------------------- Hi [~sunjincheng121], thanks for the reply. My concerns are about your first example, i.e. "#1 windows are defined at the start and used later". Here you could do something like {code} val windowedTable = table // table: (a, b, c) .window(Slide over 10.milli every 5.milli on 'a as 'w1) .window(Tumble over 5.milli on 'b as 'w2) .groupBy('w1, 'c) .select('c, 'b.count as 'bcnt, 'b.sum as 'bsum, 'w1.start) .groupBy( 'w2, 'bcnt) .select('bcnt, 'bsum.avg as 'bsumavg) {code} Here, the second window {{'w2}} is defined on attribute {{b}}. However, later when window {{'w2}} is used, the input table does no longer have the attribute {{b}}. I am much more in favor of variant "#2 windows are defined with groupBy", which ties {{window()}} and {{groupBy()}} together. Actually, I think this is a very nice syntax. I am also not convinced that removing the internal table classes such as {{GroupedTable}} and {{GroupWindowedTable}} improves the code structure. Instead of having multiple well scoped implementations of {{select}} (each with its appropriate documentation) we would have one {{select()}} method with many case distinctions (simple select, non-grouped aggregate, grouped aggregate, group-windowed aggregate). > 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)