[
https://issues.apache.org/jira/browse/FLINK-5386?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15826006#comment-15826006
]
Fabian Hueske commented on FLINK-5386:
--------------------------------------
Yes, that's what I would propose.
{{GroupedTable}} has an optional window attribute (optional because you can
also say {{tab.groupBy().select()}} which results in a grouped non-windowed
aggregation).
When we later add row windows (SQL OVER-style) to the Table API, we add a
{{select()}} method to {{WindowedTable}}.
I think there is one open question. How do we handle the case if
{{WindowedTable.groupBy()}} does not reference a window alias.
I see three options:
1. Fail and ask for a window alias
2. Accept and use the window defined in the {{WindowTable}} (this makes the
window alias optional)
3. Accept and compute a non-windowed grouped aggregate
I think failing might be the best approach (together with enforcing window
aliases in {{window()}}).
This would be the most explicit approach. The other two cases might result in
behavior which is unexpected by users.
What do you think [~sunjincheng121] and [[email protected]]?
> 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)