flinkSql的时间窗口,可以将一段时间内的数据进行聚合计算. 但是有时, 我们希望可以在时间窗口截止前, 就可以看到结果. 一种方案是: 使用嵌套的时间窗口, 另一种方案是, 在代码进行配置.
我们这里说下如何在代码里进行配置
比如, 时间窗口为 12小时-12小时 (24小时为一个窗口), 但是希望每5分钟就需要输出一次结果.
配置如下:
Configuration conf = new Configuration();
conf.setString( "table.exec.emit.early-fire.enabled","true");
conf.setString( "table.exec.emit.early-fire.delay",1000*60*5 + " ms");
TableEnvironment.getConfig().getConfiguration().addAll(conf)
如上的配置, 就可以在每5分钟输出一次结果了.
如果不管本次最新结果是否较上次发生变化都下发,则可设置【table.exec.emit.unchanged.enabled = true】