首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FlinkSQL -选择最后一个

FlinkSQL -选择最后一个
EN

Stack Overflow用户
提问于 2020-05-26 00:39:18
回答 1查看 203关注 0票数 0

我想发出一个时间窗口的最后一条记录。这可以在常规的Flink中使用maxBy轻松完成,但我无法通过SQL API使其工作。我想要的是:

代码语言:javascript
复制
SELECT LAST(attribute) FROM [table]
  GROUP BY key, TUMBLE(ts, INTERVAL '1' DAY)

它的行为类似于

代码语言:javascript
复制
ds.keyBy(key)
  .window(TumblingEventTimeWindows.of(Time.days(1)))
  .maxBy(x -> x.getTs())

有没有办法在SQL API中实现这一点?

EN

回答 1

Stack Overflow用户

发布于 2020-05-27 04:31:06

我认为在Flink中还没有内置的函数,但是你可以为它实现一个用户定义的聚合函数。

您需要稍微调整一下查询,并在聚合函数中传递时间戳字段,因为SQL不假定GROUP BY组中的行的顺序:

代码语言:javascript
复制
SELECT last_by(attribute, ts) FROM [table]
  GROUP BY key, TUMBLE(ts, INTERVAL '1' DAY)

有关how to implementregister (一个用户定义的聚合函数)的详细信息,请参阅文档。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62006841

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档