开发者社区> 问答> 正文

FlinkSQl的event time必须在DDL中定义吗。能否DDL只是定义普通数据字段?

咨询下,FlinkSQl的event time必须在DDL中定义吗。能否DDL只是定义普通数据字段,比如有个time属性。 然后在select 的时候指定具体使用的watermark策略。 目的:假设基于同一个表A,我查询1需要使用watermark为time-1min,查询2需要使用watermark为time-2min。

其次除了这种case,如果我基于表1查询得到结果输出到表2,那么表2的event time定义呢?比如在表2的定义中基于表2的某个属性(比如叫time2),然后插入表2的时候只要time2属性存在就可以?

此外,如果对比datastream api的watermark传播机制,如果我希望查询1结构输出到表2,然后继续基于表2查询。貌似就需要 select xxx from (select yyy from t); 这种嵌套写法,一句sql会变成一个任务。 那如何用sql做非常复杂的任务组合呢,比如我是2句不搭嘎的sql的,就希望在同一个job中呢。*来自志愿者整理的flink邮件归档

展开
收起
EXCEED 2021-12-08 11:05:26 769 0
1 条回答
写回答
取消 提交回答
  • 对于第一个问题- 在查询语句之中定义watermark: 现在并不支持。这主要是由于在同一个作业之中,如果select的数据源是同一个表,那么在实际的优化过程之中,会将source进行复用,而现在同一个source并不支持多个watermark assigner。如果在不同的作业之中,那么显然只要修改watermark的定义语句即可。 对于第二个问题:rowtime的定义是必须建立在创建表的过程之中的。 对于第三个问题:社区正在讨论这个问题。现在仅支持多个insert的sql在同一个job之中。 *来自志愿者整理的flink

    2021-12-08 11:24:01
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
俞航翔|基于Log的通用增量Checkpoint 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载