You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "Fabian Hueske (JIRA)" <ji...@apache.org> on 2017/01/10 10:50:58 UTC

[jira] [Updated] (FLINK-5386) Refactoring Window Clause

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

Fabian Hueske 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}
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]

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

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:
  .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)

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