感谢你的回复,不过我仍有个疑问,这里的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会不会造成性能问题? >
