[ 
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)

Reply via email to