[
https://issues.apache.org/jira/browse/FLINK-5584?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15831112#comment-15831112
]
ASF GitHub Bot commented on FLINK-5584:
---------------------------------------
Github user wuchong commented on the issue:
https://github.com/apache/flink/pull/3175
Hi @hongyuhong , thank your for your job. But it seems that you
misunderstand the SQL OVER syntax.
The OVER clause defines a window or user-specified set of rows within a
query result set. A window function then computes a value for each row in the
window. It is similar to Row-Window proposed in
[FLIP-11](https://cwiki.apache.org/confluence/display/FLINK/FLIP-11%3A+Table+API+Stream+Aggregations),
but is different with Sliding Row-count window.
For example, OVER (ROWS 2 PRECEDING) means that the window of rows that the
function operates on is three rows in size, starting with 2 rows preceding
until and including the current row.
Say we have a table `T1`
```
t a
-----
1 1
2 5
3 3
4 5
5 4
6 11
```
and the following SQL will yield:
```sql
SELECT t, a, sum(a) OVER (ROWS 2 PRECEDING) FROM T1
```
```
t a avg
----------
1 1 1
2 5 6
3 3 9
4 5 13
5 4 12
6 11 20
```
For Row-window, we would need something more complex, especially when we
need to order by timestamp. For example, to support event-time count-window
row-window, we need to create a custom operator that collects records in a
priority queue ordered by timestamp. Once a watermark is received for the upper
bound of a window, the priority queue is used to evaluate the window function
(based on count) and to purge too old records.
I would suggest this PR to wait for FLINK-4679. When FLINK-4679 is fixed,
this PR can be easily supported IMO.
> Support Sliding-count row-window on streaming sql
> -------------------------------------------------
>
> Key: FLINK-5584
> URL: https://issues.apache.org/jira/browse/FLINK-5584
> Project: Flink
> Issue Type: New Feature
> Components: Table API & SQL
> Reporter: Yuhong Hong
>
> Calcite has already support sliding-count row-window, the grammar look like:
> select sum(amount) over (rows 10 preceding) from Order;
> select sum(amount) over (partition by user rows 10 preceding) from Order;
> And it will parse the sql as a LogicalWindow relnode, the logical Window
> contains aggregate func info and window info, it's similar to Flink
> LogicalWIndowAggregate, so we can add an convert rule to directly convert
> LogicalWindow into DataStreamAggregate relnode, and if Calcite support more
> grammar, we can extend the convert rule.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)