Hi,
窗口输出可以加emit策略,在watermark未触发时提前输出window的中间结果,不过社区目前标注的是experimental的功能,生产环境中应谨慎使用。
table.exec.emit.early-fire.enabled
table.exec.emit.early-fire.delay
可以参考[1]。

https://github.com/apache/flink/blob/master/flink-table/flink-table-planner-blink/src/main/scala/org/apache/flink/table/planner/plan/utils/WindowEmitStrategy.scala#L174
 
<https://github.com/apache/flink/blob/master/flink-table/flink-table-planner-blink/src/main/scala/org/apache/flink/table/planner/plan/utils/WindowEmitStrategy.scala#L174>


Best
Leonard Xu

> 在 2020年6月3日,08:22,smq <[email protected]> 写道:
> 
> 我觉得既然你想要事实输出数据,那就没必要用窗口,用了时间窗口,那就是按照窗口大小来统计了,不能同时两个都实现吧,把这两种场景分开分别实现,或者你要想得到每分钟的聚合结果,就缩小窗口大小。
> 
> 
> ---原始邮件---
> 发件人: &quot;steven chen&quot;<[email protected]&gt;
> 发送时间: 2020年6月3日(周三) 凌晨2:49
> 收件人: &quot;[email protected]&quot;<[email protected]&gt;;
> 主题: flink sql 窗口场景的问题
> 
> 
> hi :
> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 我现在遇到有这样一个场景,我们需要实时去统计5分和30分的粒度,flink sql 
> 窗口使用了处理时间滚动窗口方式
> 但是都是只有5分结束的时候才能把聚合结果输出,这个不满足我们需求,有没有方式可以直接实时输出结果,比如18:02 的统计+1+1 
> 都能直接落在18:00-18:05的窗口上,并每次+1都能实时输出,而不是等到窗口结束才sink 到mysql .30分钟同5分种,这种flink sql 
> 如何实现。
> 
> 比如数据
> {ts: 2019-12-10 16:24:00 id: 1}
> {ts: 2019-12-10 16:22:00 id: 1}
> {ts: 2019-12-10 16:23:00 id: 2}
> {ts: 2019-12-10 16:21:00 id: 1}
> {ts: 2019-12-10 16:29:00 id: 2}
> {ts: 2019-12-10 16:27:00 id: 3}
> {ts: 2019-12-10 16:26:00 id: 2}
> 
> 
> 
> 
> 
> 
> 
> &nbsp;

回复