[ 
https://issues.apache.org/jira/browse/FLINK-5386?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

sunjincheng updated FLINK-5386:
-------------------------------
    Description: 
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]

  was:
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)
 .groupBy('w1, 'key)
 .select('string, 'int.count as 'count, 'w1.start)
 .window(Tumble over 5.milli  as 'w2)
 .groupBy( 'w2, 'key2)
 .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]


> 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