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