Hi,
我感觉这种场景可以有两种方式,
1. 可以直接用group by + mini batch
2. window聚合 + fast emit

对于#1,group by的字段里面可以有一个日期的字段,例如你上面提到的DATE_FORMAT(rowtm, 'yyyy-MM-dd')。
这种情况下的状态清理,需要配置state retention时间,配置方法可以参考[1] 。同时,mini batch的开启也需要
用参数[2] 来打开。

对于#2,这种直接开一个天级别的tumble窗口就行。然后状态清理不用特殊配置,默认就可以清理。
fast emit这个配置现在还是一个experimental的feature,所以没有在文档中列出来,我把配置贴到这里,你可以参考一下:
table.exec.emit.early-fire.enabled = true
table.exec.emit.early-fire.delay = 60 s

[1]
https://ci.apache.org/projects/flink/flink-docs-release-1.10/dev/table/streaming/query_configuration.html
[2]
https://ci.apache.org/projects/flink/flink-docs-release-1.10/dev/table/config.html

x <[email protected]> 于2020年6月17日周三 上午11:14写道:

> 需求是,每分钟统计当日0时到当前的累计UV数,用下面的这种方式,跨天的时候,累计UV不会清零,还会一直累计
> CREATE VIEW uv_per_10min AS
> SELECT&nbsp;
> &nbsp; MAX(DATE_FORMAT(proctime&nbsp;, 'yyyy-MM-dd HH:mm:00'))&nbsp;OVER w
> AS time_str,&nbsp;
> &nbsp; COUNT(DISTINCT user_id) OVER w AS uv
> FROM user_behavior
> WINDOW w AS (ORDER BY proctime ROWS BETWEEN UNBOUNDED PRECEDING AND
> CURRENT ROW);
>
>
> 想请教一下,应该如何处理?
> PARTITION BY DATE_FORMAT(rowtm, 'yyyy-MM-dd') 这样可以吗,另外状态应该如何清理?
> PS:1.10貌似不支持DDL貌似不支持CREATE VIEW吧
> 多谢

回复