FlinkSQL even time 定义问题

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

FlinkSQL even time 定义问题

Zhao,Yi(SEC)
咨询下,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中呢。
Reply | Threaded
Open this post in threaded view
|

Re: FlinkSQL even time 定义问题

Shengkai Fang
对于第一个问题- 在查询语句之中定义watermark:
现在并不支持。这主要是由于在同一个作业之中,如果select的数据源是同一个表,那么在实际的优化过程之中,会将source进行复用,而现在同一个source并不支持多个watermark
assigner。如果在不同的作业之中,那么显然只要修改watermark的定义语句即可。
对于第二个问题:rowtime的定义是必须建立在创建表的过程之中的。
对于第三个问题:社区正在讨论这个问题。现在仅支持多个insert的sql在同一个job之中。


Zhao,Yi(SEC) <[hidden email]> 于2020年8月12日周三 下午5:36写道:

> 咨询下,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中呢。
>