hi yihan,
如 Leonard 所说,你可以考虑使用 first_value, last_value 等聚合函数和赛选其他字段。
1.11开始支持ddl定义pk信息, 如果id在source表中也是pk字段,可以直接定义,
planner会利用该信息传递pk到sink表。

Bests,
Godfrey

Leonard Xu <xbjt...@gmail.com> 于2020年6月4日周四 下午9:01写道:

> Hi,
>
> > 但这样子不能通过calcite的sqlvalidation,select后面不能有非聚合项,
>
> select后费聚合值可以通过max()或sum()来取,因为已经按照key group by了,所以取出来的非聚合值只能有一条,
>
> > 这样子key的state无限增长(比如说amount是一个随机的double数),job跑不久就会fail掉。
>
> State 可以配置ttl的,过期清理参考[1]
>
> 另外,即将发布的1.11中,支持在jdbc table 上定义primary key, 不用强制要求写upsert 的query,文档正在撰写中[2]
>
> Best,
> Leonard Xu
>
>
> [1]
> https://ci.apache.org/projects/flink/flink-docs-stable/dev/table/streaming/query_configuration.html#idle-state-retention-time
> <
> https://ci.apache.org/projects/flink/flink-docs-stable/dev/table/streaming/query_configuration.html#idle-state-retention-time
> >
> [2] https://issues.apache.org/jira/browse/FLINK-17829 <
> https://issues.apache.org/jira/browse/FLINK-17829>
>

回复