开发者社区> 问答> 正文

使用Flink Table API & SQL编写流应用,SQL中的NOW()等时间函数如何理解?

请问,当流应用运行起来后,随着时间的推移,比如,到第二天了,SQL中的NOW()会随着处理时间不断更新,从而保证处理逻辑的正确性吗?在我的理解中,在流应用启动的那一刻,NOW()的值就确定了,以后也不会再改变了,那么,使用什么方式可以让SQL中的时间比较逻辑与时俱进呢?非常感谢。*来自志愿者整理的flink

展开
收起
毛毛虫雨 2021-12-06 15:25:14 877 0
1 条回答
写回答
取消 提交回答
  • 根据文档[1]描述,now 函数是非确定性的,意思是不会在 RelNode 优化阶段将其 常量折叠优化掉,所以这个函数是会不断更新的,并不是启动的时间,并且一直不变。 在自定义 UDF 时候,可以覆盖方法 default boolean isDeterministic 来决定是确定性的还是非确定性的,默认是true。

    [1]https://ci.apache.org/projects/flink/flink-docs-release-1.11/dev/table/functions/systemFunctions.html#temporal-functions*来自志愿者整理的flink

    2021-12-06 15:59:55
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Flink CDC Meetup PPT - 龚中强 立即下载
Flink CDC Meetup PPT - 王赫 立即下载
Flink CDC Meetup PPT - 覃立辉 立即下载