Hi, 我觉得可以有基于watermark的状态清理这种机制。
但是 SQL的语义不太好描述这种机制,所以业务上能不能算出一个day来加上?比如group by的字段加上这个day,这样可以隔天后数据独立? Best, Jingsong Lee On Wed, Jun 10, 2020 at 3:12 PM star <3149768...@qq.com> wrote: > 感谢您的建议,实时和离线的sink的目标表是一样的。 > 举个场景: > 比如计算用户购买商品的种类数量(select count(distinct product) from > order),这种计算需要基于历史数据,就是要把用户的历史订单都拿到实时来计算。 > 用户量有2亿,每天日活只有不到100w,为了节省计算资源只计算当天有过购买行为的用户,所以到了凌晨把状态清0,从新计算今天的用户。 > > > > > > > > > ------------------ 原始邮件 ------------------ > 发件人: "Yichao Yang"<1048262...@qq.com>; > 发送时间: 2020年6月10日(星期三) 下午2:45 > 收件人: "user-zh"<user-zh@flink.apache.org>; > > 主题: 回复:TTL 支不支持自然日 > > > > Hi > > > 根据你的场景来看,你们是每天0点之后会用离线任务再去覆盖实时的数据,所以我理解等批结束之后,你们的实时任务会从0点开始重新消费数据? > > 你的担心是说0点过后状态没有清理,那么我理解你用到的状态是自定义的状态并且和时间属性有关,那么其实可以做的一个操作就是你可以判断当前数据的时间戳和状态中存储数据的时间戳,如果不是同一天那么把状态清空即可,这样就做到了自定义状态每天0点自动清除。 > > > > 我不知道你们的场景以及技术选型,所以我不太明白你们为什么会为了让离线任务覆盖实时计算结果而去把实时任务停止,因为我的理解是离线和实时不冲突,应该是互补的,并且他们的sink应该不同? > > > Best, > Yichao Yang > > > > > ------------------&nbsp;原始邮件&nbsp;------------------ > 发件人:&nbsp;"star"<3149768...@qq.com&gt;; > 发送时间:&nbsp;2020年6月10日(星期三) 下午2:34 > 收件人:&nbsp;"user-zh@flink.apache.org"<user-zh@flink.apache.org&gt;; > > 主题:&nbsp;TTL 支不支持自然日 > > > > 您好, > 可以不可以按照自然日来清理状态,我们的离线任务每天零点后会跑批覆盖实时计算的结果,实时任务每天凌晨也会停止,等跑批结束后再启动。有没有根据具体时间来清理状态的功能,比如每天到0:00自动清理昨天到状态,我就不用每天重启作业了。 -- Best, Jingsong Lee