Re: flink sql upsert模式写入mysql,es等key一定是groupby之后所有字段吗

2020-06-04 文章 x2009438
感谢各位, 我先试试用Last_value这样的aggregate function绕过去。 @kcz 可能我表达不很清楚,具体描述一下遇到的具体场景就是:收到原始的数据,去mysql或者es里做维表关联,然后再以upsert的模式将结果写回mysql或es。 举个例子来说,我想按id为key更新整行数据(比如还有个字段amount是个随机的double类型值) select id, amount, …… groupby id; 这样子不行,必须 select id, amount, … groupby id,amount,……;

Re: flink sql upsert模式写入mysql,es等key一定是groupby之后所有字段吗

2020-06-04 文章 godfrey he
hi yihan, 如 Leonard 所说,你可以考虑使用 first_value, last_value 等聚合函数和赛选其他字段。 1.11开始支持ddl定义pk信息, 如果id在source表中也是pk字段,可以直接定义, planner会利用该信息传递pk到sink表。 Bests, Godfrey Leonard Xu 于2020年6月4日周四 下午9:01写道: > Hi, > > > 但这样子不能通过calcite的sqlvalidation,select后面不能有非聚合项, > > select后费聚合值可以通过max()或sum()来取,因为已经按照key

Re: flink sql upsert模式写入mysql,es等key一定是groupby之后所有字段吗

2020-06-04 文章 Leonard Xu
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