You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@flink.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2017/01/09 18:46:58 UTC
[jira] [Commented] (FLINK-5386) Refactoring Window Clause
[ https://issues.apache.org/jira/browse/FLINK-5386?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15812507#comment-15812507 ]
ASF GitHub Bot commented on FLINK-5386:
---------------------------------------
Github user shaoxuan-wang commented on a diff in the pull request:
https://github.com/apache/flink/pull/3046#discussion_r95219196
--- Diff: flink-libraries/flink-table/src/main/scala/org/apache/flink/table/api/table.scala ---
@@ -785,13 +793,19 @@ class Table(
* will be processed by a single operator.
*
* @param groupWindow group-window that specifies how elements are grouped.
- * @return A windowed table.
*/
- def window(groupWindow: GroupWindow): GroupWindowedTable = {
+ def window(groupWindow: GroupWindow): Table = {
if (tableEnv.isInstanceOf[BatchTableEnvironment]) {
throw new ValidationException(s"Windows on batch tables are currently not supported.")
}
- new GroupWindowedTable(this, Seq(), groupWindow)
+ if (None == groupWindow.name) {
+ throw new ValidationException("An alias must be specified for the window.")
+ }
+ if (windowPool.contains(groupWindow.name.get)) {
+ throw new ValidationException("The window alias can not be duplicated.")
--- End diff --
s/"The window alias can not be duplicated."/"The same window alias has been defined"/
> 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:
> 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]
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)