[ https://issues.apache.org/jira/browse/FLINK-5386?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15829998#comment-15829998 ]
ASF GitHub Bot commented on FLINK-5386: --------------------------------------- Github user fhueske commented on a diff in the pull request: https://github.com/apache/flink/pull/3046#discussion_r96860112 --- Diff: flink-libraries/flink-table/src/main/scala/org/apache/flink/table/api/table.scala --- @@ -930,3 +921,46 @@ class GroupWindowedTable( } } + + +class WindowedTable( + private[flink] val table: Table, + private[flink] val window: Window) { + + /** + * Groups the elements on some keys (window alias or group keys). It should be noted that one + * window alias MUST be included in the key list. Use this function before a selection with + * aggregations to perform the aggregation on a per-group basis. Similar to a SQL GROUP BY + * statement. + * + * Example: + * + * {{{ + * tab.groupBy('windowAlias, 'key).select('key, 'value.avg) + * }}} + */ + def groupBy(fields: Expression*): WindowGroupedTable = { + if (fields.filter(window.alias.get.equals(_)).length != 1) { + throw new ValidationException("Group by must contain only one window column.") --- End diff -- "GroupBy must contain exactly one window alias.". > 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} > tab //Table('a,'b,'c) > .window( Slide over 10.milli every 5.milli as 'w1as 'w1) // WindowedTable > .groupBy('w1,'a,'b) // WindowGroupedTable > .select('a,'b,c.count as 'mycount) // Table > .window(Tumble over 5.milli on 'b as 'w2) > .groupBy('w2) > .select('a.count, 'w2.start, 'w2.end) > {code} > In this way, 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) // WindowedTable > .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)