感谢你的回复,不过我仍有个疑问,这里的ts是事件时间event time,如何能够按处理时间processing
time推移而不依赖后续输入消息来自动修改SUM值?
例如输入select查询后,这时进来了一条用户登录消息,后面就一直没有别的用户登录消息进来,这时看到的行为应该是统计登录人数为1,而过了30分钟后这个统计登录人数自动变为0.

Yuan,Youjun <[email protected]> 于2019年12月12日周四 上午9:28写道:

> 首先通过一个自定义表函数(table
> function),将每条输入的消息变成3条消息,假设输入消息的时间为ts,产出的三条消息时间分别为:(ts-1, 0), (ts+1, 1),
> (ts+31, 0),
> 然后再用30分钟的range over窗口对前面的数值部分(0或者1)求SUM
>
> 袁尤军
>
> -----邮件原件-----
> 发件人: 陈帅 <[email protected]>
> 发送时间: Wednesday, December 11, 2019 9:31 PM
> 收件人: [email protected]
> 主题: flink持续查询过去30分钟登录网站的人数
>
> 例如,用户在以下时间点登录:无, 12:02, 12:13, 12:15, 12:31, 12:40, 12:45, 无
>
> 那么我期望在以下时间点(实际查询可能在任意时间点)获取到的结果数为
> 12:01 (0),  12:03:(1),  12:14 (2),  12:16(3), 12:30 (4), 12:35 (4), 12:41
> (5), 12:46 (4), 13:16 (0)
>
> 即每个元素进来就会设一个30分钟过期时间,窗口状态是当前还未过期元素集合。
>
> 用flink stream api和flink sql分别要如何实现?如果用timerService的话过多元素ttl会不会造成性能问题?
>

回复